Claude Platform Docs
MessagesOutils

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)
Output
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.

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 :

  1. Le nombre total de jetons d'entrée envoyés au modèle (y compris dans le paramètre tools)
  2. Le nombre de jetons de sortie générés
  3. 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 tools dans les requêtes API (noms, descriptions et schémas des outils)
  • Les blocs de contenu tool_use dans les requêtes et réponses API
  • Les blocs de contenu tool_result dans 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èleChoix d'outilNombre de jetons de l'invite système d'utilisation d'outils
Claude Opus 5auto, none
any, tool
286 jetons
406 jetons
Claude Opus 4.8auto, none
any, tool
290 jetons
410 jetons
Claude Opus 4.7auto, none
any, tool
675 jetons
804 jetons
Claude Opus 4.6auto, none
any, tool
497 jetons
589 jetons
Claude Opus 4.5auto, none
any, tool
496 jetons
588 jetons
Claude Opus 4.1 (retiré, sauf sur Bedrock et Google Cloud)auto, none
any, tool
313 jetons
315 jetons
Claude Opus 4 (retiré, sauf sur Google Cloud)auto, none
any, tool
313 jetons
315 jetons
Claude Sonnet 5auto, none
any, tool
354 jetons
474 jetons
Claude Sonnet 4.6auto, none
any, tool
497 jetons
589 jetons
Claude Sonnet 4.5auto, none
any, tool
496 jetons
588 jetons
Claude Sonnet 4 (retiré, sauf sur Bedrock et Google Cloud)auto, none
any, tool
313 jetons
315 jetons
Claude Haiku 4.5auto, none
any, tool
496 jetons
588 jetons
Claude Haiku 3.5 (retiré, sauf sur Bedrock et Google Cloud)auto, none
any, 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?