نئے سیکھنے والوں کے لیے AIگائیڈ
AI کا جواب درمیان میں کیوں رک جاتا ہے؟ max_tokens، کانٹیکسٹ ونڈو اور finish_reason کی وضاحت
درمیان میں رکنے والا AI جواب کسی حد سے ٹکرا گیا۔ finish_reason پڑھیں، max_tokens کو بھری ہوئی کانٹیکسٹ ونڈو سے الگ پہچانیں اور ہر ماڈل کی آؤٹ پٹ حد چیک کریں۔

اس صفحہ پر
ایک جواب جو کسی جملے کے درمیان رک جائے، تقریباً ہمیشہ کسی حد کی وجہ سے کٹا ہوتا ہے۔ ماڈل نے اپنا تسلسل نہیں کھویا؛ درخواست میں جگہ ختم ہو گئی۔ جواب بتاتا ہے کہ کون سی حد تھی: finish_reason پڑھیں۔ length کا مطلب ہے کہ کوئی حد لگ گئی۔ stop کا مطلب ہے کہ ماڈل نے خود ختم کیا۔
تین چیزیں طے کرتی ہیں کہ جواب کتنا لمبا ہو سکتا ہے۔ ایک بار جب آپ جان لیں کہ کون سی چیز آپ کو کاٹ رہی ہے، تو حل ایک منٹ میں ہو جاتا ہے۔
جواب کاٹنے والی تین حدیں#
max_tokensایک حد ہے جو آپ درخواست میں مقرر کرتے ہیں۔ جب جواب اس تک پہنچتا ہے، تو جنریشن رک جاتی ہے، چاہے درمیان میں لفظ ہو۔ DeepSeek کی API ریفرنس اسے کمپلیشن میں جنریٹ ہونے والے ٹوکنز کی زیادہ سے زیادہ تعداد کے طور پر بیان کرتی ہے۔- ماڈل کی آؤٹ پٹ حد اس ماڈل کے ایک جواب کی زیادہ سے زیادہ حد ہے۔ یہ ماڈل کی اپنی ہے، لہٰذا
max_tokensکو اس کے برابر یا اس سے کم رکھیں۔ ہمارے ماڈلز کے نمبر نیچے جدول میں ہیں۔ - کانٹیکسٹ ونڈو پوری گفتگو کے لیے جگہ ہے: آپ کا ان پٹ اور جواب مل کر۔ DeepSeek کی ریفرنس کہتی ہے کہ ان پٹ اور جنریٹ شدہ ٹوکنز مل کر ماڈل کی کانٹیکسٹ لمبائی سے محدود ہیں۔
اگر ٹوکن اب بھی ایک مبہم تصور ہے، تو What is a token in AI? سے شروع کریں۔ یہ صفحہ فرض کرتا ہے کہ آپ جانتے ہیں کہ ٹوکن کیا ہے۔
پہلے finish_reason پڑھیں#
چیٹ جواب میں ہر انتخاب کے ساتھ ایک finish_reason ہوتا ہے۔ اس کے ساتھ، usage بتاتا ہے کہ کتنے ٹوکنز اندر اور باہر گئے۔
یہاں ایک کٹے ہوئے جواب کی مثال ایک مکمل جواب کے ساتھ ہے۔ درخواست نے پوچھا "In one short sentence, what is a token?"، پہلے max_tokens کو 16 پر سیٹ کر کے، پھر 200 پر۔
مثالی مثال، ریکارڈ شدہ جواب نہیں: آپ کی گنتی اور اضافی فیلڈز مختلف ہوں گی۔
{
"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 }
}پہلے جواب میں completion_ 16 ہے، بالکل حد کے برابر، اور متن "usu" پر ختم ہوتا ہے۔ دوسرے میں ماڈل 24 ٹوکنز پر رکا، جو 200 کی حد سے کافی کم ہے، کیونکہ یہ مکمل ہو گیا تھا۔
یہ جاننے کے لیے کہ کیا ہوا، اس ترتیب سے گزریں:
finish_reasonکو دیکھیں۔ اگر یہstopہے، تو جواب مکمل ہے۔ ماڈل نے ختم کرنے کا انتخاب کیا، یا آپ کی سیٹ کردہ اسٹاپ سیکوئنس پر پہنچا۔ اگر یہlengthہے، تو کسی حد نے جواب کاٹ دیا، اور اگلا مرحلہ بتاتا ہے کہ کون سی۔ دیگر اقدار بھی موجود ہیں، جیسےcontent_filterاورtool_calls؛ ان میں سے کوئی بھی لمبائی کا مسئلہ نہیں ہے۔completion_کا موازنہtokens max_tokensسے کریں جو آپ نے بھیجا۔ اگر وہ برابر ہیں یا تقریباً برابر ہیں، تو آپmax_tokensپر پہنچ گئے۔- اگر
completion_tokens max_tokensسے کافی کم ہے اورprompt_tokensبڑا ہے، تو کانٹیکسٹ ونڈو غالباً بھر گئی ہے۔ DeepSeek کی ریفرنس دونوں صورتوں کے لیےlengthاستعمال کرتی ہے، لہٰذا صرف فیلڈ سے انہیں الگ نہیں کیا جا سکتا؛ مرحلہ 2 کا موازنہ ہی بتاتا ہے۔ Anthropic اور Z.ai کی دستاویزات دوسری صورت کو الگ سےmodel_کہتی ہیں۔ اپنے جوابات میں فیلڈ دیکھیں تاکہ معلوم ہو کہ آپ کو کون سا نام ملتا ہے۔context_ window_ exceeded
تینوں وضاحتیں ڈویلپرز کی دستاویزات سے ہیں، 20 اکتوبر 2026 کو چیک کی گئیں: DeepSeek، Anthropic اور Z.ai۔
ٹیبل کو دائیں طرف اسکرول کریں →
| آپ کیا دیکھتے ہیں | finish_reason |
وجہ | کیا کریں |
|---|---|---|---|
کٹا ہوا، completion_ برابر max_tokens |
length |
max_tokens پہنچ گیا |
max_tokens بڑھائیں، یا جواب حصوں میں مانگیں |
کٹا ہوا، completion_ max_tokens سے بہت کم، لمبا ان پٹ |
length (یا کچھ APIs میں model_) |
کانٹیکسٹ ونڈو بھری ہوئی | ان پٹ یا ہسٹری مختصر کریں، یا بڑی ونڈو والا ماڈل منتخب کریں |
| مکمل لیکن آپ کی خواہش سے چھوٹا | stop |
ماڈل مکمل ہو گیا، یا اسٹاپ سیکوئنس فائر ہوا | مزید تفصیل مانگیں؛ stop پیرامیٹر چیک کریں |
| کوئی متن نہیں، یا انکار | content_filter |
جواب فلٹر ہو گیا | درخواست دوبارہ لکھیں |
| کوئی متن نہیں، بجائے اس کے ٹول درخواست | tool_calls |
ماڈل ٹول کال کرنا چاہتا ہے | ٹول چلائیں اور نتیجہ واپس بھیجیں |
حل 1: max_tokens بڑھائیں#
سب سے عام وجہ حل کرنے میں بھی سب سے آسان ہے۔ max_tokens خود سیٹ کریں، تاکہ آپ کو معلوم ہو کہ کون سی حد لاگو ہوتی ہے۔ ڈیفالٹ پر بھروسہ نہ کریں۔
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)یہ کال کی ساخت دکھاتا ہے۔ کلید یہاں YOUR_API_KEY کے طور پر داخل ہوتی ہے؛ اصل کلید کو شیئر کیے گئے کوڈ سے باہر رکھیں۔
نمبر بڑھانا صرف ماڈل کی اپنی حد تک مدد کرتا ہے۔ یہاں CheapTokens پر حدیں ہیں، 20 اکتوبر 2026 کو CheapTokens ماڈل لسٹ کے خلاف چیک کی گئیں:
ٹیبل کو دائیں طرف اسکرول کریں →
| ماڈل | ماڈل ID | فی جواب زیادہ سے زیادہ آؤٹ پٹ | کانٹیکسٹ |
|---|---|---|---|
| DeepSeek-V4-Flash (0731) | deepseek- |
32,768 ٹوکنز | 380K |
| GLM-5.3-Flash | zai- |
8,192 ٹوکنز | 390K |
| MiniMax-M2.7 | MiniMaxAI/ |
8,192 ٹوکنز | 200K |
ڈویلپرز اپنی APIs کے لیے اپنی حدیں شائع کرتے ہیں۔ مثال کے طور پر، Z.ai GLM-5 سیریز کے لیے 128K تک آؤٹ پٹ درج کرتا ہے۔ یہ CheapTokens پر GLM-5.3-Flash کی حدیں نہیں ہیں، جو فی جواب 8,192 ٹوکنز ہے۔ CheapTokens پر جو بھی بنائیں، اوپر والا جدول استعمال کریں۔
حل 2: جب کانٹیکسٹ ونڈو بھر جائے#
چیٹ میں، پوری ہسٹری ہر پیغام کے ساتھ دوبارہ جاتی ہے، لہٰذا ان پٹ ہر موڑ پر بڑھتا ہے۔ کانٹیکسٹ ونڈو کو وہ ہسٹری اور نیا جواب دونوں رکھنے ہوتے ہیں۔ اگر ہسٹری اکیلے ہی تقریباً ساری جگہ لے لے، تو جواب کے لیے تقریباً کوئی جگہ نہیں بچتی۔
یہ ونڈوز بڑی ہیں، اور ایک مختصر سوال انہیں نہیں بھرے گا۔ لمبی چیٹس اور پیسٹ کی گئی دستاویزات بھریں گی۔ کیا مدد کرتا ہے:
- نئے کام کے لیے نئی چیٹ شروع کریں، پرانی جاری رکھنے کے بجائے۔
- ماڈل سے کہیں کہ اب تک کی گفتگو کا خلاصہ کرے، اور صرف خلاصہ آگے لے جائیں۔
- پرانے پیغامات اور منسلکات کاٹ دیں جن کی مزید ضرورت نہیں۔
- اگر ان پٹ خود بہت بڑا ہے، تو سب سے بڑی ونڈو والا ماڈل منتخب کریں۔ ہمارے درمیان وہ GLM-5.3-Flash ہے 390K کے ساتھ۔ اس کی آؤٹ پٹ حد 8,192 ٹوکنز ہے، لہٰذا لمبا نتیجہ حصوں میں مانگیں۔
حل 3: لمبا جواب حصوں میں حاصل کریں#
جب آپ جو جواب چاہتے ہیں وہ ماڈل کی آؤٹ پٹ حد سے لمبا ہو، تو کوئی سیٹنگ اسے ایک جواب میں نہیں بٹھا سکتی۔ اسے ٹکڑوں میں مانگیں: جب finish_reason length ہو، تو جزوی جواب واپس بھیجیں اور ماڈل سے جاری رکھنے کو کہیں۔
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)وہی انتباہ: پیٹرن کی مثال، ریکارڈ شدہ رن نہیں۔ حصوں کے درمیان کے جوڑ پڑھیں۔ ماڈل کبھی کبھی جملہ دہراتا ہے یا جوڑ پر فہرست دوبارہ شروع کرتا ہے۔
ہر راؤنڈ اب تک کا سب کچھ ان پٹ کے طور پر دوبارہ بھیجتا ہے، اور ہر آؤٹ پٹ ٹوکن بل کیا جاتا ہے۔ لمبے جواب کی لاگت مختصر سے زیادہ ہوتی ہے۔ یہاں 2,000 ٹوکنز کے ان پٹ پر آٹھ ہزار ٹوکنز کا جواب ہے، جو جدول کے ہر ماڈل میں فٹ بیٹھتا ہے:
| ماڈل | ان پٹ $/1M | آؤٹ پٹ $/1M | لاگت | 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 |
کل 2,000 ان پٹ اور 8,000 آؤٹ پٹ ٹوکنز۔ فی 1M ٹوکنز کی قیمتیں موجودہ ہیں اور ہمارے ٹیرف کے ساتھ تبدیل ہوتی ہیں؛ OpenRouter کالم اسی ورک لوڈ کے لیے حوالہ جاتی قیمتیں دکھاتا ہے۔
جب finish_reason stop ہو#
stop کا مطلب ہے کہ ماڈل نے جواب ختم کیا۔ اگر یہ آپ کی خواہش سے جلد ختم ہوا، تو یہ حد کا مسئلہ نہیں ہے اور بڑا max_tokens کچھ نہیں بدلتا۔ بتائیں کہ آپ کیا چاہتے ہیں: لمبائی، حصے، تفصیل کی سطح۔ یہ بھی چیک کریں کہ درخواست stop پیرامیٹر سیٹ کرتی ہے یا نہیں؛ جواب میں ظاہر ہونے والا اسٹاپ سیکوئنس اسے وہیں ختم کر دیتا ہے۔
جواب کی لمبائی کے لحاظ سے ماڈل منتخب کرنا#
اس جواب سے شروع کریں جو آپ کو چاہیے۔ اگر یہ 8,192 ٹوکنز میں فٹ ہے، تو MiniMax-M2.7 (MiniMaxAI/) CheapTokens پر اسے سنبھال لیتا ہے۔ اس کا آؤٹ پٹ OpenRouter ریفرنس قیمت سے سستا ہے، اور یہ $0.15 (فی 1M آؤٹ پٹ ٹوکنز) پر بل کیا جاتا ہے۔ قیمت کسی بھی وقت یکساں ہے، کوئی پیک آورز نہیں، اور API OpenAI اور Anthropic کے ساتھ مطابقت رکھتی ہے۔
یہاں ہر ماڈل کے لیے موجودہ قیمت کی فہرست ہے:
| ماڈل | کانٹیکسٹ | ان پٹ $/1M | آؤٹ پٹ $/1M | OpenRouter ان پٹ | OpenRouter آؤٹ پٹ |
|---|---|---|---|---|---|
| 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 |
قیمتیں USD میں فی 1M ٹوکن ہیں۔ OpenRouter کے اعداد و شمار موازنے کے لیے دکھائے گئے ہیں اور بدل سکتے ہیں۔
اگر آپ نے ابھی تک کوئی درخواست نہیں بھیجی، تو Your first API request with CheapTokens اس پر گامزن کرتا ہے۔ ٹوکن کیا ہے اور ان پٹ اور آؤٹ پٹ الگ کیوں گنے جاتے ہیں، کے لیے What is a token in AI? دیکھیں۔
ہر ماڈل کے اینڈ پوائنٹس، ماڈل آئی ڈیز اور حدیں CheapTokens docs میں ہیں۔



