بلاگ پر واپس جائیں

نئے سیکھنے والوں کے لیے AIگائیڈ

پرامپٹ کیشنگ کیا ہے؟ دہرایا گیا پرامپٹ کیسے دوبارہ استعمال ہوتا ہے

پرامپٹ کیشنگ API کو آپ کی درخواست کا غیر تبدیل شدہ آغاز دوبارہ استعمال کرنے دیتی ہے۔ دیکھیں کہ یہ usage فیلڈز میں کیسا لگتا ہے اور بل کا اندازہ کیسے لگائیں۔

از CheapTokens Teamشائع شدہ اپ ڈیٹ کردہ 8 منٹ کا مطالعہ

کور: پرامپٹ کیشنگ کیا ہے، ایک چیٹ کے ساتھ جو پوچھ رہی ہے کہ دہرایا گیا پرامپٹ دوبارہ کیوں بل کیا جاتا ہے
اس صفحہ پر
  1. وہ سپورٹ بوٹ جو ایک ہی صفحہ بار بار پڑھتا ہے
  2. "یکساں" کا مطلب کیا ہے: پریفکس کا اصول
  3. اسے کیسے دیکھیں: usage میں کیش فیلڈز
  4. یہ آپ کے بل پر کیا اثر ڈالتا ہے
  5. اسے خود پانچ منٹ میں آزمائیں

پرامپٹ کیشنگ کا مطلب ہے کہ API آپ کی درخواست کا آغاز یاد رکھتا ہے اور اگلی بار جب آپ وہی آغاز بھیجیں تو اسے دوبارہ استعمال کرتا ہے۔ آپ ہر کال میں پورا متن بھیجتے ہیں، لیکن فراہم کنندہ دہرائے گئے حصے کو دوبارہ پڑھنے کا کام چھوڑ سکتا ہے، اور کچھ فراہم کنندگان اس حصے کا بل کم نرخ پر کرتے ہیں۔ یہ صرف درخواست کے آغاز پر کام کرتا ہے، اور صرف اس صورت میں جب وہ آغاز بالکل یکساں ہو۔

وہ سپورٹ بوٹ جو ایک ہی صفحہ بار بار پڑھتا ہے#

فرض کریں آپ ایک سپورٹ بوٹ چلاتے ہیں جس میں روزانہ 2,000 ٹکٹ آتے ہیں۔ ہر درخواست اسی 3,000 ٹوکن سے شروع ہوتی ہے: بات کرنے کا لہجہ، رقم واپسی کے قواعد، شپنگ پالیسی۔ اس کے بعد گاہک کا ایک سطری پیغام آتا ہے، جیسے "میرا آرڈر کہاں ہے؟" (اگر ٹوکن اب بھی مبہم ہیں تو ٹوکن کیا ہے سے شروع کریں۔)

کیشنگ کے بغیر، فراہم کنندہ ٹکٹ نمبر 1، ٹکٹ نمبر 2، اور ٹکٹ نمبر 2,000 کے لیے قواعد کے تمام 3,000 ٹوکن دوبارہ پڑھتا ہے۔ ایک ہی صفحہ، 2,000 بار پڑھا گیا۔ کیشنگ کے ساتھ، پہلی درخواست اسے پڑھنے کی پوری قیمت ادا کرتی ہے، اور بعد کی درخواستیں جو اسی متن سے شروع ہوتی ہیں وہ اس کام کو دوبارہ استعمال کر سکتی ہیں۔

دو درخواستیں جن کا پہلا حصہ یکساں اور آخری سطر مختلف ہے
درخواست 2 درخواست 1 کا آغاز دہراتی ہے؛ صرف آخری سطر بدلتی ہے۔

DeepSeek کی API گائیڈ (24 اکتوبر 2026 کو چیک کی گئی) بالکل یہی بیان کرتی ہے: کانٹیکسٹ کیشنگ بطور ڈیفالٹ فعال ہے، اسے کسی کوڈ تبدیلی کی ضرورت نہیں، اور اوورلیپنگ پریفکس والی بعد کی درخواست "کیش ہٹ" شمار ہوتی ہے۔ صرف ان پٹ کیش ہوتا ہے۔ جواب ہر بار نیا بنایا جاتا ہے۔

"یکساں" کا مطلب کیا ہے: پریفکس کا اصول#

