आपका AI बिल रातों-रात तीन गुना हो गया। मॉडल, ट्रैफिक वॉल्यूम और यहाँ तक कि प्रॉम्प्ट का टेक्स्ट भी वही रहा; अपराधी कोड की एक ऐसी लाइन थी जिसने OpenAI के प्रॉम्प्ट कैश (prompt cache) को खराब कर दिया।
कैश क्यों महत्वपूर्ण है
प्रोवाइडर का प्रॉम्प्ट कैश आपको पैसे बचाने में मदद करता है क्योंकि यह उन सभी रिक्वेस्ट के री-प्रोसेसिंग (re-processing) को छोड़ देता है जो बाइट-दर-बाइट समान प्रीफ़िक्स (prefix) से शुरू होती हैं। यदि पहले टोकन (tokens) किसी पिछली कॉल से मेल खाते हैं, तो प्रोवाइडर उन टोकन के पहले से कंप्यूट किए गए रिप्रेजेंटेशन का पुन: उपयोग करता है और केवल नए सफिक्स (suffix) के लिए शुल्क लेता है। नियम सख्त है: मैच बिल्कुल सटीक होना चाहिए, केवल समान नहीं। शुरुआत में एक अलग टोकन भी पूरे कैश हिट (cache hit) को नष्ट कर देता है।
वह गलती जिसने हिट रेट को खत्म कर दिया
हमारे एजेंट में, हमने मॉडल को "अभी" का अहसास कराने के लिए सिस्टम प्रॉम्प्ट के बिल्कुल ऊपर वर्तमान टाइमस्टैम्प (timestamp) रखा था। क्योंकि टाइमस्टैम्प हर सेकंड बदलता है, इसलिए हर रिक्वेस्ट के लिए पहला टोकन सीक्वेंस अद्वितीय (unique) था। कैश को कभी कोई मैच नहीं मिला, इसलिए प्रत्येक कॉल के लिए उसके बाद आने वाले 18,000 स्टैटिक टोकन—टूल स्कीमा (tool schemas), डॉक्यूमेंटेशन स्निपेट्स, फ्यू-शॉट उदाहरण (few-shot examples) और फिक्स्ड इंस्ट्रक्शन्स—की पूरी कीमत चुकानी पड़ी। इसका परिणाम 0% कैश हिट रेट और तीन गुना बढ़ता हुआ बिल था।
कैश करने की क्षमता (cacheability) के लिए पुनर्व्यवस्था
समाधान सरल है: जो चीज़ कभी नहीं बदलती उसे प्रॉम्प्ट के सामने रखें और किसी भी अस्थिर (volatile) डेटा को पीछे धकेल दें।
Static prefix (cacheable)
- Tool definitions
- Retrieval documents
- Few-shot examples
- Fixed system instructions
Volatile suffix (non-cacheable)
- Current time
- Session identifiers
- User messages
- Live context
यदि मॉडल को समय की आवश्यकता है, तो इसे शुरुआत में जोड़ने के बजाय स्टैटिक ब्लॉक के बाद जोड़ें। इससे कैश भारी स्टैटिक हिस्से का पुन: उपयोग कर सकता है जबकि आप अंत में ताज़ा कॉन्टेक्स्ट (context) प्रदान करते रहते हैं।
स्टैक में छिपे हुए खतरे
भले ही टेम्पलेट सही दिखे, लेकिन मिडिलवेयर (middleware) या SDKs पेलोड (payload) के API तक पहुँचने से पहले चुपचाप मेटाडेटा—जैसे रिक्वेस्ट आईडी, टाइमस्टैम्प या अन्य हेडर—को जोड़ सकते हैं। कुछ डिप्लॉयमेंट पाइपलाइन भी हर रोलआउट पर टूल डेफिनिशन को बदल देती हैं। ये अदृश्य बदलाव बाइट सीक्वेंस को बदल देते हैं और आपके अपने प्रॉम्प्ट बिल्डर में कोई कोड बदलाव किए बिना ही कैश को खराब कर देते हैं।
कैश हिट रेट पर नज़र रखें
किसी भी AI एजेंट के लिए कैश हिट रेट को एक प्राथमिक हेल्थ मेट्रिक (health metric) के रूप में मानें। अचानक गिरावट यह संकेत देती है कि रिक्वेस्ट के शुरुआती बाइट्स में कुछ चीज़ वेरिएबल (variable) हो गई है। हिट प्रतिशत दिखाने वाले मॉनिटरिंग टूल्स आपको लागत में होने वाली विसंगतियों (anomalies) को बढ़ने से पहले पहचानने में मदद करते हैं।
मुख्य बात (Takeaway)
प्रॉम्प्ट कैशिंग एक अपरिवर्तनीय (immutable) प्रीफ़िक्स पर निर्भर करती है। हर रिक्वेस्ट की शुरुआत में बदलने वाली कोई भी चीज़—यहाँ तक कि एक सिंगल टाइमस्टैम्प भी—कैश को शून्य कर देती है और आपके बिल को तीन गुना कर सकती है। स्टैटिक कंटेंट को पहले, वोलेटाइल कंटेंट को अंत में रखें, अपने टूलचेन का छिपे हुए प्रीपेंडर (prependers) के लिए ऑडिट करें, और कैश हिट रेट पर नज़र रखें। एक अनुशासित प्रॉम्प्ट लेआउट प्रदर्शन और मुनाफे (bottom line) दोनों की रक्षा करता है।
