Yeni başlayanlar için AIKılavuz
Bir AI yanıtı neden cümle ortasında durur? max_tokens, bağlam penceresi ve finish_reason açıklandı
Cümle ortasında duran bir AI yanıtı bir sınıra ulaşmıştır. finish_reason alanını okuyun, max_tokens ile dolu bir bağlam penceresini ayırt edin ve her modelin çıktı sınırını kontrol edin.

Bu sayfada
Cümle ortasında kesilen bir yanıt neredeyse her zaman bir sınır tarafından kesilmiştir. Model düşünce akışını kaybetmedi; istek için yer kalmadı. Yanıt hangi sınır olduğunu söyler: finish_reason alanını okuyun. length bir sınıra ulaşıldığı anlamına gelir. stop modelin kendi kendine bitirdiği anlamına gelir.
Bir yanıtın ne kadar uzun olabileceğine üç şey karar verir. Hangisinin sizi etkilediğini bildiğinizde düzeltme bir dakika sürer.
Bir yanıtı kesen üç sınır#
max_tokensistekte sizin belirlediğiniz bir üst sınırdır. Yanıt buna ulaştığında, kelimenin ortasında bile olsa üretim durur. DeepSeek'in API referansı bunu tamamlamada üretilen maksimum token sayısı olarak tanımlar.- Modelin çıktı sınırı o modelden tek bir yanıt için üst sınırdır. Modele ait olduğundan
max_tokensdeğerini bu sınırda veya altında tutun. Modellerimizin sayıları aşağıdaki tabloda. - Bağlam penceresi tüm alışveriş için ayrılan yerdir: girdiniz ve yanıt birlikte. DeepSeek'in referansı, girdi ve üretilen token'ların birlikte modelin bağlam uzunluğuyla sınırlandığını söyler.
Token hâlâ belirsiz bir kavramsa, What is a token in AI? ile başlayın. Bu sayfa ne olduğunu bildiğinizi varsayar.
Önce finish_reason alanını okuyun#
Bir sohbet yanıtındaki her seçim bir finish_reason taşır. Yanında usage kaç token girdiğini ve çıktığını söyler.
Kesilmiş bir yanıtın tamamlanmış bir yanıtın yanında nasıl göründüğü aşağıda. İstek "In one short sentence, what is a token?" diye sordu, önce max_tokens 16 olarak, sonra 200 olarak ayarlandı.
Örnek amaçlı, kaydedilmiş bir yanıt değil: sayılarınız ve ek alanlarınız farklı olacaktır.
{
"choices": [
{
"message": { "role": "assistant", "content": "A token is a small piece of text that a model reads and writes, usu" },
"finish_reason": "length"
}
],
"usage": { "prompt_tokens": 21, "completion_tokens": 16, "total_tokens": 37 }
}{
"choices": [
{
"message": { "role": "assistant", "content": "A token is a small piece of text that a model reads and writes, usually a word or part of a word." },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 21, "completion_tokens": 24, "total_tokens": 45 }
}İlk yanıtta completion_ 16, tam olarak üst sınır ve metin "usu" ile bitiyor. İkincisinde model 24 token'da durdu, 200'lük üst sınırın çok altında, çünkü işi bitmişti.
Ne olduğunu anlamak için şu sırayla ilerleyin:
finish_reasonalanına bakın.stopise yanıt tamamdır. Model bitirmeyi seçti ya da sizin belirlediğiniz bir durdurma dizisine ulaştı.lengthise bir sınır yanıtı kesti ve sonraki adım hangisi olduğunu söyler.content_filtervetool_callsgibi başka değerler de vardır; ikisi de uzunluk sorunu değildir.completion_değerini gönderdiğiniztokens max_tokensile karşılaştırın. Eşit veya neredeyse eşitsemax_tokenssınırına ulaştınız.completion_değeritokens max_tokensdeğerinin çok altındaysa veprompt_tokensbüyükse, bağlam penceresi büyük olasılıkla dolmuştur. DeepSeek'in referansı her iki durum için delengthkullanır, bu yüzden alan tek başına bunları ayıramaz; 2. adımdaki karşılaştırma ayırt etme yolunuzdur. Anthropic'in ve Z.ai'nin belgeleri ikinci durumu ayrı olarakmodel_diye adlandırır. Hangi adı aldığınızı görmek için kendi yanıtlarınızdaki alana bakın.context_ window_ exceeded
Üç açıklamanın tümü geliştiricilerin belgelerinden alınmıştır, 20 Ekim 2026'da kontrol edildi: DeepSeek, Anthropic ve Z.ai.
Tabloyu sağa kaydırın →
| Gördüğünüz | finish_reason |
Neden | Ne yapmalı |
|---|---|---|---|
Kesildi, completion_ max_tokens değerine eşit |
length |
max_tokens sınırına ulaşıldı |
max_tokens değerini artırın ya da yanıtı parçalar halinde isteyin |
Kesildi, completion_ max_tokens değerinin çok altında, uzun girdi |
length (bazı API'lerde model_) |
Bağlam penceresi dolu | Girdiyi veya geçmişi kısaltın ya da daha büyük pencereli bir model seçin |
| Tamamlandı ama istediğinizden kısa | stop |
Model bitirdi ya da bir durdurma dizisi tetiklendi | Daha fazla ayrıntı isteyin; stop parametresini kontrol edin |
| Metin yok ya da bir ret | content_filter |
Yanıt filtrelendi | İsteği yeniden ifade edin |
| Metin yok, onun yerine bir araç isteği | tool_calls |
Model bir araç çağırmak istiyor | Aracı çalıştırın ve sonucu geri gönderin |
Düzeltme 1: max_tokens değerini artırın#
En yaygın neden aynı zamanda düzeltmesi en kolay olanıdır. max_tokens değerini kendiniz ayarlayın, böylece hangi üst sınırın geçerli olduğunu bilirsiniz. Varsayılana güvenmeyin.
from openai import OpenAI
client = OpenAI(base_url="https://api.cheaptokens.dev/v1", api_key="YOUR_API_KEY")
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[{"role": "user", "content": "Write a detailed guide to setting up a home network."}],
max_tokens=16000, # example value: stay at or below the model's output limit
)
choice = resp.choices[0]
print(choice.finish_reason, resp.usage.completion_tokens)Bu, çağrının şeklini gösterir. Anahtar burada YOUR_API_KEY olarak girilir; gerçek bir anahtarı paylaştığınız koddan uzak tutun.
Sayıyı artırmak yalnızca modelin kendi sınırına kadar yardımcı olur. CheapTokens üzerindeki sınırlar aşağıda, 20 Ekim 2026'da CheapTokens model listesine göre kontrol edildi:
Tabloyu sağa kaydırın →
| Model | Model ID | Yanıt başına maks. çıktı | Bağlam |
|---|---|---|---|
| DeepSeek-V4-Flash (0731) | deepseek- |
32.768 token | 380K |
| GLM-5.3-Flash | zai- |
8.192 token | 390K |
| MiniMax-M2.7 | MiniMaxAI/ |
8.192 token | 200K |
Geliştiriciler kendi API'leri için kendi sınırlarını yayımlar. Örneğin Z.ai, GLM-5 serisi için 128K'ya kadar çıktı listeler. Bunlar GLM-5.3-Flash'in CheapTokens üzerindeki sınırları değildir, o yanıt başına 8.192 token'dır. CheapTokens üzerinde geliştirdiğiniz her şey için yukarıdaki tabloyu kullanın.
Düzeltme 2: bağlam penceresi dolduğunda#
Bir sohbette tüm geçmiş her mesajla birlikte yeniden gönderilir, bu yüzden girdi her turda büyür. Bağlam penceresi bu geçmişi artı yeni yanıtı tutmalıdır. Geçmiş tek başına neredeyse tamamını kaplıyorsa yanıt için neredeyse hiç yer kalmaz.
Bu pencereler büyüktür ve kısa bir soru onları doldurmaz. Uzun sohbetler ve yapıştırılan belgeler doldurur. Yardımcı olanlar:
- Eski bir sohbeti sürdürmek yerine yeni bir görev için yeni bir sohbet başlatın.
- Modelden şimdiye kadarki konuşmayı özetlemesini isteyin ve yalnızca özeti ileri taşıyın.
- Artık ihtiyaç duymadığınız eski mesajları ve ekleri kesin.
- Girdinin kendisi çok büyükse en büyük pencereli modeli seçin. Bizimkiler arasında bu, 390K ile GLM-5.3-Flash'tir. Çıktı sınırı 8.192 token'dır, bu yüzden uzun bir sonucu parçalar halinde isteyin.
Düzeltme 3: uzun bir yanıtı parçalar halinde alın#
İstediğiniz yanıt modelin çıktı sınırından uzunsa hiçbir ayar onu tek bir yanıta sığdırmaz. Parçalar halinde isteyin: finish_reason değeri length olduğunda kısmi yanıtı geri gönderin ve modelden devam etmesini isteyin.
messages = [{"role": "user", "content": "Write a detailed guide to setting up a home network."}]
parts = []
for _ in range(4): # example limit: at most 4 rounds
resp = client.chat.completions.create(
model="zai-org/GLM-5.3-Flash",
messages=messages,
max_tokens=8000, # example value: below this model's output limit
)
choice = resp.choices[0]
parts.append(choice.message.content)
if choice.finish_reason != "length":
break
messages.append({"role": "assistant", "content": choice.message.content})
messages.append({"role": "user", "content": "Continue exactly where you stopped. Don't repeat anything."})
text = "".join(parts)Aynı uyarı: desenin bir örneği, kaydedilmiş bir çalıştırma değil. Parçalar arasındaki dikişleri okuyun. Bir model bazen bir cümleyi tekrarlar ya da birleşme noktasında bir listeyi baştan başlatır.
Her tur şimdiye kadarki her şeyi girdi olarak yeniden gönderir ve her çıktı token'ı faturalandırılır. Uzun bir yanıt kısa olandan daha pahalıdır. İşte 2.000 token girdi üzerinde sekiz bin token'lık bir yanıt, bu tablodaki her modele sığar:
| Model | Giriş $/1M | Çıkış $/1M | Maliyet | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00036 | $0.00069 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00083 | $0.0013 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0013 | $0.0102 |
Toplamda 2.000 giriş ve 8.000 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.
finish_reason stop olduğunda#
stop modelin yanıtı bitirdiği anlamına gelir. İstediğinizden erken bitirdiyse bu bir sınır sorunu değildir ve daha büyük bir max_tokens hiçbir şeyi değiştirmez. Ne istediğinizi söyleyin: uzunluğu, bölümleri, ayrıntı düzeyini. Ayrıca isteğin bir stop parametresi ayarlayıp ayarlamadığını kontrol edin; yanıtta görünen bir durdurma dizisi onu anında bitirir.
Yanıt uzunluğuna göre model seçmek#
İhtiyacınız olan yanıttan başlayın. 8.192 token'a sığıyorsa MiniMax-M2.7 (MiniMaxAI/) bunu CheapTokens üzerinde halleder. Çıktısı OpenRouter referans fiyatından daha ucuzdur ve $0.15 üzerinden faturalandırılır (1M çıktı token'ı başına). Fiyat her saatte aynıdır, yoğun saatler yoktur ve API OpenAI ve Anthropic uyumludur.
Her model için güncel fiyat listesi aşağıda:
| Model | Bağlam | Giriş $/1M | Çıkış $/1M | OpenRouter giriş | OpenRouter çıkış |
|---|---|---|---|---|---|
| GLM-5.3-Flash reasoning | 390K | $0.02 | $0.04 | $0.0413 | $0.0758 |
| DeepSeek-V4-Flash | 380K | $0.015 | $0.10 | $0.0475 | $0.1568 |
| MiniMax-M2.7 | 180K | $0.05 | $0.15 | $0.30 | $1.20 |
Fiyatlar 1M token başına USD cinsindendir. OpenRouter rakamları karşılaştırma amaçlı gösterilmiştir ve değişebilir.
Henüz bir istek göndermediyseniz, Your first API request with CheapTokens süreci adım adım anlatır. Token'ın ne olduğu ve girdi ile çıktının neden ayrı sayıldığı için What is a token in AI? sayfasına bakın.
Her model için uç noktalar, model kimlikleri ve sınırlar CheapTokens docs içinde.



