Tool Use (Utilisation d’Outils par les LLM)
Tool use vs function calling
Les termes tool use (Anthropic) et function calling (OpenAI, Google) designent le meme mecanisme technique. Le modele recoit des definitions d’outils, decide quand les utiliser, genere des appels structures (JSON) et integre les resultats. Anthropic prefere « tool use » car le concept va au-dela des simples fonctions API : il inclut aussi les outils system comme computer use (controle d’interface graphique), text editor et bash execution.
Pour le developpeur, les differences sont principalement syntaxiques (noms de parametres dans l’API) et non conceptuelles. Le schema JSON de definition des outils est pratiquement identique entre les fournisseurs.
Fonctionnement detaille
Definition des outils
Les outils sont definis dans le parametre « tools » de la requete API. Chaque outil comprend un nom (identifiant unique), une description (le LLM l’utilise pour decider quand appeler l’outil), et un input_schema (schema JSON des parametres). La description est critique : elle oriente le modele dans son choix d’outil et son usage. Une description vague ou ambigue degrade la fiabilite.
Decision d’utilisation
Le modele analyse le message utilisateur et les outils disponibles. S’il determine qu’un outil est necessaire pour repondre (donnee en temps reel, action a effectuer, calcul precis), il genere un bloc « tool_use » avec le nom de l’outil et les parametres JSON. S’il peut repondre directement, il genere du texte sans appel d’outil. Le modele peut aussi combiner texte et appels d’outils dans une meme reponse.
Boucle d’execution
Apres la generation d’un appel d’outil, l’application execute l’outil cote serveur, puis renvoie le resultat au modele dans un message « tool_result ». Le modele recoit ce resultat et produit sa reponse finale (ou un autre appel d’outil si necessaire). Cette boucle peut se repeter plusieurs fois pour les taches complexes, formant la base des agents IA.
Types d’outils
Outils API (fonctions custom)
Le cas le plus courant : le developpeur definit des fonctions qui appellent ses propres API ou services tiers. Recherche dans une base de donnees, appel a une API meteo, envoi d’email via SendGrid, creation de ticket Jira. Le LLM genere les parametres d’appel, l’application execute et renvoie le resultat.
Computer Use
Anthropic a introduit le computer use avec Claude : le modele peut observer des captures d’ecran d’interfaces graphiques, identifier les elements interactifs et generer des actions (clic, frappe, scroll). C’est une extension du tool use aux interactions visuelles. Le modele utilise des outils system (screenshot, mouse_click, keyboard_type) pour naviguer dans des applications comme un humain le ferait.
Execution de code
Les outils d’execution de code (code interpreter chez OpenAI, analyse chez Claude) permettent au modele d’ecrire et d’executer du code Python dans un sandbox. Le modele ecrit du code, le sandbox l’execute et retourne les resultats (output, graphiques, fichiers). C’est essentiel pour les calculs complexes, l’analyse de donnees et la visualisation.
Recherche web
Les outils de recherche web permettent au modele d’obtenir des informations en temps reel. Le modele genere une requete de recherche, l’outil retourne des resultats, et le modele synthetise la reponse. Cela resout le probleme des connaissances obsoletes du modele (knowledge cutoff).
| Type d’outil | Exemple | Valeur ajoutee | Complexite |
|---|---|---|---|
| API custom | CRM, meteo, DB | Acces aux donnees specifiques | Moyenne |
| Computer use | Navigation GUI | Automatisation universelle | Elevee |
| Code execution | Python sandbox | Calculs, analyse, graphiques | Faible |
| Recherche web | Google, Bing | Donnees en temps reel | Faible |
| Fichiers | Lecture/ecriture | Manipulation de documents | Moyenne |
Implementation pratique
Avec l’API Claude
L’API Claude accepte un tableau « tools » dans la requete. Chaque outil est un objet avec name, description et input_schema (JSON Schema). Quand Claude decide d’utiliser un outil, la reponse contient un bloc de type « tool_use » avec l’id, le name et l’input. Le developpeur execute l’outil et renvoie un message avec role « user » contenant un bloc « tool_result » avec l’id correspondant et le contenu du resultat.
Forcer ou guider le choix d’outil
Le parametre tool_choice permet de controle le comportement. « auto » (defaut) laisse le modele decider. « any » force le modele a utiliser au moins un outil. Un outil specifique {« type »: « tool », « name »: « nom »} force l’utilisation de cet outil precis. Ce controle est utile pour les scenarios ou vous savez qu’un outil est necessaire.
Streaming et latence
Le tool use est compatible avec le streaming : les parametres d’appel d’outil sont envoyes progressivement. Pour reduire la latence percue, affichez le texte de reflexion du modele pendant qu’il decide d’utiliser un outil, puis executez l’outil en arriere-plan et affichez le resultat final. Les appels paralleles d’outils reduisent aussi la latence totale.
Relation avec le MCP
Le MCP (Model Context Protocol) d’Anthropic standardise l’exposition des outils. Au lieu de definir chaque outil manuellement dans votre code, un serveur MCP publie ses outils dans un format standard. Le client MCP decouvre automatiquement les outils disponibles et les transmet au modele via tool use. Le MCP est une couche d’abstraction qui rend les outils portables entre applications et modeles.
Un serveur MCP pour Slack, par exemple, expose des outils comme « send_message », « search_messages », « list_channels ». Votre application se connecte au serveur MCP, recupere les definitions d’outils et les passe a Claude. L’ecosysteme MCP offre des centaines de serveurs pre-construits pour les services populaires.
Bonnes pratiques
Ecrivez des descriptions d’outils orientees « quand utiliser » plutot que « comment ca marche ». Le modele a besoin de savoir quand appeler l’outil, pas son implementation interne. Incluez des exemples de cas d’usage dans la description.
Gardez les schemas d’input simples. Les schemas profondement imbriques ou avec de nombreux champs optionnels reduisent la fiabilite. Preferez des outils atomiques (une action = un outil) plutot que des outils multifonctions.
Gerez les erreurs proprement. Quand un outil echoue, retournez un message d’erreur descriptif dans le tool_result. Le modele peut alors adapter sa strategie (reessayer avec d’autres parametres, utiliser un outil alternatif ou informer l’utilisateur).
Implementez des limites. Limitez le nombre d’appels d’outils par requete pour eviter les boucles infinies. Limitez les permissions des outils au minimum necessaire. Loggez tous les appels d’outils pour le debugging et l’audit.
Tendances 2026
Le computer use etend le tool use a toute interface graphique, rendant potentiellement tout logiciel existant accessible aux LLM. Le MCP unifie l’ecosysteme d’outils avec un protocole standard. Le tool use multimodal permet aux modeles d’utiliser des outils bases sur des entrees visuelles ou audio. Les outils autonomes (l’agent decide lui-meme quels outils creer) sont une frontiere de recherche active. Et le Verified Tool Use ajoute des garanties de safety en validant formellement les appels d’outils avant execution.
FAQ – Tool Use
Quelle est la difference entre tool use et function calling ?
Aucune difference conceptuelle. Tool use est le terme d’Anthropic (Claude), function calling est le terme d’OpenAI et Google. Le mecanisme est identique : le LLM genere un appel structure, l’application execute et retourne le resultat. Anthropic utilise « tool use » car le concept inclut aussi les outils system (computer use) qui vont au-dela des fonctions API.
Claude peut-il utiliser des outils sans API ?
Via l’interface web de Claude, certains outils sont integres : analyse de fichiers, execution de code (artifacts), recherche web. Via l’API, vous definissez vos propres outils. Via le MCP, vous connectez Claude a des serveurs d’outils pre-construits. Chaque interface offre un niveau de customisation different.
Comment gerer les erreurs de tool use ?
Retournez un message d’erreur clair dans le tool_result (pas juste « erreur » mais « L’utilisateur ‘xyz’ n’existe pas dans la base »). Claude peut alors adapter sa reponse : reformuler la requete, utiliser un outil alternatif ou demander des precisions a l’utilisateur. Implementez des retries avec backoff pour les erreurs transitoires (timeout, rate limit).
Combien coute le tool use en tokens ?
Les definitions d’outils consomment des tokens d’entree (environ 100-300 tokens par outil). Chaque appel d’outil ajoute les tokens du resultat retourne. Un systeme avec 5 outils et 3 appels peut ajouter 2 000 a 5 000 tokens a une requete. Optimisez en limitant le nombre d’outils et en compressant les resultats retournes (ne renvoyez que les donnees pertinentes, pas la reponse API complete).
Le tool use fonctionne-t-il avec le streaming ?
Oui. L’API Claude supporte le streaming des appels d’outils. Les evenements input_json_delta envoient les parametres JSON progressivement. Cela permet d’afficher le raisonnement du modele en temps reel pendant qu’il prepare l’appel d’outil, ameliorant la latence percue par l’utilisateur.