tools
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
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”.tools
, 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 :
Exemple d'une bonne description d'outil
Exemple de mauvaise description d'outil
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.
tool_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 des tools
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’aucun tools
n’est fourni.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é.
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.
record_summary
avec un schéma particulier. Voir Utilisation d’outils avec Claude pour un exemple complet fonctionnel.
tool_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 :
disable_parallel_tool_use=true
lorsque le type tool_choice est auto
, ce qui garantit que Claude utilise au plus un outildisable_parallel_tool_use=true
lorsque le type tool_choice est any
ou tool
, ce qui garantit que Claude utilise exactement un outilExemple complet d'utilisation d'outils en parallèle
Script de test complet pour les outils en parallèle
Prompts système pour l'utilisation d'outils en parallèle
Prompting de message utilisateur
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.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 d’outils plus tard.name
: Le nom de l’outil utilisé.input
: Un objet contenant l’entrée passée à l’outil, conforme au input_schema
de l’outil.Exemple de réponse API avec un bloc de contenu `tool_use`
name
, id
et input
du bloc tool_use
.input
de l’outil.role
de user
, et un bloc content
contenant le type tool_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 types text
, image
ou document
.is_error
(optionnel) : Définir à true
si l’exécution de l’outil a résulté en une erreur.Exemple de résultat d'outil réussi
Exemple de résultat d'outil avec images
Exemple de résultat d'outil vide
Exemple de résultat d'outil avec documents
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
.max_tokens
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.
pause_turn
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
:
Erreur d'exécution d'outil
content
avec "is_error": true
:Nom d'outil invalide
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 :Balises <search_quality_reflection>
Erreurs d'outils serveur
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 produiteLes appels d'outils en parallèle ne fonctionnent pas