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

Exemple
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

Exemple
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ée

Pourquoi : Le modèle pourrait appeler n'importe quelle fonction du programme.

Faire confiance aux arguments

À éviter

soldes[pseudo] += montant;

À faire

Number.isInteger(montant) && montant <= 50

Pourquoi : 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.all s'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.