Tableaux symptôme-solution pour les erreurs d'utilisation d'outils (tool use) les plus courantes. Chaque solution renvoie à la page qui décrit la fonctionnalité concernée.
| Symptôme | Cause probable | Solution |
|---|---|---|
| Claude appelle l'outil A alors que vous vouliez l'outil B | Ambiguïté des descriptions | Affinez les descriptions. Différenciez les outils par QUAND les utiliser, pas seulement par CE qu'ils font. Consultez Définir des outils. |
| Claude n'appelle jamais votre outil | Collision de noms d'outils ou schéma trop générique | Vérifiez l'absence de noms en double dans votre liste d'outils. Ajoutez input_examples pour rendre l'utilisation prévue concrète. |
| Claude appelle avec de mauvais types de paramètres | Le modèle devine face à un schéma ambigu | Ajoutez strict: true (si votre schéma fait partie du sous-ensemble pris en charge) ou ajoutez input_examples. |
| Symptôme | Cause probable | Solution |
|---|---|---|
| Paramètre qui n'existe pas dans votre schéma | Sur-génération du modèle sans mode strict | Ajoutez strict: true si votre schéma fait partie du sous-ensemble pris en charge. |
| Valeurs de paramètres en dehors de votre enum | Mode strict manquant ou enum trop grand | Réduisez l'enum ou ajoutez input_examples montrant les choix valides. |
| Symptôme | Cause probable | Solution |
|---|---|---|
| Claude appelle les outils séquentiellement alors que le parallèle serait préférable | Formatage de l'historique des messages | Envoyez plusieurs blocs tool_result dans UN SEUL message utilisateur, pas un par tour. Consultez Utilisation d'outils en parallèle. |
disable_parallel_tool_use semble ignoré | Défini trop tard dans la conversation | Doit ê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. |
| Symptôme | Cause probable | Solution |
|---|---|---|
| Chaque requête est un échec de cache (cache miss) | tool_choice, la configuration de réflexion ou output_config.effort varient entre les requêtes | Gardez 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 cache | Outil ajouté en tête du tableau d'outils | Utilisez defer_loading: true avec la recherche d'outils pour ajouter l'outil en ligne au lieu de modifier le début du tableau. |
| Erreur | Cause | Solution |
|---|---|---|
tool_use ids were found without tool_result blocks immediately after | tool_result manquant pour certains ids tool_use, ou tool_result n'est pas le premier bloc de contenu du message utilisateur | Renvoyez 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 block | Le 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 terminé 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 ids tool_use des outils clients et conservez le même tableau tools. Consultez Raisons d'arrêt et solutions de repli. |
Input schema is not compatible with strict mode: string patterns are not supported | Utilisation de pattern avec strict: true | Supprimez le pattern ou retirez strict: true. Le mot-clé pattern ne fait pas encore partie du sous-ensemble JSON Schema pris en charge. |
All tools have defer_loading: true | Aucun outil visible pour le modèle | Au moins un outil doit être chargé immédiatement. L'outil de recherche d'outils lui-même ne doit jamais avoir defer_loading: true. |
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.
| Symptôme | Cause probable | Solution |
|---|---|---|
| Claude refuse d'agir sur un résultat d'outil, ou demande à l'utilisateur de confirmer des instructions qui en proviennent | Vos propres instructions sont transmises à l'intérieur du contenu tool_result | Claude est entraîné à traiter les instructions à l'intérieur des résultats d'outils comme du contenu tiers potentiellement non fiable. Déplacez vos instructions hors 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. |
| Symptôme | Cause | Solution |
|---|---|---|
| La comparaison de chaînes sur les entrées d'outils échoue avec les modèles plus récents | L'échappement Unicode et des barres obliques diffère entre les versions de modèles | Analysez avec json.loads() ou JSON.parse(). Ne faites jamais de correspondance de chaînes brutes sur l'entrée sérialisée. |
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 au schéma Anthropic et de leurs chaînes de version.
Was this page helpful?