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 modelleri iki tür çıktı token'ı üretir: iç zincir ve sizin gördüğünüz cevap. Faturalama ikisini de sayar. max_tokens ikisini de sınırlar. Reasoning olmayan bir model için cömert olan bir değer, ilk görünür karakterden önce tamamen tükenebilir.
Hata tasarım gereği sessizdir. API kendisine söyleneni yaptı: sınıra kadar üretti, sonra durdu. Tek ipucu finish_reason: "length"'tir ve kodunuz choices[0].message.content değerini okuyup zararsız bir boş dize bulduğunda gözden kaçması kolaydır.
Bunu dahili bir belge puanlama aracında yaşadık. max_tokens 2500'e ayarlıydı – önceki model için yeterliydi, model önce düşünmeye başlayınca yetmekten çok uzaktı. Bir süre bozuk bir proxy gibi göründü, çünkü istekler başarılıydı, gecikme normaldi ve maliyet gerçekti. Ele veren fatura oldu: karşılığında hiç metin olmayan ücretler.
Yalnızca içeriğe değil, finish_reason'a ve token sayılarına bakın:
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
Boş bir content ve sıfırdan büyük çıktı token sayısıyla birlikte "finish_reason": "length" bu durumun imzasıdır. max_tokens 4000 olacak şekilde tekrar çalıştırın, aynı istem cevap verecektir.
Son kontrol: 2026-10-01. Canlı bir OpenAI uyumlu ağ geçidinde teşhis edilen sorunlardan yazılmıştır, başka sitelerden derlenmemiştir.