Claude Platform Docs
MessagesOutils

Dépannage de l'utilisation d'outils

Corrigez les erreurs d'utilisation d'outils les plus courantes grâce à des tableaux de diagnostic symptôme-correctif.

Tableaux symptôme-correctif pour les erreurs d'utilisation d'outils (« tool use ») les plus courantes. Chaque correctif renvoie à la page qui traite de la fonctionnalité concernée.

Claude appelle le mauvais outil

SymptômeCause probableCorrectif
Claude appelle l'outil A alors que vous vouliez l'outil BAmbiguïté de la descriptionAffinez les descriptions. Différenciez les outils selon QUAND les utiliser, et pas seulement selon CE qu'ils font. Consultez Définir des outils.
Claude n'appelle jamais votre outilCollision de noms d'outils ou schéma trop génériqueVérifiez l'absence de noms en double dans votre liste d'outils. Ajoutez input_examples pour rendre l'usage prévu concret.
Claude appelle avec des types de paramètres incorrectsLe modèle devine face à un schéma ambiguAjoutez strict: true (si votre schéma fait partie du sous-ensemble pris en charge) ou ajoutez input_examples.

Claude invente des paramètres d'outil

SymptômeCause probableCorrectif
Paramètre qui n'existe pas dans votre schémaSurgénération du modèle sans mode strictAjoutez strict: true si votre schéma fait partie du sous-ensemble pris en charge.
Valeurs de paramètres en dehors de votre enumMode strict absent ou enum trop grandRéduisez l'enum ou ajoutez input_examples montrant les choix valides.

Les appels d'outils parallèles ne fonctionnent pas

SymptômeCause probableCorrectif
Claude appelle les outils séquentiellement alors que le parallélisme serait préférableFormatage de l'historique des messagesEnvoyez plusieurs blocs tool_result dans UN SEUL message utilisateur, et non un par tour. Consultez Utilisation d'outils en parallèle.
disable_parallel_tool_use semble ignoréDéfini trop tard dans la conversationDoit être défini sur la requête qui renvoie tool_use. Le définir sur une requête ultérieure n'a aucun effet sur les appels d'outils antérieurs.

Le cache ne cesse de s'invalider

SymptômeCause probableCorrectif
Chaque requête est un échec de cachetool_choice, la configuration de réflexion ou output_config.effort varient d'une requête à l'autreGardez tool_choice stable ou placez le point d'arrêt cache_control avant le point de variation ; maintenez la configuration de réflexion et le niveau d'effort constants pendant toute la durée d'une conversation mise en cache. Consultez Utilisation d'outils avec la mise en cache des prompts et Réflexion et mise en cache des prompts.
L'ajout d'un outil en cours de conversation casse le cacheOutil ajouté en tête du tableau des outilsUtilisez defer_loading: true avec la recherche d'outils pour ajouter l'outil en ligne au lieu de modifier la tête du tableau.

Erreurs au moment de la requête

ErreurCauseCorrectif
tool_use ids were found without tool_result blocks immediately aftertool_result manquant pour certains identifiants tool_use, ou tool_result n'est pas le premier bloc de contenu du message utilisateurRenvoyez un tool_result pour chaque bloc tool_use de la réponse de l'assistant. Placez les blocs tool_result avant tout texte. Consultez Gérer les appels d'outils et Utilisation d'outils en parallèle.
was found without a corresponding <name>_tool_result blockLe tour précédent de l'assistant contient un bloc server_tool_use sans bloc de résultat (le plus souvent, Claude l'a appelé en même temps qu'un outil client), et soit votre message utilisateur suivant a mis fin à ce tour (par exemple, avec du texte après les blocs tool_result), soit la requête de reprise ne définit plus cet outil serveur (le message se termine alors par but no <name> tool was provided)Envoyez un message utilisateur contenant uniquement les blocs tool_result pour les identifiants tool_use client et conservez le même tableau tools. Consultez Raisons d'arrêt et solution de repli.
Unsupported regex feature in pattern field: ...Un pattern dans l'input_schema d'un outil strict utilise une fonctionnalité d'expression régulière que le mode strict ne peut pas compiler, comme une référence arrière, une assertion avant/arrière (lookaround), une limite de mot ou une grande plage {n,m}Simplifiez le motif. Les motifs ancrés avec des quantificateurs de base, des classes de caractères et des groupes sont pris en charge ; consultez Limitations de JSON Schema.
All tools have defer_loading: trueAucun outil visible pour le modèleAu moins un outil doit être chargé immédiatement. L'outil de recherche d'outils lui-même ne doit jamais avoir defer_loading: true.

Erreur : les blocs de réflexion ne peuvent pas être modifiés

Si une requête échoue avec une erreur 400 invalid_request_error dont le message contient `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified lors de la poursuite d'une conversation après un appel d'outil, votre application modifie les blocs de réflexion de l'assistant avant de les renvoyer. Renvoyez l'intégralité du message de l'assistant sans modification, puis ajoutez votre tool_result.

Consultez Les blocs de réflexion ne peuvent pas être modifiés pour l'erreur complète et les étapes de correction.

Claude signale les résultats d'outils comme une injection de prompt

SymptômeCause probableCorrectif
Claude refuse d'agir sur un résultat d'outil, ou demande à l'utilisateur de confirmer des instructions qui en proviennentVos propres instructions sont transmises à l'intérieur du contenu tool_resultClaude est entraîné à traiter les instructions contenues dans les résultats d'outils comme du contenu tiers potentiellement non fiable. Sortez vos instructions du résultat d'outil : envoyez-les dans un tour user après le bloc tool_result, ou, sur les modèles pris en charge, dans un message système en cours de conversation. Limitez le résultat d'outil aux seules données. Consultez Atténuer les jailbreaks et les injections de prompt.

Différences d'échappement JSON (Opus 4.6+)

SymptômeCauseCorrectif
La comparaison de chaînes sur les entrées d'outils échoue avec les modèles plus récentsL'échappement Unicode et des barres obliques diffère selon les versions de modèleAnalysez avec json.loads() ou JSON.parse(). N'effectuez jamais de correspondance de chaînes brutes sur une entrée sérialisée.

Étapes suivantes

Rédigez des schémas et des descriptions qui orientent Claude vers le bon outil.

Exécutez les outils et renvoyez les résultats dans le format de message requis.

Répertoire complet des outils fournis par Anthropic et de leurs chaînes de version.

Was this page helpful?