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 requête 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-5",
max_tokens=4096,
tools=[{"type": "web_search_20260209", "name": "web_search"}],
messages=[{"role": "user", "content": "What is 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. L’exemple d’outil client montre cet aller-retour de bout en bout. Apprenez-en davantage sur la définition d’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 les schémas sont 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 directement les résultats 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 (consultez 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 nommant l'outil et ses arguments.
response = client.messages.create(
model="claude-opus-5-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-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 le signalement 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 le « tool runner » (exécuteur d’outils) : le SDK exécute vos outils et renvoie automatiquement les résultats.
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 sur celui-ci. 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 tokens d’entrée envoyés au modèle (y compris dans le paramètre
tools). - Le nombre de tokens 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 tokens 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 tableau suivant indique le nombre de tokens d’utilisation d’outils requis par chaque modèle (hors tokens supplémentaires mentionnés précédemment). Le tableau suppose que vous fournissez au moins un outil. Si vous ne fournissez aucun tools, un choix d’outil de none utilise 0 token d’invite système supplémentaire.
| Modèle | Jetons de la requête système pour l’utilisation d’outils | |
|---|---|---|
| Nom | Nombre de jetons | |
Claude Opus 5.5For long-running agentic coding and knowledge work | auto, none | 286 jetons |
Claude Sonnet 5.5The best combination of speed and intelligence | auto, none | 286 jetons |
Claude Haiku 5.5For high-volume, latency-sensitive tasks such as classification, extraction, and routing | auto, none | 286 jetons |
any, tool | 406 jetons | |
auto, none | 286 jetons | |
any, tool | 406 jetons | |
auto, none | 290 jetons | |
any, tool | 410 jetons | |
auto, none | 675 jetons | |
any, tool | 804 jetons | |
auto, none | 497 jetons | |
any, tool | 589 jetons | |
auto, none | 496 jetons | |
any, tool | 588 jetons | |
Claude Opus 4.1 | auto, none | 313 jetons |
any, tool | 315 jetons | |
Claude Opus 4 | auto, none | 313 jetons |
any, tool | 315 jetons | |
auto, none | 354 jetons | |
any, tool | 474 jetons | |
auto, none | 497 jetons | |
any, tool | 589 jetons | |
auto, none | 496 jetons | |
any, tool | 588 jetons | |
Claude Sonnet 4 | auto, none | 313 jetons |
any, tool | 315 jetons | |
auto, none | 496 jetons | |
any, tool | 588 jetons | |
Ces nombres de tokens sont ajoutés à vos tokens 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 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 Utilisation et tarification de l’outil de recherche web et Utilisation et tarification de 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.
Cette page vous a-t-elle été utile ?