لاگت کی بہتریگائیڈ
لاگت کم کرنے کے لیے چیٹ کی تاریخ تراشیں: سلائیڈنگ ونڈو یا خلاصہ
ہر ٹرن پر جو دوبارہ بھیجیں اسے محدود کریں: آخری چند پیغامات یا ایک مختصر خلاصہ رکھیں۔ 50 ٹرنز کی چیٹ کے لیے ٹوکن حساب اور ایک Python ہیلپر۔

اس صفحہ پر
آپ کے سپورٹ بوٹ نے 50 ٹرنز تک چیٹ کی ہے، اور ہر نیا پیغام پچھلے سے زیادہ مہنگا ہے۔ API کچھ یاد نہیں رکھتا، اس لیے آپ کا کوڈ ہر بار پوری گفتگو دوبارہ بھیجتا ہے۔ حل یہ ہے کہ آپ جو بھیجتے ہیں اسے محدود کریں: سسٹم پرامپٹ اور آخری چند ٹرنز رکھیں (سلائیڈنگ ونڈو)، یا پرانے ٹرنز کو ایک مختصر خلاصے سے بدل دیں۔ نیچے 50 ٹرنز کی چیٹ کا حساب اور ایک ہیلپر ہے جسے آپ کاپی کر سکتے ہیں۔
DeepSeek کی ملٹی راؤنڈ چیٹ گائیڈ (api-docs.deepseek.com، 1 نومبر 2026 کو چیک کیا گیا) صاف طور پر کہتی ہے: سرور پچھلی درخواستوں کا سیاق و سباق ریکارڈ نہیں کرتا، اس لیے کلائنٹ ہر کال پر پوری messages فہرست بھیجتا ہے۔ CheapTokens پر OpenAI-مطابق فارمیٹ اسی طرح کام کرتا ہے۔ اگر یہ آپ کے لیے نیا ہے، تو لمبی چیٹ زیادہ مہنگی کیوں ہوتی ہے اور messages array کیسے کام کرتا ہے سے شروع کریں۔
ٹرن 50 اصل میں کیا بھیجتا ہے#
فرض کریں آپ 400-ٹوکن سسٹم پرامپٹ والا سپورٹ بوٹ چلاتے ہیں۔ ایک عام ٹرن میں صارف تقریباً 60 ٹوکن لکھتا ہے اور بوٹ تقریباً 190 ٹوکن کا جواب دیتا ہے۔ ایک مکمل ٹرن تاریخ میں 250 ٹوکن کا اضافہ کرتا ہے۔ یہ مفروضے ہیں: انہیں اپنے جوابات کے usage فیلڈ کے نمبروں سے بدل دیں۔
ٹرن 50 پر درخواست میں سسٹم پرامپٹ، 49 پچھلے ٹرنز اور نیا پیغام شامل ہوتا ہے: 400 + 49 × 250 + 60 = 12,710 ان پٹ ٹوکنز، تاکہ 190-ٹوکن جواب ملے۔ پوری چیٹ کو جمع کریں۔ سسٹم پرامپٹ اور نیا پیغام ہر بار بھیجے جاتے ہیں: 50 × 460 = 23,000۔ دہرائی گئی تاریخ 250 × 1,225 = 306,250 کا اضافہ کرتی ہے۔ مجموعی طور پر: 23,000 + 306,250 = 329,250 ان پٹ ٹوکنز، بمقابلہ 50 × 190 = 9,500 آؤٹ پٹ ٹوکنز۔
ہر درخواست میں تاریخ ایک ٹرن بڑھتی ہے، اس لیے کل رقم چیٹ کی لمبائی کے مربع کے ساتھ بڑھتی ہے۔ 50 سے 100 ٹرنز تک جائیں تو دہرائی گئی تاریخ کا حصہ تقریباً چار گنا ہو جاتا ہے۔
خود آزمائیںآزمائیں: اگر آپ صرف سسٹم پرامپٹ، آخری 4 ٹرنز اور نیا پیغام بھیجیں، تو ٹرن 50 کتنے ان پٹ ٹوکنز لے جائے گا؟جواب دکھائیں
1,460 (400 + 4 × 250 + 60)، بمقابلہ 12,710 پوری تاریخ کے ساتھ۔ وہی سوال، وہی جواب کی لمبائی، ان پٹ کا ایک حصہ۔
آپشن 1: سلائیڈنگ ونڈو#
خیال: ہمیشہ سسٹم پرامپٹ بھیجیں، آخری N ٹرنز کے علاوہ سب کچھ ہٹا دیں۔ آپ اپنی اسٹوریج میں پوری تاریخ رکھتے ہیں اور صرف بھیجی جانے والی کاپی کو تراشتے ہیں۔
def trim_history(messages, keep_pairs=4):
"""System prompt + the last keep_pairs turns + the new user message."""
system = [m for m in messages if m["role"] == "system"]
rest = [m for m in messages if m["role"] != "system"]
return system + rest[-(keep_pairs * 2 + 1):]اسے صارف کا نیا پیغام شامل کرنے کے بعد کال کریں۔ keep_pairs=4 کے ساتھ یہ 4 صارف/اسسٹنٹ جوڑے اور نیا پیغام، 9 پیغامات ہیں، اور سلائس ہمیشہ صارف کے پیغام سے شروع ہوتی ہے۔ یہاں اسے ایک حقیقی کال میں جوڑا گیا ہے:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
MODEL = "deepseek-ai/DeepSeek-V4-Flash-0731"
history = [{"role": "system", "content": "You are a concise support assistant."}]
def ask(text):
history.append({"role": "user", "content": text})
resp = client.chat.completions.create(
model=MODEL,
messages=trim_history(history),
max_tokens=500,
)
answer = resp.choices[0].message.content
history.append({"role": "assistant", "content": answer})
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
return answerprint لائن مفید ہے: پہلا نمبر دیکھیں۔ تراشنے کے بغیر یہ ہر ٹرن پر بڑھتا ہے۔ ونڈو کے ساتھ یہ چیٹ کے ٹرن 4 سے گزرنے کے بعد بڑھنا بند کر دیتا ہے۔

