AI Coding · 5 mondes · 15 étapes
Agents & outils
Messages, outils, boucle d'agent, RAG et garde-fous, écrits de ses mains.
Progression
0 %
0/15 étapes terminées
Intermédiaire · 9 min de lecture
Les appels d'outils
Le modèle demande, le programme exécute
1Définition
Un outil est une fonction de l'application décrite au modèle par un nom, une description et des paramètres. Le modèle peut répondre par une demande d'appel ; le programme exécute l'outil, puis renvoie le résultat dans un message dédié. Le modèle n'exécute jamais rien lui-même.
2Principes fondamentaux
01
Une table d'outils
Le modèle ne peut appeler que ce que la table contient : c'est la première limite.
02
La description guide le modèle
Elle dit quand utiliser l'outil. Floue, elle provoque des appels à contretemps.
03
Valider les arguments
Types, limites, existence : un appel d'outil est une entrée extérieure.
04
Les erreurs sont des informations
Un outil qui échoue renvoie { erreur } au modèle, qui peut se corriger.
3Exemples pratiques
Décrire un outil pour une API réelle
1const outils = [{2 name: "score",3 description: "Renvoie le score d'un joueur de Sys-Code à partir de son pseudo.",4 input_schema: {5 type: "object",6 properties: { pseudo: { type: "string" } },7 required: ["pseudo"],8 },9}];Le schéma décrit la forme des arguments ; la validation dans le code reste obligatoire.
Exécuter sans jamais planter
1const outil = OUTILS[appel.nom];2if (!outil) return { erreur: "Outil inconnu : " + appel.nom };3try {4 return await outil(appel.arguments);5} catch (e) {6 return { erreur: e.message };7}Outil inconnu, exception : dans les deux cas, le modèle reçoit une explication au lieu d'une panne.
4Erreurs courantes
Exécuter n'importe quel nom
À éviter
await globalThis[appel.nom](…)À faire
OUTILS[appel.nom], une table ferméePourquoi : Le modèle pourrait appeler n'importe quelle fonction du programme.
Faire confiance aux arguments
À éviter
soldes[pseudo] += montant;À faire
Number.isInteger(montant) && montant <= 50Pourquoi : Un « 20 » en texte se concatène ; un million se distribue.
Laisser une exception remonter
À éviter
const r = await outil(args);À faire
try { … } catch (e) { return { erreur: e.message }; }Pourquoi : Une panne d'outil ne doit pas faire tomber la conversation.
5Subtilités à connaître
- ◆Un modèle peut demander plusieurs outils à la fois : on peut les exécuter en parallèle avec
Promise.alls'ils sont indépendants. - ◆Le résultat d'un outil repasse par le modèle : un résultat énorme consomme la fenêtre de contexte. On renvoie l'essentiel.
- ◆Le protocole MCP standardise la description et l'appel d'outils entre applications et modèles.
6Vérifie ta compréhension
Question 1/3
Score 0
Qui exécute un outil ?
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.