L'utilisation d'outils permet à Claude d'appeler des fonctions que vous définissez ou qu'Anthropic fournit. Claude détermine quand appeler un outil en fonction de la requête de l'utilisateur et de la description de l'outil. Il renvoie ensuite un appel structuré que votre application exécute (outils clients) ou qu'Anthropic exécute (outils serveur).
Voici un exemple minimal utilisant un outil serveur, l'outil de recherche web, qu'Anthropic exécute pour vous :
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=[{"type": "web_search_20260209", "name": "web_search"}],
messages=[{"role": "user", "content": "What's the latest on the Mars rover?"}],
)
print(response.content)Claude exécute la recherche sur l'infrastructure d'Anthropic et renvoie les résultats cités dans la même réponse. Pour que Claude appelle une fonction que vous définissez, transmettez un outil avec un input_schema, puis exécutez l'appel lorsque Claude renvoie un bloc tool_use. Comment fonctionne l'utilisation d'outils montre cet aller-retour de bout en bout. Apprenez-en plus sur la définition des outils et la gestion des appels d'outils.
Les outils se distinguent principalement par l'endroit où le code s'exécute. Les outils clients (y compris les outils définis par l'utilisateur et les outils avec des schémas définis par Anthropic, tels que bash et text_editor) s'exécutent dans votre application. Claude répond avec stop_reason: "tool_use" et un ou plusieurs blocs tool_use. Votre code exécute l'opération et renvoie un tool_result. Les outils serveur (tels que web_search, web_fetch, code_execution et tool_search) s'exécutent sur l'infrastructure d'Anthropic : vous voyez les résultats directement sans gérer l'exécution, sauf si Claude appelle l'outil dans le même groupe d'appels d'outils parallèles que l'un de vos outils clients (voir Raisons d'arrêt et repli).
Voici cet aller-retour complet pour un outil client. La première requête définit un outil get_weather, et Claude répond à la question en l'appelant : la réponse contient un bloc tool_use, votre code effectue la recherche, et une deuxième requête renvoie le résultat dans un bloc tool_result afin que Claude puisse répondre avec la réponse.
client = anthropic.Anthropic()
tools = [
{
"name": "get_weather",
"description": "Get the current weather for a given location.",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City and state, e.g. San Francisco, CA",
}
},
"required": ["location"],
},
}
]
messages = [{"role": "user", "content": "What's the weather in San Francisco?"}]
# Claude répond avec un bloc tool_use indiquant le nom de l'outil et ses arguments.
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=tools,
# Demandez au plus un appel d'outil par tour.
tool_choice={"type": "auto", "disable_parallel_tool_use": True},
messages=messages,
)
tool_use = next(block for block in response.content if block.type == "tool_use")
print(f"Claude called {tool_use.name} with {json.dumps(tool_use.input)}")
# Exécutez l'outil, puis renvoyez le résultat dans un bloc tool_result.
weather = "15 degrees Celsius, partly cloudy" # your weather lookup goes here
messages += [
{"role": "assistant", "content": response.content},
{
"role": "user",
"content": [
{"type": "tool_result", "tool_use_id": tool_use.id, "content": weather}
],
},
]
followup = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=tools,
tool_choice={"type": "auto", "disable_parallel_tool_use": True},
messages=messages,
)
# Claude utilise le résultat pour répondre à la question initiale.
final_text = next(block for block in followup.content if block.type == "text")
print(final_text.text)Claude called get_weather with {"location": "San Francisco, CA"}
The current weather in San Francisco is 15 degrees Celsius with partly cloudy skies.Gérer les appels d'outils couvre chaque étape en détail, y compris le formatage des résultats et la signalisation des erreurs ; Utilisation d'outils en parallèle couvre les réponses qui appellent plusieurs outils à la fois. Pour éviter d'écrire cet aller-retour vous-même, utilisez Tool Runner : les SDK exécutent vos outils et renvoient les résultats automatiquement.
Pour le modèle conceptuel complet, y compris la boucle agentique et le moment où choisir chaque approche, consultez Comment fonctionne l'utilisation d'outils.
Pour vous connecter à des serveurs Model Context Protocol (MCP), consultez le connecteur MCP. Pour créer votre propre client MCP, consultez le guide Model Context Protocol sur la création d'un client MCP.
Avec le tool_choice par défaut de {"type": "auto"}, Claude détermine à chaque tour s'il doit appeler un outil ou répondre directement. Il appelle un outil lorsque la requête correspond à la capacité décrite de cet outil et que la réponse n'est pas déjà dans le contexte. Il répond directement pour les connaissances stables, les tâches créatives et les tours conversationnels.
Cette frontière peut être orientée via votre invite système. Si Claude n'appelle pas les outils quand vous vous y attendez, une instruction légère telle que "Use the tools to investigate before responding." augmente l'utilisation d'outils. Une forme plus forte telle que "Always call a tool first before responding." pousse plus loin. À l'inverse, "Use your judgment about whether to call a tool or respond directly." maintient un comportement de déclenchement conservateur.
Pour exiger un appel d'outil plutôt que de vous fier au prompt, définissez tool_choice.
La page de chaque outil serveur décrit plus en détail sa propre frontière de déclenchement.
Pour les chaînes type, les versions et les en-têtes bêta, consultez la Référence des outils.
Pour les outils que vous définissez, vous écrivez le schéma et votre application exécute chaque appel.
Spécifiez les schémas d'outils, rédigez les descriptions et contrôlez quand Claude appelle vos outils.
Analysez les blocs tool_use, formatez les réponses tool_result et gérez les erreurs.
Anthropic publie le schéma et entraîne Claude sur celui-ci. Votre application exécute toujours chaque appel et renvoie le tool_result.
Stockez et récupérez des informations entre les conversations dans des fichiers que vous contrôlez.
Exécutez des commandes shell dans une session persistante qui conserve l'état.
Affichez et modifiez des fichiers texte pour déboguer, corriger et améliorer le code.
Prenez des captures d'écran et contrôlez la souris et le clavier dans un environnement de bureau.
Les outils serveur s'exécutent sur l'infrastructure d'Anthropic, sans code de gestion dans votre application. Consultez Outils serveur pour les mécanismes qu'ils partagent.
Recherchez sur le web des informations au-delà de la date limite des connaissances, avec des sources citées.
Récupérez le contenu complet de pages web et de documents PDF spécifiés.
Exécutez du code Python et bash dans un conteneur en bac à sable pour analyser des données et générer des fichiers.
Permettez à un modèle exécuteur plus rapide de consulter un modèle conseiller plus intelligent en cours de génération.
Travaillez avec des milliers d'outils en les découvrant et en les chargeant à la demande.
Connectez-vous à des serveurs MCP distants depuis l'API Messages sans client MCP séparé.
Les requêtes d'utilisation d'outils sont tarifées en fonction de :
tools)Les outils côté client sont tarifés de la même manière que toute autre requête de l'API Claude, tandis que les outils côté serveur peuvent entraîner des frais supplémentaires en fonction de leur utilisation spécifique.
Les tokens supplémentaires provenant de l'utilisation d'outils proviennent de :
tools dans les requêtes API (noms des outils, descriptions et schémas)tool_use dans les requêtes et réponses APItool_result dans les requêtes APILorsque vous utilisez tools, l'API inclut également automatiquement une invite système spéciale pour le modèle qui active l'utilisation d'outils. Le nombre de tokens d'utilisation d'outils requis pour chaque modèle est indiqué ci-dessous (à l'exclusion des tokens supplémentaires mentionnés ci-dessus). Notez que le tableau suppose qu'au moins 1 outil est fourni. Si aucun tools n'est fourni, alors un choix d'outil de none utilise 0 token supplémentaire d'invite système.
| Modèle | Choix d'outil | Nombre de tokens de l'invite système d'utilisation d'outils |
|---|---|---|
| Claude Opus 5 | auto, noneany, tool | 286 tokens 406 tokens |
| Claude Opus 4.8 | auto, noneany, tool | 290 tokens 410 tokens |
| Claude Opus 4.7 | auto, noneany, tool | 675 tokens 804 tokens |
| Claude Opus 4.6 | auto, noneany, tool | 497 tokens 589 tokens |
| Claude Opus 4.5 | auto, noneany, tool | 496 tokens 588 tokens |
| Claude Opus 4.1 (obsolète) | auto, noneany, tool | 313 tokens 315 tokens |
| Claude Opus 4 (retiré, sauf sur Google Cloud) | auto, noneany, tool | 313 tokens 315 tokens |
| Claude Sonnet 5 | auto, noneany, tool | 354 tokens 474 tokens |
| Claude Sonnet 4.6 | auto, noneany, tool | 497 tokens 589 tokens |
| Claude Sonnet 4.5 | auto, noneany, tool | 496 tokens 588 tokens |
| Claude Sonnet 4 (retiré, sauf sur Bedrock et Google Cloud) | auto, noneany, tool | 313 tokens 315 tokens |
| Claude Haiku 4.5 | auto, noneany, tool | 496 tokens 588 tokens |
| Claude Haiku 3.5 (retiré, sauf sur Bedrock et Google Cloud) | auto, noneany, tool | 264 tokens 355 tokens |
Ces nombres de tokens sont ajoutés à vos tokens d'entrée et de sortie normaux pour calculer le coût total d'une requête.
Consultez le tableau de la Vue d'ensemble des modèles pour les prix actuels par modèle.
Lorsque vous envoyez un prompt d'utilisation d'outils, comme toute autre requête API, la réponse inclut à la fois le nombre de tokens d'entrée et de sortie dans les métriques usage rapportées.
Certains outils serveur ajoutent des frais basés sur l'utilisation en plus des tokens : consultez l'outil de recherche web et l'outil d'exécution de code pour leurs tarifs.
Comprenez la boucle d'utilisation d'outils, où les outils s'exécutent et quand utiliser des outils plutôt que de la prose.
Un parcours guidé depuis un simple appel d'outil jusqu'à une boucle agentique prête pour la production.
Répertoire des outils fournis par Anthropic et référence des propriétés optionnelles de définition d'outils.
Was this page helpful?