کیش پہلے حرف سے آگے ملتا ہے۔ جس لمحے آپ کی درخواست کیش شدہ درخواست سے مختلف ہوتی ہے، اس کے بعد کا سب کچھ نیا ہوتا ہے۔ اسی لیے آپ کی درخواست کی ترتیب اس کی لمبائی سے زیادہ اہم ہے۔

یہاں وہ غلطی ہے جو خاموشی سے کیشنگ کو ختم کر دیتی ہے۔ ایک ڈویلپر چاہتا ہے کہ بوٹ کو وقت معلوم ہو اور اسے سب سے اوپر رکھ دیتا ہے:

text
Current time: 14:03:22
You are a support assistant for a shop...
(3,000 tokens of rules)

وقت ہر سیکنڈ بدلتا ہے، اس لیے پہلی سطر ہر درخواست پر مختلف ہوتی ہے، اور اس کے بعد کچھ بھی نہیں مل سکتا۔ حل یہ ہے کہ جو بھی بدلتا ہے اسے آخر میں منتقل کریں:

text
You are a support assistant for a shop...
(3,000 tokens of rules)
Current time: 14:03:22
Customer: Where is my order?

اب قواعد کے 3,000 ٹوکن پہلے آتے ہیں اور یکساں رہتے ہیں۔ یہی منطق دیگر دو عام صورتوں پر لاگو ہوتی ہے: ایک طویل چیٹ ہر موڑ پر اپنی پوری تاریخ دوبارہ بھیجتی ہے، اس لیے پرانے پیغامات ایک تیار شدہ دہرایا جانے والا آغاز ہیں (اس پر مزید طویل چیٹ زیادہ مہنگی کیوں ہے میں)، اور ایک ایجنٹ ہر مرحلے پر اپنی ٹول تعریفیں اور ہدایات دہراتا ہے۔

کیشنگ بہترین کوشش پر مبنی بھی ہے۔ DeepSeek کہتا ہے کہ کیش بننے میں چند سیکنڈ لگتے ہیں، ہٹ کے لیے موجودہ کیش پریفکس یونٹ کا مکمل مماثل ہونا ضروری ہے، ہٹ کی شرح کی کوئی ضمانت نہیں، اور غیر استعمال شدہ کیش صاف کر دیے جاتے ہیں، عام طور پر چند گھنٹوں سے چند دنوں میں۔ اس لیے پہلی کے نصف سیکنڈ بعد بھیجی گئی دوسری درخواست ابھی ہٹ نہ کر سکے، اور ہٹ آپ کے پورے پریفکس سے کم حصہ ڈھانپ سکتی ہے۔

اسے کیسے دیکھیں: usage میں کیش فیلڈز#

آپ کو اندازہ لگانے کی ضرورت نہیں کہ یہ کام ہوا یا نہیں۔ ہر فراہم کنندہ اسے جواب کے usage حصے میں اپنے فیلڈ ناموں کے تحت بتاتا ہے۔

DeepSeek دو فیلڈز استعمال کرتا ہے:

  • prompt_cache_hit_tokens — ان پٹ ٹوکن جو کیش میں ملے
  • prompt_cache_miss_tokens — ان پٹ ٹوکن جو نہیں ملے

فرض کریں آپ کا پہلا سپورٹ ٹکٹ prompt_cache_hit_tokens: 0 اور prompt_cache_miss_tokens: 3200 کے ساتھ واپس آتا ہے، اور ایک منٹ بعد کا ٹکٹ prompt_cache_hit_tokens: 3000 اور prompt_cache_miss_tokens: 200 دکھاتا ہے۔ قواعد کے 3,000 ٹوکن دوبارہ استعمال ہوئے؛ صرف نیا گاہک پیغام اور چند ٹوکن شروع سے پڑھے گئے۔ اگر ہر کال پر ہٹ نمبر صفر رہے تو اپنی درخواست کے آغاز کو دیکھیں: وہاں کچھ بدل رہا ہے۔

Anthropic مختلف طریقے سے کام کرتا ہے، کیونکہ آپ خود نشان زد کرتے ہیں کہ کیا کیش کرنا ہے۔ آپ درخواست یا کسی کانٹینٹ بلاک میں cache_control بمعہ قسم ephemeral شامل کرتے ہیں:

json
{
  "model": "your-model-id",
  "max_tokens": 300,
  "system": [
    {
      "type": "text",
      "text": "You are a support assistant... (long rules)",
      "cache_control": {"type": "ephemeral"}
    }
  ],
  "messages": [{"role": "user", "content": "Where is my order?"}]
}

