Appel d'outils (function calling)
Le modèle n'exécute rien lui-même : il demande l'appel d'un outil décrit par un schéma JSON, votre code l'exécute et lui renvoie le résultat. C'est le mécanisme de base de tout agent.
- function calling
- tool use
- appel d'outils
- outil
- json schema
- agent
- boucle
Syntaxe
1. Déclarer les outils : nom + description + paramètres (JSON Schema)2. Le modèle répond soit par du texte, soit par une demande d'appel : {nom, arguments}3. Votre code valide les arguments, exécute l'outil et renvoie le résultat au modèle4. Le modèle poursuit (nouvel appel ou réponse finale), dans une limite de tours fixéeExemple
Outil déclaré : suivi_colis(numero: string) description : « Donne le statut d'un colis à partir de son numéro de suivi. »Client : « Où en est mon colis 7Q482 ? »Modèle → demande d'appel : suivi_colis({"numero": "7Q482"})Code → interroge l'API du transporteur, renvoie {"statut": "en livraison", "eta": "2026-11-03"}Modèle → « Votre colis est en cours de livraison, arrivée prévue le 3 novembre. »Résultat attendu : deux allers-retours avec le modèle et une seule requête réelle à l'API.À retenir
- La description de l'outil est un prompt : dites quand l'utiliser et quand ne pas l'utiliser, sinon le modèle l'appelle à contretemps ou l'ignore.
- Validez toujours les arguments côté code (type, format, droits de l'utilisateur) avant d'exécuter : le schéma guide le modèle, il ne protège pas votre système.
- Limitez la boucle (nombre de tours, délai) et renvoyez les erreurs d'outil sous une forme lisible : le modèle peut alors corriger son appel au lieu de tourner en rond.
- MCP standardise la façon d'exposer des outils à plusieurs applications ; le mécanisme d'appel décrit ici reste le même.
- Piège : exposer un outil d'écriture (remboursement, suppression, envoi d'e-mail) sans confirmation humaine. Un texte malveillant dans les données lues peut pousser le modèle à l'appeler (voir la fiche « Injection de prompt par le dépôt »).
Voir aussi
- Sorties structurées (JSON Schema)Quand une réponse doit être lue par du code, on demande au modèle un JSON conforme à un schéma plutôt que du texte libre, puis on le valide côté application avant de s'en servir.
- MCP (Model Context Protocol)MCP est un protocole ouvert qui branche un agent sur des services externes (GitHub, base de données, outil métier) par un serveur standard, sans jamais coller de secret dans la conversation.
- MCP : liste blanche et confirmationsBrancher des serveurs MCP élargit ce que l'agent peut faire, donc ce qu'un attaquant peut lui faire faire. On autorise des hôtes nommés, on confirme les écritures et on garde les secrets côté serveur.
- Injection de prompt par le dépôtTout ce que l'agent lit peut devenir une consigne : README, issue, page web, skill téléchargé. Un texte caché exigeant d'afficher .env est une attaque, que seules les règles de l'outil bloquent.