Cette page explique les concepts derrière l'utilisation d'outils : où les outils s'exécutent, comment fonctionne la boucle agentive et quand l'utilisation d'outils est la bonne approche. Pour des conseils pratiques, commencez par le tutoriel ou le guide d'implémentation.
L'utilisation d'outils est un contrat entre votre application et le modèle. Vous spécifiez quelles opérations sont disponibles et quelle forme prennent leurs entrées et sorties ; Claude décide quand et comment les appeler. Le modèle n'exécute jamais rien de lui-même. Il émet une demande structurée, votre code (ou les serveurs d'Anthropic) exécute l'opération, et le résultat revient dans la conversation.
Ce contrat fait que le modèle se comporte moins comme un générateur de texte et plus comme une fonction que vous appelez. Les ingénieurs ayant une expérience classique des API peuvent intégrer l'utilisation d'outils de la même manière qu'ils le feraient pour toute autre interface typée : définir le schéma, gérer le rappel, retourner un résultat. La différence est que l'appelant de l'autre côté est un modèle de langage qui choisit quelle fonction invoquer en fonction de la conversation.
L'axe principal selon lequel les outils diffèrent est l'endroit où le code s'exécute. Chaque outil entre dans l'une des trois catégories, et la catégorie détermine ce dont votre application est responsable.
Vous écrivez le schéma, vous exécutez le code, vous retournez les résultats. C'est l'événement principal : la grande majorité du trafic d'utilisation d'outils provient d'outils définis par l'utilisateur appelant une logique spécifique à l'application.
Quand Claude décide d'utiliser l'un de vos outils, la réponse de l'API contient un bloc tool_use avec le nom de l'outil et un objet JSON d'arguments. Votre application extrait ces arguments, exécute l'opération (une requête de base de données, un appel HTTP, une écriture de fichier, tout ce que l'outil fait), et envoie la sortie dans un bloc tool_result dans la demande suivante. Claude ne voit jamais votre implémentation ; il ne voit que le schéma que vous avez fourni et le résultat que vous avez retourné.
Pour une poignée d'opérations courantes (exécuter des commandes shell, éditer des fichiers, contrôler un navigateur, gérer la mémoire du bloc-notes), Anthropic publie le schéma d'outil et votre application gère l'exécution. Les outils de cette catégorie sont bash, text_editor, computer et memory.
Le modèle d'exécution est identique aux outils définis par l'utilisateur : la réponse contient un bloc tool_use, votre code exécute l'opération, et vous renvoyez un tool_result. La raison d'utiliser un outil de schéma Anthropic au lieu de définir votre propre équivalent est que ces schémas sont entraînés. Claude a été optimisé sur des milliers de trajectoires réussies qui utilisent ces signatures d'outil exactes, donc il les appelle plus fiablement et se remet des erreurs plus gracieusement qu'il ne le ferait avec un outil personnalisé qui fait la même chose. Le schéma est l'interface que le modèle attend déjà.
Pour web_search, web_fetch, code_execution et tool_search, Anthropic exécute le code. Vous activez l'outil dans votre demande et le serveur gère tout le reste. Vous ne construisez jamais un bloc tool_result pour ces outils car la boucle côté serveur exécute l'opération et renvoie la sortie au modèle avant que la réponse ne vous parvienne.
La réponse que vous recevez contient des blocs server_tool_use montrant ce qui s'est exécuté et ce qui est revenu, mais au moment où vous les voyez, l'exécution est déjà terminée. Le travail de votre application est d'activer l'outil et de lire la réponse finale, non de participer à la boucle d'exécution.
Les outils exécutés côté client (à la fois définis par l'utilisateur et de schéma Anthropic) nécessitent que votre application pilote une boucle. Le modèle ne peut pas exécuter votre code, donc chaque appel d'outil est un aller-retour : le modèle demande, vous exécutez, vous signalez, le modèle continue.
La forme canonique est une boucle while basée sur stop_reason :
tools et le message de l'utilisateur.stop_reason: "tool_use" et un ou plusieurs blocs tool_use.tool_result.tool_result.stop_reason est "tool_use".En pratique, cela se lit comme : tandis que stop_reason == "tool_use", exécutez les outils et continuez la conversation. La boucle se termine sur tout autre motif d'arrêt ("end_turn", "max_tokens", "stop_sequence" ou "refusal"), ce qui signifie que Claude a soit produit une réponse finale, soit s'est arrêté pour une autre raison que votre application doit gérer.
Pour les mécaniques de construction de demandes, la gestion des appels d'outils parallèles et le formatage des résultats, voir Gérer les appels d'outils.
Les outils exécutés côté serveur exécutent leur propre boucle à l'intérieur de l'infrastructure d'Anthropic. Une seule demande de votre application pourrait déclencher plusieurs recherches web ou exécutions de code avant qu'une réponse ne revienne. Le modèle recherche, lit les résultats, décide de rechercher à nouveau, et itère jusqu'à ce qu'il ait ce dont il a besoin, tout cela sans que votre application ne participe.
Cette boucle interne a une limite d'itération. Si le modèle itère toujours quand il atteint le plafond, la réponse revient avec stop_reason: "pause_turn" au lieu de "end_turn". Un tour en pause signifie que le travail n'est pas terminé ; renvoyez la conversation (y compris la réponse en pause) pour permettre au modèle de continuer où il s'était arrêté. Voir Outils serveur pour le modèle de continuation.
L'utilisation d'outils convient quand la tâche nécessite quelque chose que le modèle ne peut pas faire à partir du texte seul :
L'indicateur que vous devriez utiliser des outils : si vous écrivez une regex pour extraire une décision de la sortie du modèle, cette décision aurait dû être un appel d'outil. Analyser du texte libre pour récupérer une intention structurée est un signe que la structure appartient au schéma.
L'utilisation d'outils ne convient pas quand :
| Approche | Quand l'utiliser | À quoi s'attendre | En savoir plus |
|---|---|---|---|
| Outils clients définis par l'utilisateur | Logique métier personnalisée, API internes, données propriétaires | Vous gérez l'exécution et la boucle agentive | Définir les outils |
| Outils clients de schéma Anthropic | Opérations de développement standard (bash, édition de fichiers, contrôle de navigateur) | Vous gérez l'exécution ; Claude appelle l'outil de manière fiable car le schéma est entraîné | Référence des outils |
| Outils exécutés côté serveur | Recherche web, bac à sable de code, récupération web | Anthropic gère l'exécution ; vous obtenez les résultats directement | Outils serveur |
Créez un agent étape par étape, d'un seul appel d'outil à la production.
Spécification du schéma, descriptions et tool_choice.
Répertoire des outils fournis par Anthropic.
Was this page helpful?