Start → Hilfe

400, wenn man bei einem Reasoning-Modell einen Tool-Aufruf erzwingt

Setzen Sie tool_choice auf auto und sagen Sie im Prompt, wann das Tool passt. Bei Modellen mit immer aktivem Reasoning müsste ein erzwungener Tool-Aufruf das Nachdenken überspringen – also lehnt die API die Anfrage ab, statt das Modell stillschweigend zu verschlechtern.

Was Sie sehen

Warum das passiert

Einen Tool-Aufruf zu erzwingen ist ein vernünftiger Wunsch. So garantieren viele Frameworks strukturierte Ausgabe: ein Tool definieren, erzwingen, Argumente parsen. Dieser Trick funktioniert bei Modellen, die vor jeder Antwort nachdenken, nicht mehr, weil der erzwungene Weg genau den Schritt überspringt, für den Sie bezahlen.

Die Ablehnung ist besser als die Alternative. Eine API, die den Parameter annimmt und ignoriert, ließe Sie glauben, Sie hätten das Modell eingeschränkt, obwohl das nicht stimmt – ein Fehler, der viel später im Betrieb als gelegentlich unparsbare Ausgabe auftaucht.

Dieselben Modelle lehnen meist auch abweichende Werte für temperature, top_p und top_k ab und unterstützen kein Vorbefüllen der Assistant-Antwort. Code, der von einem älteren Modell derselben Familie übernommen wurde, stößt auf mehrere davon gleichzeitig – deshalb sieht es eher nach einem Authentifizierungs- oder Endpunktproblem aus als nach einem Parameterproblem.

Prüfen, ob es daran liegt

Senden Sie dieselbe Anfrage zweimal und ändern Sie nur 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

Liefert auto ein 200 und any ein 400, unterstützt das Modell kein erzwungenes Tool. An Ihrem Schlüssel oder Endpunkt ist nichts falsch.

So beheben Sie es

  1. tool_choice auf auto lassen und im Prompt deutlich werdenFormulieren Sie die Bedingung klar – „rufe search auf, wenn die Frage aktuelle Informationen braucht“. Reasoning-Modelle befolgen solche Anweisungen gut; genau dafür sind sie da.
  2. Schema-gebundene Antwort statt erzwungenem Tool verwendenHaben Sie ein Tool nur für strukturierte Ausgabe erzwungen, erledigt ein Parameter für Structured Output oder JSON Schema das direkt und wird meist weiterhin unterstützt.
  3. Gleichzeitig temperature prüfenFrameworks setzen eine Standard-Temperatur, die Sie nie gewählt haben. Bei diesen Modellen ist jeder abweichende Wert ein 400 und sieht genauso aus wie der tool_choice-Fehler.
  4. Die Ausgabe prüfen, statt der Einschränkung zu vertrauenSelbst wo Erzwingen funktioniert, liefern Modelle Argumente, die nicht zum Schema passen. Ein Parser mit Ausweichpfad lohnt sich, einmal geschrieben.
Bei APICLAN betrifft das claude-fable-5-1 und claude-fable-5: Erzwungene Tool-Nutzung, abweichende Sampling-Parameter und Assistant-Prefill werden abgelehnt. Der Fable-5.1-Leitfaden enthält die vollständige Liste und die Cache-Preise.

Verwandte Themen

Unexpected token '<' beim Aufruf einer OpenAI-kompatiblen API401 invalid API key – wenn der Schlüssel richtig aussieht und trotzdem scheitert

Zuletzt geprüft am 2026-10-01. Geschrieben aus Problemen, die auf einem laufenden OpenAI-kompatiblen Gateway diagnostiziert wurden – nicht von anderen Seiten zusammengetragen.