Loading...
  • Construire
  • Admin
  • Modèles & tarification
  • SDKs clients
  • Référence API
Search...
⌘K
Log in
Gérer les appels d'outils
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Construire/Outils

Gérer les appels d'outils

Analyser les blocs tool_use, formater les réponses tool_result et gérer les erreurs avec is_error.

Cette page couvre le cycle de vie des appels d'outils : lire les blocs tool_use de la réponse de Claude, formater les blocs tool_result dans votre réponse et signaler les erreurs. Pour l'abstraction SDK qui gère cela automatiquement, voir Tool Runner.

Plus simple avec Tool Runner : La gestion manuelle des outils décrite sur cette page est automatiquement gérée par Tool Runner. Utilisez cette page lorsque vous avez besoin d'un contrôle personnalisé sur l'exécution des outils.

La réponse de Claude diffère selon qu'il utilise un outil client ou serveur.

Gérer les résultats des outils clients

La réponse aura un stop_reason de tool_use et un ou plusieurs blocs de contenu tool_use qui incluent :

  • id : Un identifiant unique pour ce bloc d'utilisation d'outil particulier. Ceci sera utilisé pour faire correspondre les résultats de l'outil plus tard.
  • name : Le nom de l'outil utilisé.
  • input : Un objet contenant l'entrée transmise à l'outil, conforme au input_schema de l'outil.

Lorsque vous recevez une réponse d'utilisation d'outil pour un outil client, vous devez :

  1. Extraire le name, l'id et l'input du bloc tool_use.
  2. Exécuter l'outil réel dans votre base de code correspondant à ce nom d'outil, en transmettant l'input de l'outil.
  3. Continuer la conversation en envoyant un nouveau message avec le role de user et un bloc content contenant le type tool_result et les informations suivantes :
    • tool_use_id : L'id de la demande d'utilisation d'outil pour laquelle ceci est un résultat.
    • content : Le résultat de l'outil, sous forme de chaîne (par exemple, "content": "15 degrees"), une liste de blocs de contenu imbriqués (par exemple, "content": [{"type": "text", "text": "15 degrees"}]), ou une liste de blocs de documents (par exemple, "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Ces blocs de contenu peuvent utiliser les types text, image ou document.
    • is_error (optionnel) : Défini sur true si l'exécution de l'outil a entraîné une erreur.

Exigences de formatage importantes :

  • Les blocs de résultats d'outils doivent immédiatement suivre leurs blocs d'utilisation d'outils correspondants dans l'historique des messages. Vous ne pouvez pas inclure de messages entre le message d'utilisation d'outil de l'assistant et le message de résultat d'outil de l'utilisateur.
  • Dans le message utilisateur contenant les résultats des outils, les blocs tool_result doivent venir EN PREMIER dans le tableau de contenu. Tout texte doit venir APRÈS tous les résultats des outils.

Par exemple, ceci causera une erreur 400 :

{
  "role": "user",
  "content": [
    { "type": "text", "text": "Here are the results:" }, // ❌ Text before tool_result
    { "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
  ]
}

Ceci est correct :

{
  "role": "user",
  "content": [
    { "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
    { "type": "text", "text": "What should I do next?" } // ✅ Text after tool_result
  ]
}

Si vous recevez une erreur comme « tool_use ids were found without tool_result blocks immediately after », vérifiez que vos résultats d'outils sont formatés correctement.

Après avoir reçu le résultat de l'outil, Claude utilisera ces informations pour continuer à générer une réponse à la demande utilisateur d'origine.

Gérer les résultats des outils serveur

Claude exécute l'outil en interne et intègre les résultats directement dans sa réponse sans nécessiter d'interaction utilisateur supplémentaire.

Différences par rapport aux autres API

Contrairement aux API qui séparent l'utilisation d'outils ou utilisent des rôles spéciaux comme tool ou function, l'API Claude intègre les outils directement dans la structure des messages user et assistant.

Les messages contiennent des tableaux de blocs text, image, tool_use et tool_result. Les messages user incluent le contenu client et tool_result, tandis que les messages assistant contiennent le contenu généré par l'IA et tool_use.

Gérer les erreurs avec is_error

Il existe plusieurs types d'erreurs qui peuvent survenir lors de l'utilisation d'outils avec Claude :

Étapes suivantes

  • Pour exécuter plusieurs outils en un seul tour, voir Parallel tool use.
  • Pour l'abstraction SDK qui automatise cette boucle, voir Tool Runner.
  • Pour le flux de travail complet d'utilisation d'outils, voir Define tools.

Was this page helpful?

  • Gérer les résultats des outils clients
  • Gérer les résultats des outils serveur
  • Gérer les erreurs avec is_error
  • Étapes suivantes