Choisir un modèle
En général, utilisez Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4, Claude Sonnet 3.7, Claude Sonnet 3.5 (déprécié) ou Claude Opus 3 (déprécié) pour les outils complexes et les requêtes ambiguës ; ils gèrent mieux plusieurs outils et cherchent des clarifications lorsque nécessaire. Utilisez Claude Haiku 3.5 ou Claude Haiku 3 pour les outils simples, mais notez qu’ils peuvent inférer des paramètres manquants.Si vous utilisez Claude Sonnet 3.7 avec l’utilisation d’outils et la réflexion étendue, consultez notre guide ici pour plus d’informations.
Spécifier les outils clients
Les outils clients (définis par Anthropic et définis par l’utilisateur) sont spécifiés dans le paramètre de niveau supérieurtools
de la requête API. Chaque définition d’outil inclut :
Paramètre | Description |
---|---|
name | Le nom de l’outil. Doit correspondre à la regex ^[a-zA-Z0-9_-]{1,64}$ . |
description | Une description détaillée en texte brut de ce que fait l’outil, quand il doit être utilisé et comment il se comporte. |
input_schema | Un objet JSON Schema définissant les paramètres attendus pour l’outil. |
Exemple de définition d'outil simple
Exemple de définition d'outil simple
JSON
get_weather
, attend un objet d’entrée avec une chaîne location
requise et une chaîne unit
optionnelle qui doit être soit “celsius” soit “fahrenheit”.Prompt système d’utilisation d’outils
Lorsque vous appelez l’API Anthropic avec le paramètretools
, nous construisons un prompt système spécial à partir des définitions d’outils, de la configuration d’outils et de tout prompt système spécifié par l’utilisateur. Le prompt construit est conçu pour instruire le modèle à utiliser le ou les outils spécifiés et fournir le contexte nécessaire pour que l’outil fonctionne correctement :
Meilleures pratiques pour les définitions d’outils
Pour obtenir les meilleures performances de Claude lors de l’utilisation d’outils, suivez ces directives :- Fournissez des descriptions extrêmement détaillées. C’est de loin le facteur le plus important dans les performances des outils. Vos descriptions doivent expliquer chaque détail sur l’outil, y compris :
- Ce que fait l’outil
- Quand il doit être utilisé (et quand il ne doit pas l’être)
- Ce que signifie chaque paramètre et comment il affecte le comportement de l’outil
- Toute mise en garde ou limitation importante, comme les informations que l’outil ne retourne pas si le nom de l’outil n’est pas clair. Plus vous pouvez donner de contexte à Claude sur vos outils, mieux il sera à décider quand et comment les utiliser. Visez au moins 3-4 phrases par description d’outil, plus si l’outil est complexe.
- Priorisez les descriptions par rapport aux exemples. Bien que vous puissiez inclure des exemples d’utilisation d’un outil dans sa description ou dans le prompt d’accompagnement, c’est moins important que d’avoir une explication claire et complète du but et des paramètres de l’outil. N’ajoutez des exemples qu’après avoir entièrement développé la description.
Exemple d'une bonne description d'outil
Exemple d'une bonne description d'outil
JSON
Exemple de mauvaise description d'outil
Exemple de mauvaise description d'outil
JSON
ticker
. La mauvaise description est trop brève et laisse Claude avec de nombreuses questions ouvertes sur le comportement et l’utilisation de l’outil.
Contrôler la sortie de Claude
Forcer l’utilisation d’outils
Dans certains cas, vous pourriez vouloir que Claude utilise un outil spécifique pour répondre à la question de l’utilisateur, même si Claude pense qu’il peut fournir une réponse sans utiliser d’outil. Vous pouvez le faire en spécifiant l’outil dans le champtool_choice
comme ceci :
auto
permet à Claude de décider s’il faut appeler les outils fournis ou non. C’est la valeur par défaut lorsque destools
sont fournis.any
dit à Claude qu’il doit utiliser l’un des outils fournis, mais ne force pas un outil particulier.tool
nous permet de forcer Claude à toujours utiliser un outil particulier.none
empêche Claude d’utiliser des outils. C’est la valeur par défaut lorsqu’aucuntools
n’est fourni.
Lors de l’utilisation de la mise en cache de prompts, les changements au paramètre
tool_choice
invalideront les blocs de messages mis en cache. Les définitions d’outils et les prompts système restent mis en cache, mais le contenu des messages doit être retraité.
tool_choice
comme any
ou tool
, nous pré-remplirons le message assistant pour forcer l’utilisation d’un outil. Cela signifie que les modèles n’émettront pas de bloc de contenu text
de chaîne de pensée avant les blocs de contenu tool_use
, même si explicitement demandé.
Lors de l’utilisation de la réflexion étendue avec l’utilisation d’outils,
tool_choice: {"type": "any"}
et tool_choice: {"type": "tool", "name": "..."}
ne sont pas supportés et résulteront en une erreur. Seuls tool_choice: {"type": "auto"}
(par défaut) et tool_choice: {"type": "none"}
sont compatibles avec la réflexion étendue.{"type": "auto"}
pour tool_choice
(par défaut) et ajouter des instructions explicites dans un message user
. Par exemple : Quel temps fait-il à Londres ? Utilisez l'outil get_weather dans votre réponse.
Sortie JSON
Les outils ne doivent pas nécessairement être des fonctions clients — vous pouvez utiliser des outils chaque fois que vous voulez que le modèle retourne une sortie JSON qui suit un schéma fourni. Par exemple, vous pourriez utiliser un outilrecord_summary
avec un schéma particulier. Voir Utilisation d’outils avec Claude pour un exemple complet fonctionnel.
Chaîne de pensée
Lors de l’utilisation d’outils, Claude montrera souvent sa “chaîne de pensée”, c’est-à-dire le raisonnement étape par étape qu’il utilise pour décomposer le problème et décider quels outils utiliser. Le modèle Claude Opus 3 (déprécié) le fera sitool_choice
est défini sur auto
(c’est la valeur par défaut, voir Forcer l’utilisation d’outils), et Sonnet et Haiku peuvent être incités à le faire.
Par exemple, étant donné le prompt “Quel temps fait-il à San Francisco en ce moment, et quelle heure est-il là-bas ?”, Claude pourrait répondre avec :
JSON
Utilisation d’outils en parallèle
Par défaut, Claude peut utiliser plusieurs outils pour répondre à une requête utilisateur. Vous pouvez désactiver ce comportement en :- Définissant
disable_parallel_tool_use=true
lorsque le type tool_choice estauto
, ce qui garantit que Claude utilise au plus un outil - Définissant
disable_parallel_tool_use=true
lorsque le type tool_choice estany
outool
, ce qui garantit que Claude utilise exactement un outil
Exemple complet d'utilisation d'outils en parallèle
Exemple complet d'utilisation d'outils en parallèle
Voici un exemple complet montrant comment formater correctement les appels d’outils en parallèle dans l’historique des messages :Le message assistant avec des appels d’outils en parallèle ressemblerait à ceci :
Script de test complet pour les outils en parallèle
Script de test complet pour les outils en parallèle
Voici un script complet et exécutable pour tester et vérifier que les appels d’outils en parallèle fonctionnent correctement :Ce script démontre :
- Comment formater correctement les appels d’outils en parallèle et les résultats
- Comment vérifier que les appels en parallèle sont effectués
- La structure de message correcte qui encourage une future utilisation d’outils en parallèle
- Les erreurs courantes à éviter (comme du texte avant les résultats d’outils)
Maximiser l’utilisation d’outils en parallèle
Bien que les modèles Claude 4 aient d’excellentes capacités d’utilisation d’outils en parallèle par défaut, vous pouvez augmenter la probabilité d’exécution d’outils en parallèle sur tous les modèles avec un prompting ciblé :Prompts système pour l'utilisation d'outils en parallèle
Prompts système pour l'utilisation d'outils en parallèle
Pour les modèles Claude 4 (Opus 4.1, Opus 4 et Sonnet 4), ajoutez ceci à votre prompt système :Pour une utilisation d’outils en parallèle encore plus forte (recommandée si la valeur par défaut n’est pas suffisante), utilisez :
Prompting de message utilisateur
Prompting de message utilisateur
Vous pouvez également encourager l’utilisation d’outils en parallèle dans des messages utilisateur spécifiques :
Utilisation d’outils en parallèle avec Claude Sonnet 3.7Claude Sonnet 3.7 peut être moins susceptible de faire des appels d’outils en parallèle dans une réponse, même lorsque vous n’avez pas défini
disable_parallel_tool_use
. Pour contourner cela, nous recommandons d’activer l’utilisation d’outils efficace en tokens, qui aide à encourager Claude à utiliser des outils en parallèle. Cette fonctionnalité bêta réduit également la latence et économise en moyenne 14% en tokens de sortie.Si vous préférez ne pas opter pour la bêta d’utilisation d’outils efficace en tokens, vous pouvez également introduire un “outil batch” qui peut agir comme un méta-outil pour envelopper les invocations à d’autres outils simultanément. Nous trouvons que si cet outil est présent, le modèle l’utilisera pour appeler simultanément plusieurs outils en parallèle pour vous.Voir cet exemple dans notre cookbook pour savoir comment utiliser cette solution de contournement.Gérer les blocs de contenu d’utilisation d’outils et de résultats d’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 unstop_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 d’outils plus tard.name
: Le nom de l’outil utilisé.input
: Un objet contenant l’entrée passée à l’outil, conforme auinput_schema
de l’outil.
Exemple de réponse API avec un bloc de contenu `tool_use`
Exemple de réponse API avec un bloc de contenu `tool_use`
JSON
- Extraire le
name
,id
etinput
du bloctool_use
. - Exécuter l’outil réel dans votre base de code correspondant à ce nom d’outil, en passant l’
input
de l’outil. - Continuer la conversation en envoyant un nouveau message avec le
role
deuser
, et un bloccontent
contenant le typetool_result
et les informations suivantes :tool_use_id
: L’id
de la requête d’utilisation d’outil pour laquelle c’est un résultat.content
: Le résultat de l’outil, sous forme de chaîne (par exemple"content": "15 degrés"
), une liste de blocs de contenu imbriqués (par exemple"content": [{"type": "text", "text": "15 degrés"}]
), ou une liste de blocs de document (par exemple"content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrés"}]
). Ces blocs de contenu peuvent utiliser les typestext
,image
oudocument
.is_error
(optionnel) : Définir àtrue
si l’exécution de l’outil a résulté en une erreur.
Exigences de formatage importantes :Ceci est correct :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.
- 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 d’outils, les blocs tool_result doivent venir EN PREMIER dans le tableau de contenu. Tout texte doit venir APRÈS tous les résultats d’outils.
Exemple de résultat d'outil réussi
Exemple de résultat d'outil réussi
JSON
Exemple de résultat d'outil avec images
Exemple de résultat d'outil avec images
JSON
Exemple de résultat d'outil vide
Exemple de résultat d'outil vide
JSON
Exemple de résultat d'outil avec documents
Exemple de résultat d'outil avec documents
JSON
Gérer les résultats des outils serveur
Claude exécute l’outil en interne et incorpore les résultats directement dans sa réponse sans nécessiter d’interaction utilisateur supplémentaire.Différences par rapport aux autres APIsContrairement aux APIs qui séparent l’utilisation d’outils ou utilisent des rôles spéciaux comme
tool
ou function
, l’API d’Anthropic intègre les outils directement dans la structure de 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 la raison d’arrêt max_tokens
Si la réponse de Claude est coupée en raison d’avoir atteint la limite max_tokens
, et que la réponse tronquée contient un bloc d’utilisation d’outil incomplet, vous devrez réessayer la requête avec une valeur max_tokens
plus élevée pour obtenir l’utilisation d’outil complète.
Gérer la raison d’arrêt pause_turn
Lors de l’utilisation d’outils serveur comme la recherche web, l’API peut retourner une raison d’arrêt pause_turn
, indiquant que l’API a mis en pause un tour de longue durée.
Voici comment gérer la raison d’arrêt pause_turn
:
pause_turn
:
- Continuer la conversation : Passez la réponse en pause telle quelle dans une requête subséquente pour laisser Claude continuer son tour
- Modifier si nécessaire : Vous pouvez optionnellement modifier le contenu avant de continuer si vous voulez interrompre ou rediriger la conversation
- Préserver l’état des outils : Incluez les mêmes outils dans la requête de continuation pour maintenir la fonctionnalité
Dépannage des erreurs
Il existe quelques types d’erreurs différents qui peuvent survenir lors de l’utilisation d’outils avec Claude :Erreur d'exécution d'outil
Erreur d'exécution d'outil
Si l’outil lui-même lève une erreur pendant l’exécution (par exemple une erreur réseau lors de la récupération de données météo), vous pouvez retourner le message d’erreur dans le Claude incorporera alors cette erreur dans sa réponse à l’utilisateur, par exemple “Je suis désolé, je n’ai pas pu récupérer la météo actuelle car l’API du service météo n’est pas disponible. Veuillez réessayer plus tard.”
content
avec "is_error": true
:JSON
Nom d'outil invalide
Nom d'outil invalide
Si la tentative d’utilisation d’un outil par Claude est invalide (par exemple paramètres requis manquants), cela signifie généralement qu’il n’y avait pas assez d’informations pour que Claude utilise l’outil correctement. Votre meilleur pari pendant le développement est d’essayer la requête à nouveau avec des valeurs Si une requête d’outil est invalide ou manque de paramètres, Claude réessaiera 2-3 fois avec des corrections avant de s’excuser auprès de l’utilisateur.
description
plus détaillées dans vos définitions d’outils.Cependant, vous pouvez aussi continuer la conversation avec un tool_result
qui indique l’erreur, et Claude essaiera d’utiliser l’outil à nouveau avec les informations manquantes remplies :JSON
Balises <search_quality_reflection>
Balises <search_quality_reflection>
Pour empêcher Claude de réfléchir sur la qualité de la recherche avec des balises <search_quality_reflection>, ajoutez “Ne réfléchissez pas sur la qualité des résultats de recherche retournés dans votre réponse” à votre prompt.
Erreurs d'outils serveur
Erreurs d'outils serveur
Lorsque les outils serveur rencontrent des erreurs (par exemple, problèmes réseau avec la Recherche Web), Claude gérera de manière transparente ces erreurs et tentera de fournir une réponse alternative ou une explication à l’utilisateur. Contrairement aux outils clients, vous n’avez pas besoin de gérer les résultats
is_error
pour les outils serveur.Pour la recherche web spécifiquement, les codes d’erreur possibles incluent :too_many_requests
: Limite de taux dépasséeinvalid_input
: Paramètre de requête de recherche invalidemax_uses_exceeded
: Utilisations maximales de l’outil de recherche web dépasséesquery_too_long
: La requête dépasse la longueur maximaleunavailable
: Une erreur interne s’est produite
Les appels d'outils en parallèle ne fonctionnent pas
Les appels d'outils en parallèle ne fonctionnent pas
Si Claude ne fait pas d’appels d’outils en parallèle quand attendu, vérifiez ces problèmes courants :1. Formatage incorrect des résultats d’outilsLe problème le plus courant est de formater incorrectement les résultats d’outils dans l’historique de conversation. Cela “apprend” à Claude à éviter les appels en parallèle.Spécifiquement pour l’utilisation d’outils en parallèle :Voir les exigences de formatage générales ci-dessus pour d’autres règles de formatage.2. Prompting faibleLe prompting par défaut peut ne pas être suffisant. Utilisez un langage plus fort :3. Mesurer l’utilisation d’outils en parallèlePour vérifier que les appels d’outils en parallèle fonctionnent :4. Comportement spécifique au modèle
- ❌ Incorrect : Envoyer des messages utilisateur séparés pour chaque résultat d’outil
- ✅ Correct : Tous les résultats d’outils doivent être dans un seul message utilisateur
- Claude Opus 4.1, Opus 4 et Sonnet 4 : Excellent en utilisation d’outils en parallèle avec un prompting minimal
- Claude Sonnet 3.7 : Peut nécessiter un prompting plus fort ou l’utilisation d’outils efficace en tokens
- Claude Haiku : Moins susceptible d’utiliser des outils en parallèle sans prompting explicite