Anthropic کی پرامپٹ کیشنگ دستاویزات (24 اکتوبر 2026 کو چیک کی گئی) کے مطابق، جواب تین اعداد بتاتا ہے: cache_creation_input_tokens (ابھی کیش میں لکھے گئے)، cache_read_input_tokens (اس سے پڑھے گئے)، اور input_tokens (آخری کیش بریک پوائنٹ کے بعد کیا آیا)۔ فرض کریں پہلی کال cache_creation_input_tokens: 10000، cache_read_input_tokens: 0 دکھاتی ہے؛ دوسری 0 اور 10000 دکھاتی ہے۔ یہ کیش لکھنا اور پھر کیش پڑھنا ہے۔

اسکرین پر ایک جال ہے۔ ماڈل کی کم از کم حد (512، 1,024 یا 4,096 ٹوکن، ماڈل کے مطابق) سے چھوٹے پرامپٹ کیشنگ کے بغیر اور بغیر کسی خرابی کے پروسیس ہوتے ہیں۔ آپ دونوں کیش فیلڈز میں صفر دیکھیں گے اور کوئی انتباہ نہیں۔ ڈیفالٹ عمر 5 منٹ ہے، ہر استعمال پر مفت تازہ ہوتی ہے؛ اختیاری ttl بمعہ 1h اسے زیادہ دیر رکھتا ہے۔

یہ آپ کے بل پر کیا اثر ڈالتا ہے#

کیشنگ دہرائے گئے حصے کی قیمت بدلتی ہے، اس لیے ایک بار گننا فائدہ مند ہے۔ Anthropic بنیادی ان پٹ قیمت پر ضربیں بتاتا ہے: 5 منٹ کی عمر والا کیش لکھنا 1.25× لاگتا ہے، پڑھنا 0.1× (Opus 5.5 اور Sonnet 5.5 کے لیے 0.05×)۔ 5 منٹ کی ونڈو میں 20 درخواستوں میں دوبارہ استعمال ہونے والا 10,000 ٹوکن پریفکس لیں، معیاری 0.1× ریڈ کے ساتھ:

10,000 × 20 = 200,000 ٹوکن بنیادی قیمت پر بغیر کیشنگ

10,000 × 1.25 = 12,500 پہلی درخواست کے لیے جو کیش لکھتی ہے

19 × 10,000 × 0.1 = 19,000 ان 19 درخواستوں کے لیے جو اسے پڑھتی ہیں

12,500 + 19,000 = 31,500 ٹوکن مساوی کیشنگ کے ساتھ

اس لیے دہرائے گئے حصے کی قیمت بغیر کیش کے مقدار کے پانچویں حصے سے بھی کم پڑتی ہے۔ پکڑ یہ ہے: اگر درخواستوں کے درمیان 5 منٹ گزر جائیں تو اگلی درخواست کیش دوبارہ 1.25× پر لکھتی ہے، اور کم استعمال ہونے والا پریفکس بالآخر کیشنگ نہ ہونے سے زیادہ مہنگا پڑ سکتا ہے۔

اب شروع سے بوٹ، ایک سادہ پوری قیمت کی بنیاد کے طور پر۔ روزانہ 2,000 درخواستیں، ہر ایک میں 3,000 ان پٹ ٹوکن اور تقریباً 300 آؤٹ پٹ ٹوکن:

2,000 × 3,000 = روزانہ 6,000,000 ان پٹ ٹوکن

2,000 × 300 = روزانہ 600,000 آؤٹ پٹ ٹوکن

جدول اس دن کے کام کا بوجھ ہر دستیاب CheapTokens ماڈل پر OpenRouter کے مقابلے میں قیمت دیتا ہے:

ماڈل فی درخواست 2,000 درخواستیں OpenRouter، 2,000 درخواستیں
GLM-5.3-Flash $0.000072 $0.144 $0.293
DeepSeek-V4-Flash $0.000075 $0.15 $0.379
MiniMax-M2.7 $0.0002 $0.39 $2.52

فی درخواست 3,000 ان پٹ اور 300 آؤٹ پٹ ٹوکنز۔ فی 1M ٹوکنز کی قیمتیں موجودہ ہیں اور ہمارے ٹیرف کے ساتھ تبدیل ہوتی ہیں؛ OpenRouter کالم اسی ورک لوڈ کے لیے حوالہ جاتی قیمتیں دکھاتا ہے۔

