name ai-model description Gère les modèles IA de Motivia. Utilise ce skill quand l'utilisateur demande d'ajouter un nouveau modèle IA, modifier un provider, ou configurer les options de génération. Supporte OpenAI, Anthropic, Google, Mistral et xAI. allowed-tools Read, Write, Edit, Glob, Grep
Gestion des Modèles IA Motivia
Fichiers concernés
utils/ai-model.tsx # Registry des modèles et providers
prisma/schema.prisma # Enum ApiProvider
components/icons/ # Icônes des providers
app/api/create/route.ts # Endpoint de génération
Structure d'un modèle
export type AIModelOption = {
provider : ApiProvider ;
model : string ;
label : string ;
free : boolean ;
cost : number ;
};
Providers actuels
Provider Enum SDK OpenAI ApiProvider.OPENAI@ai-sdk/openaiAnthropic ApiProvider.ANTHROPIC@ai-sdk/anthropicGoogle ApiProvider.GOOGLE@ai-sdk/googleMistral ApiProvider.MISTRAL@ai-sdk/mistralxAI ApiProvider.XAI@ai-sdk/xai
Ajouter un nouveau modèle (provider existant)
1. Ajouter à la liste des modèles
export const OPENAI_MODELS = [
{
provider : ApiProvider .OPENAI ,
model : "gpt-5-ultra-2025-xx-xx" ,
label : "GPT 5 Ultra" ,
free : false ,
cost : 50 ,
},
];
2. Vérifier l'export dans modelOptions
export const modelOptions : AIModelOption [] = [
...OPENAI_MODELS ,
...ANTHROPIC_MODELS ,
...MISTRAL_MODELS ,
...XAI_MODELS ,
];
Ajouter un nouveau provider
1. Installer le SDK
pnpm add @ai-sdk/newprovider
2. Ajouter l'enum Prisma
// prisma/schema.prisma
enum ApiProvider {
OPENAI
ANTHROPIC
GOOGLE
MISTRAL
XAI
NEWPROVIDER // Ajouter ici
}
3. Exécuter la migration
pnpm prisma migrate dev --name add_newprovider
4. Créer l'icône du provider
export const NewProviderIcon = ({ className }: { className?: string } ) => (
<svg className ={className} viewBox ="0 0 24 24" >
{/* SVG path */}
</svg >
);
5. Ajouter au registry
import { createNewProvider } from "@ai-sdk/newprovider" ;
import { NewProviderIcon } from "@/components/icons" ;
{
label : "New Provider" ,
value : ApiProvider .NEWPROVIDER ,
image : <NewProviderIcon className ="size-6" /> ,
},
export const NEWPROVIDER_MODELS = [
{
provider : ApiProvider .NEWPROVIDER ,
model : "model-id" ,
label : "Model Name" ,
free : false ,
cost : 10 ,
},
];
export const modelOptions : AIModelOption [] = [
...OPENAI_MODELS ,
...ANTHROPIC_MODELS ,
...MISTRAL_MODELS ,
...XAI_MODELS ,
...NEWPROVIDER_MODELS ,
];
export const registry = ( ?: , ?: ) =>
({
: ({
:
provider === . && apiKey
? apiKey
: process. . ,
}),
});
6. Ajouter la variable d'environnement
NEWPROVIDER_API_KEY=sk-...
Règles métier
Modèles gratuits
Un modèle free: true utilise les 5 lettres gratuites de l'utilisateur
Si freeLetters === 0, l'utilisateur doit avoir sa propre clé API
Coût
Le champ cost est indicatif et sert à l'affichage. Valeurs suggérées:
Gamme Cost Exemple Économique 0-1 nano, small Standard 2-5 mini, medium Premium 10-15 sonnet, medium Ultra 20+ opus
Génération de lettre
Le flow dans app/api/create/route.ts:
Vérifier l'authentification
Valider le modèle demandé
Récupérer la clé API (user ou env)
Si free: décrémenter freeLetters
Streamer la génération via streamObject
Retourner { title, content }
Checklist nouveau modèle
ID du modèle correct (vérifier docs du provider)
Label clair et cohérent
free bien défini (true/false)
cost relatif défini
Ajouté à l'array modelOptions
Testé avec une clé API valide