فائدہ:
- پرامپٹ کیشنگ کے سابقہ مماثل منطق کی وضاحت کریں۔
- پہلے فکسڈ سیاق و سباق اور بعد میں متغیر سیاق و سباق ڈال کر کیش ہٹ کو بڑھاتا ہے۔
- کیش رائٹ/پڑھی اکنامکس اور بریک ایون پوائنٹ کا حساب لگا سکتا ہے۔
ایل ایل ایم پروڈکٹ پروٹوٹائپ میں سستی لگتی ہے۔ جب آپ پیمانے پر قدم رکھتے ہیں، تو بل حیرت زدہ ہوجاتا ہے۔ زیادہ تر کام کے بوجھ میں، زیادہ تر بل ایک ہی مقررہ سیاق و سباق سے آتا ہے جو ہر درخواست کے ساتھ بار بار بھیجا جاتا ہے: ایک لمبا سسٹم پرامپٹ، ایک رول بک، حوالہ دستاویزات۔ فوری کیشنگ بالکل اس فضلہ کو ختم کرتی ہے۔ اس یونٹ میں، آپ یہ سیکھیں گے کہ کیش کیسے کام کرتا ہے، پرامپٹ کو مارنے کے لیے کیسے ترتیب دیا جائے، اور کیش اکانومی کے بریک ایون پوائنٹ کا حساب کیسے لگایا جائے۔ صحیح طریقے سے انسٹال ہونے پر، یہ اکیلے آپ کے بل کو نصف یا اس سے بھی کم کر سکتا ہے۔
کیشے کیسے کام کرتا ہے؟ ایک ناقابل تغیر اصول
پرامپٹ کیشنگ ایک پریفکس میچ ہے۔ فراہم کنندہ عارضی طور پر ان ٹوکنز کو اسٹور کرتا ہے جس پر اس نے آپ کے پرامپٹ کے آغاز سے عمل کیا ہے۔ اگر اگلی درخواست پر پرامپٹ اسی سابقہ کے ساتھ شروع ہوتا ہے، تو اس مشترکہ حصے کو دوبارہ شمار نہیں کیا جاتا ہے۔ یہ کیش کے مقابلے میں پڑھنا بہت سستا ہے۔
اس سے ایک غیر متغیر اصول مندرجہ ذیل ہے: اگر ایک بائٹ سابقہ میں کہیں بھی بدل جاتا ہے، تو اس وقت سے پورا کیش غلط ہو جاتا ہے۔ یعنی فکسڈ مواد شروع میں اور متغیر مواد آخر میں ہونا چاہیے۔ اگر آپ سسٹم پرامپٹ کے شروع میں ایک لائن لگاتے ہیں جو ہر درخواست کے ساتھ تبدیل ہوتی ہے، جیسے کہ "آج کی تاریخ: 18.07.2026"، اس کے پیچھے موجود ہر چیز کیشے میں داخل نہیں ہو سکے گی۔
پروسیسنگ آرڈر عام طور پر ہوتا ہے: ٹولز → سسٹم پرامپٹ → پیغامات۔ آپ فکسڈ سیکشن کے آخر میں کیش پوائنٹ (بریک پوائنٹ) ڈالتے ہیں۔
کیشے اکانومی
کیشے کی قیمت کے تین درجے ہیں:
- کیشے لکھنا: پہلی بار ذخیرہ کرنا۔ ~1.25x نارمل ان پٹ قیمت (5 منٹ اسٹوریج کے لیے)۔
- کیشے پڑھنا: بعد کی درخواستوں پر پڑھنا۔ عام ان پٹ قیمت کا ~0.1 گنا — یعنی دسواں حصہ۔
- نارمل ان پٹ: وہ حصہ جو کیشے میں داخل نہیں ہوتا ہے اور ہر بار پوری قیمت پر عملدرآمد کیا جاتا ہے۔
بریک ایون پوائنٹ: پہلی درخواست رائٹ پریمیم (1.25×) ادا کرتی ہے۔ دوسری درخواست سے، پڑھنا (0.1×) کھیل میں آتا ہے۔ موٹے طور پر، آپ دو درخواستوں پر گردن زدنی ہوں گے۔ اس کے بعد، یہ خالص بچت ہے۔ مقررہ سیاق و سباق جتنا بڑا ہوگا اور جتنی زیادہ درخواستیں دوبارہ استعمال کی جائیں گی اتنا ہی بڑا فائدہ ہوگا۔
منظر نامہ
کیا کیشے کام کرتا ہے؟
بڑے فکسڈ سسٹم پرامپٹ، ہزاروں درخواستیں۔
ہاں - سب سے زیادہ کمائی
ایک ہی حوالہ دستاویزات پر بہت سے سوالات
جی ہاں
ہر درخواست کے لیے مکمل طور پر مختلف مختصر متن
نہیں - لکھنا بونس ضائع ہو گیا ہے۔
ایک بار کی درخواست
نہیں - بالکل نہیں پڑھنا
سسٹم پرامپٹ پر ہر درخواست کے ساتھ تاریخ/ID تبدیل کرنا
نہیں — سابقہ ٹوٹ گیا ہے، ہٹ صفر ہے۔
مرحلہ وار: ہٹ پرامپٹ کیسے ترتیب دیا جائے؟
- مستقل اور متغیر کو الگ کریں۔ کون سا مواد کبھی تبدیل نہیں ہوتا (سسٹم پرامپٹ، رول بک، دستاویزات)؟ ہر درخواست کے ساتھ کون سی تبدیلیاں (صارف کا سوال، تاریخ، ID)؟
- شروع میں مستقل رکھیں۔ پروسیسنگ کے دوران، وہ حصہ جو پہلے آتا ہے (ٹولز، سسٹم) مستحکم ہونا چاہیے۔
- متغیر کو آخر میں رکھیں۔ صارف کا موجودہ سوال، آخری۔
- نشان سرحد کے آخر میں رکھیں۔ کیش پوائنٹ کو مقررہ حصے کے آخری بلاک میں رکھیں۔
- ہٹ کی تصدیق کریں۔ چیک کریں کہ کیا cache_read_input_tokens جواب میں استعمال کی فیلڈ میں صفر سے زیادہ ہے۔ اگر صفر ہے تو، سابقہ میں ایک چھپی ہوئی رکاوٹ ہے۔
{ "system": [ { "type": "text", "text": "{{large_constant_system_promptu_and_rules}}", "cache_control": { "type": "ephemeral" } } ], "messages": [ { "role": "user", "content" {current}}}"
ٹپ: کیش ہٹس کا اندازہ نہ لگائیں، ان کی پیمائش کریں۔ اگر مسلسل درخواستوں پر usage.cache_read_input_tokens اب بھی صفر ہے تو، سسٹم پرامپٹ پر ایک سائلنٹ بریکر (datetime.now()، غیر ترتیب شدہ JSON، ہر درخواست کے ساتھ تبدیل ہونے والے ٹولز کی فہرست) چل رہا ہے۔ دو درخواستوں کے خام پرامپٹ کا بائٹ بائی بائٹ کا موازنہ کریں اور فرق تلاش کریں۔
خاموش خلل ڈالنے والے
عام نمونے جو نادانستہ طور پر کیشے کو خراب کرتے ہیں:
# BREAKER: سسٹم پرامپٹ میں معلومات کو سرایت کرنا جو ہر درخواست کے ساتھ تبدیل ہوتا ہے "آج کی تاریخ: {{اب}}۔ آپ ایک اسسٹنٹ ہیں..." ← ہر درخواست کے ساتھ سابقہ تبدیل ہوتا ہے، ہٹ صفر ہے # سچ: متغیر کو میسج سسٹم میں منتقل کریں: "آپ ایک اسسٹنٹ ہیں..." ← constant cachemessages میں داخل ہوتا ہے: [{roday}} سوال: [{roday}} سوال: {{roday}} ..."}] ← آخر میں متغیر
دوسرے بریکرز: JSON نے ہر درخواست پر مختلف طریقے سے ترتیب دیا (کیز کو مقررہ ترتیب میں رکھیں)، صارف کے لحاظ سے مختلف ٹولز کی فہرست (ٹولز پر پہلے کارروائی کی جاتی ہے؛ اگر وہ تبدیل ہوتے ہیں تو کچھ بھی کیش میں نہیں جاتا ہے)، ماڈل کے درمیانی گفتگو کو تبدیل کرنا (کیچز ماڈل مخصوص ہیں)۔
کمزور پرامپٹ / مضبوط پرامپٹ (کیشے دوستانہ ڈھانچہ)
# کمزور (کیشے بسٹنگ بلڈ) سسٹم: "تاریخ: 18.07.2026 14:32۔ صارف: احمد (id 8842)۔ آپ ایک سپورٹ بوٹ ہیں۔ قواعد: ...(2000 ٹوکنز)..."
# مضبوط (کیشے کے موافق ڈھانچہ) سسٹم: "آپ ایک سپورٹ بوٹ ہیں۔ قواعد: ...(2000 ٹوکنز، کبھی نہیں بدلتے)..." [کیشے کے نشان] پیغامات: [ { کردار: صارف، مواد: "تاریخ: 18.07.2026 14:32۔ صارف کی شناخت: 8842۔ سوال: میں اپنی رقم کی واپسی کیسے کروں؟" }]
کمزور ورژن میں، ہر درخواست پر 2000 ٹوکنز کے رول بلاک پر پوری قیمت پر کارروائی کی جاتی ہے۔ مضبوط ورژن میں، وہی بلاک ایک بار لکھا جاتا ہے اور قیمت کے دسویں حصے کے لیے بعد میں آنے والی تمام درخواستوں پر پڑھا جاتا ہے۔
تین چھوٹے کیسز
کیس 1 - رول بک کو کیش کرنا۔ ایک اکاؤنٹنگ آٹومیشن ہر انوائس میں 12,000 ٹوکن رول بک شامل کر رہا تھا۔ روزانہ 5000 درخواستیں کیش لیس ان پٹ کی قیمت ~$180 فی دن ہے۔ انہوں نے رول بک کو مستقل رکھا اور اسے کیش کیا: پہلی درخواستوں نے تحریری پریمیم ادا کیا، بعد میں 0.1× پڑھا۔ ان پٹ لاگت ~90% گر کر ~$18 فی دن ہو گئی۔
کیس 2 - پوشیدہ ڈیٹ لائن کی لاگت۔ ایک ٹیم نے کیش قائم کیا لیکن اسے کوئی کامیابی نہیں مل رہی تھی۔ cache_read_input_tokens ہمیشہ صفر تھا۔ وجہ: سسٹم پرامپٹ کی پہلی لائن میں datetime.now() تھا، ہر درخواست کے ساتھ سابقہ تبدیل ہو رہا تھا۔ جب ہم نے تاریخ کو صارف کے پیغام میں منتقل کیا تو ہٹ ریٹ اچانک 0% سے بڑھ کر 94% ہو گیا۔
کیس 3 - غلط جگہ پر کیشے۔ تلاش کی درخواست ہر درخواست کے ساتھ بالکل مختلف مختصر سوالات بھیج رہی تھی۔ انہوں نے بے تابی سے کیش سائن شامل کیا۔ بغیر کسی عام سابقہ کے، ہر درخواست نے صرف ایک تحریری پریمیم ادا کیا، کوئی پڑھا نہیں - لاگت میں اضافہ۔ انہوں نے نشان ہٹا دیا۔ سبق: کیش صرف اس صورت میں ادا کرتا ہے جب کوئی بڑا اور مستقل سابقہ ہو جسے دوبارہ استعمال کیا جائے۔
عام غلطیاں
- مستقل اور متغیر کا اختلاط: جب متغیر کا مواد سابقہ میں ہوتا ہے تو ہٹ کو دوبارہ ترتیب دیا جاتا ہے۔
- سسٹم پرامپٹ میں تاریخ/ID کو سرایت کرنا: سب سے عام خاموش خلل ڈالنے والا۔
- ہٹ کی پیمائش نہ کرنا: اگر cache_read_input_tokens کو چیک نہیں کیا جاتا ہے، تو فضلہ نظر نہیں آئے گا۔
- جب کوئی عوامی سابقہ نہ ہو تو کیش شامل کرنا: آپ صرف تحریری پریمیم ادا کرتے ہیں، لاگت بڑھ جاتی ہے۔
- گاڑی کی فہرست یا ماڈل کو تبدیل کرنا: سابقہ شروع سے ٹوٹا ہوا ہے۔ سب کچھ دوبارہ لکھا جاتا ہے.
- کیشے کے کم از کم سائز کو بھولنا: بہت مختصر کیشز (ماڈل پر منحصر ~1–4k ٹوکنز کے تحت) خاموشی سے کیشے میں داخل نہیں ہوں گے۔
گہرا: کام کے بوجھ کی قسم کے لحاظ سے کیشے کو ڈیزائن کرنا
کیشنگ کی اصل ادائیگی آپ کے کام کے بوجھ کی نوعیت کے لحاظ سے مختلف ہوتی ہے۔ تو پہلے اپنے ٹریفک کو جانیں۔ تین عام پیٹرن اور درست تنصیب:
کامن سسٹم پرامپٹ، مختلف سوالات۔ سب سے عام انٹرپرائز پیٹرن: سیکڑوں مختلف صارف کے سوالات کے ساتھ ایک بڑا سسٹم پرامپٹ (کردار، قواعد، ہوسکتا ہے حوالہ دستاویز)۔ یہاں مقررہ حصہ (نظام) ابتدائی طور پر کیش کیا جاتا ہے۔ ہر نیا سوال صرف اس کے اپنے چھوٹے حصے کی پوری قیمت ادا کرتا ہے۔ فائدہ بہت زیادہ ہے کیونکہ بڑا حصہ قیمت کے دسویں حصے پر بار بار پڑھا جاتا ہے۔
ملٹی راؤنڈ ایکولوگ۔ جیسے جیسے بات چیت آگے بڑھتی ہے، ہر نیا دور تمام پچھلی تاریخ کے اوپر بنتا ہے۔ اگر آپ آخری راؤنڈ کے آخر میں کیشے کا جھنڈا لگاتے ہیں، تو ہر درخواست پچھلی گفتگو کا سابقہ دوبارہ استعمال کرتی ہے۔ بات چیت کے بڑھنے کے ساتھ ہی کامیابیاں جمع ہوتی جاتی ہیں۔ یہ ڈرامائی طور پر طویل اسسٹنٹ سیشن کی لاگت پر لگام ڈالتا ہے۔
مشترکہ سابقہ تبدیل کرنے کا آخری حصہ ہے۔ متعدد درخواستیں طے شدہ پرائیرز (نمونہ سیٹ، ہدایات) کے ایک بڑے سیٹ کا اشتراک کرتی ہیں لیکن آخر میں ایک سوال کے ذریعہ الگ کردی جاتی ہیں۔ آپ مشترکہ حصے کے آخر میں کیش پوائنٹر لگاتے ہیں۔ بصورت دیگر، ہر درخواست اپنا الگ ذخیرہ لکھے گی اور اس میں سے کوئی بھی نہیں پڑھا جائے گا۔
ایک انتباہ: کیش ماڈل اور ایک مخصوص کم از کم سائز پر منحصر ہے۔ بہت چھوٹے سابقے (ماڈل کے لحاظ سے چند ہزار ٹوکنز کے تحت) خاموشی سے کیشے میں داخل نہیں ہوں گے چاہے آپ ان پر جھنڈا لگائیں — cache_creation_input_tokens صفر رہتا ہے۔ نیز، بات چیت کے درمیانی ماڈل کو تبدیل کرنے سے پورا کیش باطل ہو جاتا ہے۔ اگر کسی مختلف کام کے لیے سستے ماڈل کی ضرورت ہے، تو مرکزی روانی کو ایک ماڈل میں رکھیں اور سائیڈ جاب کو الگ کال میں رکھیں۔
خلاصہ میں
پرامپٹ کیشنگ ایک سابقہ مماثلت ہے: فکسڈ مواد شروع میں ہونا چاہئے، متغیر مواد آخر میں ہونا چاہئے۔ ایک بڑے، دوبارہ استعمال شدہ سیاق و سباق کے لیے، پڑھنے کی لاگت پوری قیمت کا دسواں حصہ ہے، جو تقریباً دو درخواستوں میں بھی ٹوٹ جاتی ہے۔ سب سے عام غلطی سسٹم پرامپٹ میں متغیر ڈیٹا کو ایمبیڈ کرکے سابقہ کو خراب کرنا ہے۔ آپ استعمال کے میدان میں اس کی پیمائش کرکے ہٹ کی تصدیق کرتے ہیں۔
درخواست کا کام
کام کا بوجھ منتخب کریں۔ (1) مواد کو دو کالموں میں تقسیم کریں: "کبھی نہیں بدلتا" اور "ہر درخواست کے ساتھ تبدیلیاں"۔ (2) پرامپٹ ڈھانچے کو دوبارہ بنائیں، شروع میں مستقل حصہ اور آخر میں متغیر حصہ ڈالیں۔ (3) مقررہ حصے کے ٹوکن سائز کا اندازہ لگائیں اور کیش کے ساتھ/بغیر ماہانہ لاگت کا موازنہ کریں۔ (4) نوٹ کریں کہ آپ کس فیلڈ (cache_read_input_tokens) سے ہٹ کی تصدیق کریں گے۔
چیک لسٹ
- [ ] میں وضاحت کر سکتا ہوں کہ کیش سابقہ مماثلت ہے اور واحد ناقابل تغیر اصول ہے۔
- میں فکسڈ مواد کو شروع میں اور متغیر کو آخر میں رکھ کر درستگی بڑھا سکتا ہوں۔
- میں معاشیات لکھنا/پڑھنا جانتا ہوں اور دو-درخواست بریک ایون پوائنٹ۔
- [ ] میں خاموش خلل ڈالنے والوں کو پہچان سکتا ہوں (تاریخ، غیر ترتیب شدہ JSON، گاڑیوں کی فہرست میں تبدیلی)۔
- [ ] میں usage.cache_read_input_tokens کے ساتھ ہٹ کی تصدیق کر سکتا ہوں۔