AI Sözlüğü
Başlangıç· ~2 dk okuma#max_tokens#output#inference

max_tokens

Çıktı uzunluğu sınırı

Modelin tek bir cevap için üretebileceği maksimum token sayısı. Hem maliyet hem latency'yi doğrudan etkiler.

ÇIKTI TAVANI — MODEL BURADA DURURmax_tokens = 8Yapayzekâmodellerimilyarlarcaparametreyleeğitilirvebuparametrelerheryenitoken✂ kesimfinish_reason: "length"cevap yarıda kaldı — cap'i artır ya da prompt'ta kısaltinput + max_tokens ≤ context_window — bu eşitsizliği kontrol et
Tanım

Her LLM çağrısında çıktıyı sınırlamak için bir tavan belirlersin: max_tokens (OpenAI), max_output_tokens (Anthropic), num_predict (Ollama), -n (llama.cpp). Model bu sayıya ulaşırsa cümlenin ortasında bile keser — daima net bir tavan olduğu için fatura öngörülebilir ve timeout riski azalır.

max_tokens çıktıdaki sadece üretilen token'ları sayar. Input token'lar bu limite girmez ama context window'a girer. Yani: input + max_tokens ≤ context_window. Bu eşitsizliği kontrol etmek senin sorumluluğun; aşarsan çoğu API hata verir.

Reasoning modellerde (o1, Claude reasoning) max_tokens görünmeyen "thinking" token'larını da kapsar. 1000 max_tokens ile 8000 thinking isteyen sorguda model erken kesilir.

Benzetme

Sınavda "cevabını maksimum 200 kelime ile yaz" demek. Öğrenci 200'e ulaşırsa cümlesi ortada da kalsa durur. Sınırı koymak öğretmenin okuma süresini öngörülebilir kılar — ama çok kısa koyarsan eksik cevap alırsın. max_tokens da öyle: maliyet/süre koruması, ama cımbız gibi keser.

Gerçek dünyadan örnek

Bir özetleme servisi. Her isteğe max_tokens=200 koyuyorsun.

Sorun: bazı uzun belgelerde 200 token özet cümle ortasında bitiyor ("Sözleşme şartları temel olarak 5 maddede toplanır:"). Çözüm: 1. max_tokens=400 (güvenli pay) 2. Prompt'a "max 5 madde, her madde 1 cümle" yaz — model kendi sınırlar. 3. finish_reason kontrol et: "length" ise → kullanıcıya "devam ettir?" göster, "stop" ise → tamam.

Maliyet hesabı: 100K istek/gün × 200 max_tokens × $0.6/1M = $12/gün × 30 = $360/ay. max_tokens=400'e çıkarsan $720. Tavan iki katına çıkar mı? Kullanıcı senaryona bağlı.

Ne zaman kullan
  • Her production API çağrısında — fatura ve timeout güvenliği
  • Streaming UI — ne kadar okuyacağımızı önden bilmek için
  • Yapılandırılmış çıktı (JSON, yes/no) — kısa tutmak yeter
  • Reasoning modellerinde thinking token'larını da hesaba katarak büyük tutmak
Ne zaman kullanma
  • Bilinçsizce çok küçük tutmak — cevap yarıda kalır
  • Bilinçsizce devasa (100K) — context'in çoğunu output'a ayırma riski
  • max_tokens'e güvenip prompt'ta uzunluk söylememek — model uzun yazma eğiliminde
Sık yapılan hatalar

finish_reason kontrolü unutmak

Model max_tokens'e ulaşırsa finish_reason: 'length' döner. Bunu kontrol etmezsen cevabın yarım olduğunu anlamayan kullanıcı hatalı bilgi alır. Daima kontrol et + UI'da uyar.

Reasoning modeller için yetersiz tavan

o1/Claude-reasoning'de görünmeyen düşünme token'ları max_tokens'e dahil. 500 max_tokens koyup 'cevap çok kısa geldi' deme. 4000-8000 koy.

Context window'u doldurma

128K context'in 100K'sı input, sadece 28K çıktıya kalır. max_tokens=50K istersen API hata verir. input + max_tokens ≤ context şart.