آپ کا AI بل راتوں رات تین گنا بڑھ گیا۔ ماڈل، ٹریفک کا حجم اور یہاں تک کہ پرامپٹس (prompts) کا متن بھی وہی رہا؛ اس کی وجہ کوڈ کی ایک ایسی لائن تھی جس نے OpenAI کے پرامپٹ کیش (prompt cache) کو خراب کر دیا۔

کیش (cache) کیوں اہم ہے

فراہم کنندہ (provider) کا پرامپٹ کیش آپ کے پیسے بچاتا ہے کیونکہ یہ ان تمام درخواستوں کی دوبارہ پروسیسنگ کو چھوڑ دیتا ہے جو بائٹ-فار-بائٹ (byte-for-byte) ایک جیسی ابتدا (prefix) سے شروع ہوتی ہیں۔ اگر پہلے ٹوکنز (tokens) پچھلی کال سے مطابقت رکھتے ہوں، تو فراہم کنندہ ان ٹوکنز کی پہلے سے تیار شدہ نمائندگی (representation) کو دوبارہ استعمال کرتا ہے اور صرف نئے حصے (suffix) کے لیے چارج کرتا ہے۔ اصول سخت ہے: مطابقت بالکل درست ہونی چاہیے، محض ملتی جلتی نہیں۔ شروع میں ایک مختلف ٹوکن بھی پورے کیش ہٹ (cache hit) کو ختم کر دیتا ہے۔

وہ غلطی جس نے ہٹ ریٹ (hit rate) کو ختم کر دیا

ہمارے ایجنٹ میں، ہم نے ماڈل کو "ابھی" کا احساس دلانے کے لیے سسٹم پرامپٹ کے بالکل شروع میں موجودہ ٹائم اسٹیمپ (timestamp) رکھا تھا۔ چونکہ ٹائم اسٹیمپ ہر سیکنڈ میں بدل جاتا ہے، اس لیے پہلے ٹوکن کا تسلسل ہر درخواست کے لیے منفرد تھا۔ کیش کو کبھی کوئی مطابقت نہیں ملی، اس لیے ہر کال پر ان 18,000 ساکن (static) ٹوکنز کی پوری قیمت ادا کرنی پڑی جو اس کے بعد آتے تھے—جیسے ٹول اسکیمائیں (tool schemas)، دستاویزات کے ٹکڑے (documentation snippets)، few-shot مثالیں اور طے شدہ ہدایات۔ اس کا نتیجہ 0% کیش ہٹ ریٹ اور تین گنا بڑھ جانے والے بل کی صورت میں نکلا۔

کیش ایبلٹی (cacheability) کے لیے ترتیب کی تبدیلی

اس کا حل سادہ ہے: جو چیز کبھی نہیں بدلتی اسے پرامپٹ کے شروع میں رکھیں اور کسی بھی متحرک (volatile) ڈیٹا کو آخر میں دھکیل دیں۔

ساکن پریفکس (cacheable)

  • ٹول کی تعریفیں (Tool definitions)
  • ریٹریول دستاویزات (Retrieval documents)
  • few-shot مثالیں
  • طے شدہ سسٹم ہدایات

متحرک سرفکس (non-cacheable)

  • موجودہ وقت
  • سیشن آئیڈنٹیفائرز (Session identifiers)
  • صارف کے پیغامات
  • لائیو سیاق و سباق (Live context)

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

اسٹیک میں چھپے ہوئے خطرات

اگرچہ ٹیمپلیٹ درست نظر آتا ہے، لیکن مڈل ویئر (middleware) یا SDKs خاموشی سے میٹا ڈیٹا—جیسے درخواست کی آئی ڈی (request IDs)، ٹائم اسٹیمپ یا دیگر ہیڈرز—پی لوڈ (payload) کے API تک پہنچنے سے پہلے شامل کر سکتے ہیں۔ کچھ ڈیپلائمنٹ پائپ لائنز بھی ہر ریلیز پر ٹول کی تعریفوں کی ترتیب بدل دیتی ہیں۔ یہ غیر مرئی تبدیلیاں بائٹ کے تسلسل کو بدل دیتی ہیں اور آپ کے اپنے پرامپٹ بلڈر میں کوڈ کی تبدیلی کے بغیر کیش کو ناکام بنا دیتی ہیں۔

کیش ہٹ ریٹ (cache hit rate) پر نظر رکھیں

کیش ہٹ ریٹ کو کسی بھی AI ایجنٹ کے لیے صحت کا بنیادی پیمانہ سمجھیں۔ اچانک کمی اس بات کا اشارہ ہے کہ درخواست کے ابتدائی بائٹس میں کچھ متغیر (variable) ہو گیا ہے۔ ہٹ فیصد دکھانے والے مانیٹرنگ ٹولز آپ کو اخراجات میں غیر معمولی اضافے کا پتہ چلنے سے پہلے ہی خبردار کر سکتے ہیں۔

خلاصہ

پرامپٹ کیشنگ ایک غیر متبدل پریفکس (immutable prefix) پر منحصر ہے۔ ہر درخواست کے شروع میں کوئی بھی چیز جو بدلتی ہے—یہاں تک کہ ایک ٹائم اسٹیمپ بھی—کیش کو ختم کر دیتی ہے اور آپ کا بل تین گنا بڑھا سکتی ہے۔ ساکن مواد کو پہلے، متحرک مواد کو آخر میں رکھیں، اپنے ٹول چین کا چھپے ہوئے پریفکسز کے لیے معائنہ کریں، اور کیش ہٹ ریٹس پر نظر رکھیں۔ ایک منظم پرامپٹ لے آؤٹ کارکردگی اور اخراجات دونوں کا تحفظ کرتا ہے۔