content is "" but the request returned 200finish_reason: "length" on a short promptUsage shows output tokens spent with nothing to show for themThe same prompt works on a non-reasoning modelRaising max_tokens suddenly makes it workReasoning-Modelle erzeugen zwei Arten von Output-Tokens: die interne Kette und die Antwort, die Sie sehen. Abgerechnet wird beides. max_tokens begrenzt beides. Ein Wert, der für ein Modell ohne Reasoning großzügig war, kann vor dem ersten sichtbaren Zeichen komplett aufgebraucht sein.
Der Fehler ist bauartbedingt leise. Die API hat getan, was man ihr sagte: Sie hat bis zum Limit generiert und dann aufgehört. finish_reason: "length" ist der einzige Hinweis, und der fällt leicht unter den Tisch, wenn Ihr Code choices[0].message.content liest und einen harmlosen leeren String findet.
Uns ist das bei einem internen Tool zur Dokumentbewertung passiert. max_tokens stand auf 2500 – für das vorige Modell in Ordnung, aber bei weitem nicht genug, sobald das Modell zuerst nachdachte. Eine Zeit lang sah es nach einem kaputten Proxy aus, denn die Anfragen waren erfolgreich, die Latenz normal und die Kosten real. Verraten hat es die Rechnung: Abbuchungen ohne passenden Text.
Schauen Sie auf finish_reason und die Token-Zahlen, nicht nur auf den Inhalt:
curl -s 'YOUR_BASE_URL/chat/completions' \
-H 'Authorization: Bearer YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"model":"YOUR_MODEL","max_tokens":64,
"messages":[{"role":"user","content":"What is 17 * 23? Answer with the number only."}]}' \
| python3 -m json.tool
"finish_reason": "length" zusammen mit leerem content und einer Output-Token-Zahl über null ist das Erkennungszeichen. Wiederholen Sie es mit max_tokens auf 4000, und derselbe Prompt liefert eine Antwort.
Zuletzt geprüft am 2026-10-01. Geschrieben aus Problemen, die auf einem laufenden OpenAI-kompatiblen Gateway diagnostiziert wurden – nicht von anderen Seiten zusammengetragen.