Utilisation d'outils avec Claude
Connectez Claude à des outils et API externes. Découvrez où les outils s'exécutent, quand Claude les appelle et quel outil convient à votre tâche.
Le « tool use » (utilisation d'outils), également appelé « function calling » (appel de fonctions), 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 demande de l'utilisateur et de la description de l'outil. Il renvoie ensuite un appel structuré que votre application exécute (outils client) 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. La section Fonctionnement de l'utilisation d'outils montre cet aller-retour de bout en bout. Apprenez-en davantage sur la définition des outils et la gestion des appels d'outils.
Fonctionnement de l'utilisation d'outils
Les outils diffèrent principalement par l'endroit où le code s'exécute. Les outils client (y compris les outils définis par l'utilisateur et les outils dont le schéma est défini 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 client (voir Raisons d'arrêt et solution de 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 seconde 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 vous-même cet aller-retour, 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 Fonctionnement de l'utilisation d'outils.
Pour vous connecter à des serveurs « Model Context Protocol », ou 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.
Quand Claude utilise des outils
Avec la valeur par défaut de tool_choice, {"type": "auto"}, Claude détermine à chaque tour s'il doit appeler un outil ou répondre directement. Il appelle un outil lorsque la demande correspond à la capacité décrite de cet outil et que la réponse ne se trouve 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 est ajustable via votre invite système. Si Claude n'appelle pas les outils lorsque 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 prudent.
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.
Si le prompt de l'utilisateur ne contient pas suffisamment d'informations pour remplir tous les paramètres requis d'un outil, Claude Opus est beaucoup plus susceptible de reconnaître qu'un paramètre est manquant et de le demander. Claude Sonnet peut le demander, en particulier lorsqu'on l'invite à réfléchir avant de produire une requête d'outil. Mais il peut aussi déduire une valeur raisonnable.
Par exemple, avec un outil get_weather qui requiert un paramètre location, si vous demandez à Claude « Quel temps fait-il ? » sans préciser de lieu, Claude (en particulier Claude Sonnet) peut deviner des valeurs que vous n'avez pas fournies :
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "get_weather",
"input": { "location": "New York, NY", "unit": "fahrenheit" }
}Ce comportement n'est pas garanti, en particulier pour les prompts plus ambigus et pour les modèles moins performants.
Choisir un outil
Pour les chaînes type, les versions et les en-têtes bêta, consultez la Référence des outils.
Vos propres 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.
Outils client à schéma Anthropic
Anthropic publie le schéma et entraîne Claude dessus. Votre application exécute toujours chaque appel et renvoie le tool_result.
Stockez et récupérez des informations d'une conversation à l'autre 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 du code.
Prenez des captures d'écran et contrôlez la souris et le clavier dans un environnement de bureau.
Naviguez, lisez et interagissez avec des pages web dans votre propre environnement de navigateur.
Outils serveur
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 isolé 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é.
Tarification
Les requêtes de « tool use » (utilisation d'outils) sont facturées en fonction de :
- Le nombre total de jetons d'entrée envoyés au modèle (y compris dans le paramètre
tools) - Le nombre de jetons de sortie générés
- Pour les outils côté serveur, une tarification supplémentaire basée sur l'usage (par exemple, la recherche web est facturée par recherche effectuée)
Les outils côté client sont facturés de la même manière que toute autre requête à l'API Claude, tandis que les outils côté serveur peuvent entraîner des frais supplémentaires en fonction de leur usage spécifique.
Les jetons supplémentaires liés à l'utilisation d'outils proviennent de :
- Le paramètre
toolsdans les requêtes API (noms, descriptions et schémas des outils) - Les blocs de contenu
tool_usedans les requêtes et réponses API - Les blocs de contenu
tool_resultdans les requêtes API
Lorsque vous utilisez tools, l'API inclut également automatiquement une « system prompt » (invite système) spéciale pour le modèle, qui active l'utilisation d'outils. Le nombre de jetons d'utilisation d'outils requis pour chaque modèle est indiqué dans le tableau suivant (hors jetons supplémentaires mentionnés précédemment). 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 jeton d'invite système supplémentaire.
| Modèle | Choix d'outil | Nombre de jetons de l'invite système d'utilisation d'outils |
|---|---|---|
| Claude Opus 5 | auto, noneany, tool | 286 jetons 406 jetons |
| Claude Opus 4.8 | auto, noneany, tool | 290 jetons 410 jetons |
| Claude Opus 4.7 | auto, noneany, tool | 675 jetons 804 jetons |
| Claude Opus 4.6 | auto, noneany, tool | 497 jetons 589 jetons |
| Claude Opus 4.5 | auto, noneany, tool | 496 jetons 588 jetons |
| Claude Opus 4.1 (retiré, sauf sur Bedrock et Google Cloud) | auto, noneany, tool | 313 jetons 315 jetons |
| Claude Opus 4 (retiré, sauf sur Google Cloud) | auto, noneany, tool | 313 jetons 315 jetons |
| Claude Sonnet 5 | auto, noneany, tool | 354 jetons 474 jetons |
| Claude Sonnet 4.6 | auto, noneany, tool | 497 jetons 589 jetons |
| Claude Sonnet 4.5 | auto, noneany, tool | 496 jetons 588 jetons |
| Claude Sonnet 4 (retiré, sauf sur Bedrock et Google Cloud) | auto, noneany, tool | 313 jetons 315 jetons |
| Claude Haiku 4.5 | auto, noneany, tool | 496 jetons 588 jetons |
| Claude Haiku 3.5 (retiré, sauf sur Bedrock et Google Cloud) | auto, noneany, tool | 264 jetons 355 jetons |
Ces nombres de jetons sont ajoutés à vos jetons d'entrée et de sortie habituels 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 pour toute autre requête API, la réponse inclut le nombre de jetons 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 jetons : consultez l'outil de recherche web et l'outil d'exécution de code pour leurs tarifs.
Étapes suivantes
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é, d'un simple appel d'outil à une boucle agentique prête pour la production.
Répertoire des outils fournis par Anthropic et référence des propriétés facultatives de définition d'outils.
Was this page helpful?