DeepSeek-V4-Flash کل میں OpenRouter سے سستا ہے، ان پٹ اور آؤٹ پٹ ملا کر گنے جانے پر، اور بوجھ آسانی سے فٹ ہو جاتا ہے: 380K کانٹیکسٹ اور فی جواب زیادہ سے زیادہ 32,768 آؤٹ پٹ ٹوکن۔ یہ بوجھ کی پوری قیمت کی لاگت ہے: ان پٹ ٹوکن × فی ٹوکن قیمت۔ ایک طویل مستحکم پریفکس وہ جگہ ہے جہاں یہ ان پٹ حصہ سب سے بڑا ہوتا ہے۔

اسے خود پانچ منٹ میں آزمائیں#

منصوبہ: ایک ہی طویل سسٹم پرامپٹ دو بار مختلف سوالات کے ساتھ بھیجیں اور usage دیکھیں۔ اپنا قواعد کا متن support_rules.txt میں رکھیں (ایک یا دو صفحے کا متن کافی ہے)۔ اینڈ پوائنٹ OpenAI-مطابق CheapTokens API ہے، اور آپ اپنے اکاؤنٹ سے کلید لے سکتے ہیں۔

python
from openai import OpenAI

client = OpenAI(base_url='https://api.cheaptokens.dev/v1', api_key='YOUR_API_KEY')

SYSTEM = open('support_rules.txt').read()  # long, never changes

for question in ['Where is my order?', 'Can I change the address?']:
    r = client.chat.completions.create(
        model='deepseek-ai/DeepSeek-V4-Flash-0731',
        messages=[
            {'role': 'system', 'content': SYSTEM},
            {'role': 'user', 'content': question},
        ],
        max_tokens=300,
    )
    print(r.usage)

پرنٹ آؤٹ میں کیا چیک کریں: prompt_tokens بتاتا ہے کہ آپ کی درخواست کتنی بڑی ہے۔ دونوں درخواستیں ایک ہی SYSTEM متن رکھتی ہیں، اس لیے اس عدد کا زیادہ تر حصہ ایک درخواست سے دوسری میں دہرایا جاتا ہے — تقریباً آپ کی قواعد فائل کا سائز۔ یہی دہرایا جانے والا آغاز وہ حصہ ہے جو کیشنگ والا فراہم کنندہ، جیسے اوپر DeepSeek API یا Anthropic، دوبارہ استعمال کر سکتا ہے۔ اب ترتیب پر ایک مشق: SYSTEM کے اوپر موجودہ وقت والی سطر (datetime.now()) شامل کریں اور دوبارہ چلائیں۔ دونوں درخواستیں اب آغاز شیئر نہیں کرتیں، کیونکہ وہ پہلی سطر ہی سے مختلف ہیں۔ وہی سطر پرامپٹ کے آخر میں رکھیں اور مشترکہ آغاز واپس آ جاتا ہے۔

اپنے پرامپٹس کے لیے ایک مختصر چیک لسٹ:

  1. مستحکم متن پہلے: ہدایات، قواعد، ٹول تعریفیں، مثالیں۔
  2. بدلتا متن آخر میں: تاریخ، صارف کا نام، تازہ ترین پیغام۔
  3. پریفکس بائٹ بہ بائٹ یکساں رکھیں — ایک اضافی اسپیس بھی شمار ہوتی ہے۔
  4. یہ سوچنے سے پہلے کہ کچھ کیش کیوں نہیں ہوا، فراہم کنندہ کا کم از کم سائز چیک کریں۔
  5. تبدیلی کے بعد usage فیلڈز دیکھیں، پہلے نہیں۔

اپنے بوجھ کی قیمت لگانے کے لیے، قیمتوں کا صفحہ کھولیں اور اپنے ان پٹ اور آؤٹ پٹ سائز درج کریں، یا DeepSeek صفحہ سے شروع کریں۔ ایک بار پہلی درخواست کام کر جائے تو آپ کے لکھے ہوئے کسی بھی پرامپٹ کے لیے یہی اندازہ ایک منٹ لیتا ہے۔ درخواست کے دونوں اطراف کی قیمت کے لیے، ان پٹ بمقابلہ آؤٹ پٹ ٹوکن دیکھیں۔