نمبروں میں: ٹرن 5 سے، ہر درخواست 400 + 4 × 250 + 60 = 1,460 ان پٹ ٹوکنز ہے۔ پہلے چار ٹرنز اب بھی عام طور پر بڑھتے ہیں اور مجموعی طور پر 3,340 بنتے ہیں۔ پوری چیٹ: 3,340 + 46 × 1,460 = 70,500 ان پٹ ٹوکنز، پوری تاریخ کے ساتھ بھیجے جانے والے 329,250 کا تقریباً پانچواں حصہ۔ آؤٹ پٹ 50 × 190 = 9,500 رہتا ہے۔

کوڈ میں، پوری تبدیلی کال میں ایک دلیل ہے:
موازنہ کریں
ایک لائن کی تبدیلی
پہلے
messages=historyبعد میں
messages=trim_history(history)پکڑ: ونڈو بھول جاتی ہے۔ اگر صارف ٹرن 40 پر پوچھے "میرا آرڈر نمبر کیا تھا؟" اور نمبر ٹرن 3 میں تھا، تو ماڈل نے اسے کبھی نہیں دیکھا۔ دو سستے حل۔ مستحکم حقائق (نام، آرڈر نمبر، پلان) اپنے کوڈ میں چیٹ سے نکالیں اور انہیں سسٹم پرامپٹ میں شامل کریں، جہاں ونڈو انہیں کبھی نہیں کاٹتی۔ یا ایک خلاصہ شامل کریں، جو اگلا آپشن ہے۔
آپشن 2: پرانے ٹرنز کا خلاصہ#
پرانے ٹرنز کو چھوڑنے کے بجائے، آپ انہیں کمپریس کرتے ہیں۔ ہر چند ٹرنز پر، وہ ٹرنز جو ابھی ونڈو سے باہر نکلے ہیں، اور موجودہ خلاصہ، ماڈل کو بھیجیں اور ایک نیا، مختصر خلاصہ طلب کریں۔ پھر اس خلاصے کو سسٹم پیغام میں ڈالیں۔
def summarize(summary, old_messages):
transcript = "\n".join(f"{m['role']}: {m['content']}" for m in old_messages)
prompt = (
f"Summary so far:\n{summary}\n\nNew turns:\n{transcript}\n\n"
"Rewrite the summary in under 200 words. "
"Keep names, numbers, decisions and open questions."
)
resp = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": prompt}],
max_tokens=400,
)
return resp.choices[0].message.content
def build_messages(history, summary, keep_pairs=4):
system = history[0]["content"]
if summary:
system += "\n\nEarlier in this chat: " + summary
recent = history[1:][-(keep_pairs * 2 + 1):]
return [{"role": "system", "content": system}] + recentخلاصہ مفت نہیں ہے: یہ ایک اضافی ماڈل کال ہے۔ فرض کریں تقریباً 300 ٹوکن کا خلاصہ، ہر 5 ٹرنز پر تازہ کیا جاتا ہے (50 ٹرنز میں 9 بار)، ہر تازہ کاری تقریباً 1,600 ٹوکن پڑھتی ہے (پرانا خلاصہ جمع پانچ ٹرنز جمع ہدایت) اور 300 لکھتی ہے۔ محفوظ رہنے کے لیے، ٹرن 5 سے ہر درخواست میں خلاصہ شمار کریں (حقیقت میں یہ پہلی تازہ کاری کے بعد ظاہر ہوتا ہے، لہذا یہ تھوڑا سا زیادہ اندازہ ہے): 400 + 300 + 4 × 250 + 60 = 1,760 ان پٹ ٹوکنز۔
چیٹ کے لیے مجموعی: مرکزی درخواستیں 3,340 + 46 × 1,760 = 84,300 ان پٹ ٹوکنز، خلاصہ کالز 9 × 1,600 = 14,400 ان پٹ اور 9 × 300 = 2,700 آؤٹ پٹ۔ مجموعی طور پر 84,300 + 14,400 = 98,700 ان پٹ اور 9,500 + 2,700 = 12,200 آؤٹ پٹ ٹوکنز۔
خلاصہ خالی ونڈو سے تھوڑا زیادہ مہنگا ہے، اور بدلے میں ماڈل اب بھی جانتا ہے کہ ٹرن 3 میں کیا ہوا۔
تینوں سیٹ اپ کتنا خرچ کرتے ہیں#
یہاں DeepSeek-V4-Flash پر وہی 50 ٹرنز کی چیٹ ہے، اوپر کے مجموعوں سے لائیو قیمت:
قیمتیں لائیو قیمت کی فہرست سے آتی ہیں، اس لیے ٹیرف بدلنے پر نمبر اپ ڈیٹ ہوتے ہیں۔ ترتیب نہیں بدلے گی: ونڈو سب سے کم بھیجتی ہے، خلاصہ درمیان میں ہے، پوری تاریخ سب سے مہنگی ہے۔
اس طرح کی چیٹ کے لیے، CheapTokens کا ماڈل جس سے شروع کرنا ہے وہ DeepSeek-V4-Flash ہے۔ اس میں 380K کا سیاق و سباق ونڈو ہے (50 ٹرنز کی چیٹ بغیر تراشے بھی فٹ ہو جاتی ہے)، فی جواب 32,768 آؤٹ پٹ ٹوکنز تک، دن کے کسی بھی وقت ایک مقررہ قیمت، اور مجموعی طور پر، ان پٹ اور آؤٹ پٹ کو ملا کر، یہ OpenRouter سے سستا ہے۔ ماڈل آئی ڈی deepseek- ہے۔ اگر آپ ونڈو سیٹ اپ پر ماڈلز کا موازنہ کرنا چاہتے ہیں (فی درخواست اوسطاً 1,410 ان پٹ ٹوکنز، 190 آؤٹ پٹ، 50 درخواستیں)، تو یہاں لائیو ٹیبل ہے:
| ماڈل | ان پٹ $/1M | آؤٹ پٹ $/1M | فی درخواست | 50 درخواستیں | OpenRouter، 50 درخواستیں |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000036 | $0.0018 | $0.0032 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00004 | $0.002 | $0.0063 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000099 | $0.005 | $0.0594 |
فی درخواست 1,410 ان پٹ اور 190 آؤٹ پٹ ٹوکنز۔ فی 1M ٹوکنز کی قیمتیں موجودہ ہیں اور ہمارے ٹیرف کے ساتھ تبدیل ہوتی ہیں؛ OpenRouter کالم اسی ورک لوڈ کے لیے حوالہ جاتی قیمتیں دکھاتا ہے۔
GLM-5.3-Flash کا سیاق و سباق 390K اور MiniMax-M2.7 کا 180K ہے، جو تراشے گئے چیٹ کے لیے کافی ہے۔ موجودہ قیمتیں قیمتوں کے صفحے پر ہیں، اور دستاویزات دکھاتی ہیں کہ پہلی درخواست کیسے بھیجیں۔
کون سا منتخب کریں#
ونڈو ڈیفالٹ ہے: کوڈ کی تین لائنیں، کوئی اضافی کال نہیں، کوئی اضافی ناکامی کا طریقہ نہیں۔ اسے سپورٹ بوٹس، ٹیوٹرز اور رول پلے کے لیے استعمال کریں، جہاں آخری چند ٹرنز گفتگو اٹھاتے ہیں اور سسٹم پرامپٹ قواعد اٹھاتا ہے۔ خلاصہ اس وقت شامل کریں جب صارفین بہت پہلے کہی گئی چیزوں کا حوالہ دیں، جیسے ایک ذاتی اسسٹنٹ میں جس میں ایک کبھی نہ ختم ہونے والی گفتگو ہو۔ ونڈو اتنی چھوٹی رکھیں کہ ماڈل اب بھی فوری سیاق و سباق دیکھے، اور اتنی بڑی کہ ایک مکمل سوال و جواب کا تبادلہ رکھ سکے۔ کتنا فٹ ہوتا ہے یہ ایک الگ حد ہے، جس کا احاطہ سیاق و سباق ونڈو کیا ہے میں کیا گیا ہے۔
فوری جانچ
صارف ٹرن 40 پر ٹرن 3 میں دیے گئے آرڈر نمبر کے بارے میں پوچھتا ہے۔ آپ 4-ٹرن ونڈو بغیر خلاصے کے استعمال کرتے ہیں۔ کیا ہوتا ہے؟
جواب دکھائیں
جواب: ماڈل اسے نہیں دیکھ سکتا، کیونکہ ٹرن 3 درخواست سے کاٹ دیا گیا تھا
API بے حالت ہے۔ ماڈل صرف وہی دیکھتا ہے جو درخواست میں ہے، اس لیے جن حقائق کی آپ کو اب بھی ضرورت ہے وہ سسٹم پرامپٹ یا خلاصے میں رہنے چاہئیں۔



