Agents IA
Règles
- Définir les outils comme des fonctions typées avec descriptions — le modèle choisit quel outil appeler
- Schéma d'outil :
{ name, description, parameters: zodSchema, execute: async (args) => result }
- Boucle multi-étapes : envoyer des messages → le modèle renvoie un appel d'outil → exécuter l'outil → renvoyer le résultat → répéter jusqu'à terminaison
- Limite
maxSteps pour éviter les boucles infinies — valeur par défaut 5-10 étapes selon la complexité
- Sorties structurées avec Zod :
generateObject({ schema: z.object({...}) }) pour une forme garantie
- Logique de réessai : envelopper l'exécution de l'outil dans try/catch, réessayer les échecs transitoires 2-3 fois avec backoff exponentiel
- Orchestration d'agents : découper les tâches complexes en sous-agents avec des ensembles d'outils ciblés, un agent coordinateur délègue
- Toujours valider les résultats des outils avant de les renvoyer au modèle — assainir les données non fiables
- Utiliser
streamText avec onToolCall pour une visibilité en temps réel sur le raisonnement de l'agent
Modèles
const tools = {
searchDatabase: tool({
description: "Rechercher dans la base de produits",
parameters: z.object({ query: z.string(), limit: z.number().default(10) }),
execute: async ({ query, limit }) => db.products.search(query, limit),
}),
};
const result = await generateText({
model,
tools,
maxSteps: 10,
messages,
});
À éviter
- Donner aux agents un accès illimité aux outils — limiter les outils à la tâche
- Oublier
maxSteps — les agents peuvent boucler indéfiniment
- Faire confiance aux sorties des outils sans validation — toujours vérifier avant d'agir sur les résultats
- Agents monolithiques — préférer des sous-agents ciblés plutôt qu'un agent avec 20 outils ou plus