तुमचे AI बिल रातोरात तीन पटीने वाढले. मॉडेल, ट्रॅफिक वॉल्यूम आणि अगदी प्रॉम्प्टमधील मजकूरही तोच होता; पण याला कारणीभूत ठरली ती एकच कोडची ओळ, ज्यामुळे OpenAI चे प्रॉम्प्ट कॅशे (prompt cache) बिघडले.

कॅशे (cache) का महत्त्वाचा आहे

प्रदात्याचे (provider's) प्रॉम्प्ट कॅशे तुम्हाला पैसे वाचवते, कारण ते अशा कोणत्याही विनंतीचे (request) पुनरुत्पादन (re-processing) टाळते जी 'byte-for-byte' सारख्याच प्रीफिक्सने (prefix) सुरू होते. जर पहिले टोकन्स (tokens) मागील कॉलशी जुळत असतील, तर प्रदाता त्या टोकन्सचे आधीच तयार केलेले प्रतिनिधित्व पुन्हा वापरतो आणि फक्त नवीन सफिक्ससाठी (suffix) शुल्क आकारतो. हा नियम कडक आहे: मॅच अगदी अचूक असावी लागते, केवळ सारखी असून चालत नाही. सुरुवातीला एक जरी वेगळा टोकन असेल, तर संपूर्ण कॅशे हिट (cache hit) वाया जाते.

हिट रेट (hit rate) कमी करणारी चूक

आमच्या एजंटमध्ये, मॉडेलला "आता"ची जाणीव करून देण्यासाठी आम्ही सिस्टम प्रॉम्प्टच्या अगदी सुरुवातीला सध्याचा टाइमस्टॅम्प (timestamp) ठेवला होता. टाइमस्टॅम्प प्रत्येक सेकंदाला बदलत असल्यामुळे, प्रत्येक विनंतीसाठी पहिल्या टोकनची मालिका वेगळी होती. कॅशेला कधीही मॅच सापडली नाही, त्यामुळे प्रत्येक कॉलसाठी त्यानंतर येणाऱ्या १८,००० स्टॅटिक टोकन्ससाठी (tool schemas, documentation snippets, few-shot examples आणि fixed instructions) पूर्ण किंमत मोजावी लागली. परिणामी, कॅशे हिट रेट ०% झाला आणि बिल तीन पटीने वाढले.

कॅशे करण्यायोग्य बनवण्यासाठी पुनर्रचना (Reordering)

उपाय सोपा आहे: जे कधीही बदलत नाही ते सर्व प्रॉम्प्टच्या सुरुवातीला ठेवा आणि कोणताही अस्थिर (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 पेलोड API पर्यंत पोहोचण्यापूर्वी मेटाडेटा—request IDs, टाइमस्टॅम्प किंवा इतर हेडर्स—चुपचाप जोडू शकतात. काही डिप्लॉयमेंट पाइपलाईन्स देखील प्रत्येक रोलआउटवर टूल डेफिनिशन्सची अदलाबदल करतात. हे अदृश्य बदल बाइट सिक्वेन्स बदलतात आणि तुमच्या स्वतःच्या प्रॉम्प्ट बिल्डरमध्ये कोणताही कोड बदल न करता कॅशेमध्ये अडथळा आणतात.

कॅशे हिट रेटवर लक्ष ठेवा

कोणत्याही AI एजंटसाठी कॅशे हिट रेटला प्राथमिक हेल्थ मेट्रिक (health metric) माना. अचानक झालेली घट हे सूचित करते की विनंतीच्या सुरुवातीच्या बाइट्समध्ये काहीतरी बदलले आहे. हिट टक्केवारी दर्शवणारी मॉनिटरिंग टूल्स तुम्हाला खर्च वाढण्यापूर्वीच त्यातील विसंगती शोधण्यास मदत करतात.

सारांश

प्रॉम्प्ट कॅशिंग हे अपरिवर्तनीय (immutable) प्रीफिक्सवर अवलंबून असते. प्रत्येक विनंतीच्या सुरुवातीला बदलणारी कोणतीही गोष्ट—अगदी एक टाइमस्टॅम्प सुद्धा—कॅशे रद्द करू शकते आणि तुमचे बिल तीन पटीने वाढवू शकते. स्टॅटिक मजकूर आधी, व्होलटाईल मजकूर शेवटी ठेवा, तुमच्या टूलचेनमध्ये छुपे प्रीपेंडर्स (prependers) आहेत का ते तपासा आणि कॅशे हिट रेटवर लक्ष ठेवा. एक शिस्तबद्ध प्रॉम्प्ट लेआउट कार्यक्षमता आणि खर्च दोन्ही सुरक्षित ठेवतो.