tool_choice sur auto et indiquez dans le prompt quand l'outil s'applique. Sur les modèles où le raisonnement est toujours actif, un appel d'outil forcé devrait sauter ce raisonnement, donc l'API refuse la requête plutôt que de dégrader le modèle en silence.400 on requests with tool_choice: {"type":"any"}400 on tool_choice: {"type":"tool","name":"..."}The same request works with tool_choice omittedAn agent framework that worked on one model fails on every call after a swapVouloir forcer un appel d'outil est légitime. C'est ainsi que de nombreux frameworks garantissent une sortie structurée : définir un outil, le forcer, analyser les arguments. Cette astuce cesse de fonctionner sur les modèles qui raisonnent avant chaque réponse, car le chemin forcé contourne justement l'étape pour laquelle vous payez.
Le refus vaut mieux que l'alternative. Une API qui accepterait le paramètre et l'ignorerait vous laisserait croire que vous avez contraint le modèle alors que non : un bug qui apparaît bien plus tard, en production, sous forme de sorties occasionnellement impossibles à analyser.
Ces mêmes modèles refusent généralement les valeurs non par défaut de temperature, top_p et top_k, et ne prennent pas en charge le pré-remplissage du tour de l'assistant. Du code porté depuis un modèle plus ancien de la même famille se heurte à plusieurs de ces points à la fois, ce qui le fait ressembler à un problème d'authentification ou d'endpoint plutôt qu'à un problème de paramètres.
Envoyez la même requête deux fois en ne changeant que tool_choice :
for CHOICE in '{"type":"auto"}' '{"type":"any"}'; do
echo -n "$CHOICE -> "
curl -s -o /dev/null -w '%{http_code}\n' \
'YOUR_BASE_URL/chat/completions' \
-H 'Authorization: Bearer YOUR_KEY' \
-H 'Content-Type: application/json' \
-d "{\"model\":\"YOUR_MODEL\",\"max_tokens\":16,
\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],
\"tool_choice\":$CHOICE}"
done
Si auto renvoie 200 et any renvoie 400, le modèle ne prend pas en charge l'utilisation forcée d'outils. Rien n'est en cause dans votre clé ou votre endpoint.
claude-fable-5-1 et claude-fable-5 : l'utilisation forcée d'outils, les paramètres d'échantillonnage non par défaut et le pré-remplissage de l'assistant sont tous refusés. Le guide Fable 5.1 donne la liste complète ainsi que ses tarifs de cache.Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.