एआई के सामान्य वर्कफ़्लो में, एक ही इनपुट टोकन को बार-बार किसी मॉडल को पास किया जा सकता है. Gemini API, कैश मेमोरी के दो अलग-अलग तरीके उपलब्ध कराता है:
- इंप्लिसिट कैश मेमोरी (Gemini 2.5 मॉडल पर अपने-आप चालू हो जाती है. इससे लागत में बचत होने की कोई गारंटी नहीं है)
- एक्सप्लिसिट कैश मेमोरी (ज़्यादातर मॉडल पर मैन्युअल तरीके से चालू किया जा सकता है, लागत कम करने की गारंटी)
एक्सप्लिसिट कैशिंग उन मामलों में फ़ायदेमंद होती है जहां आपको लागत में बचत की गारंटी चाहिए. हालांकि, इसके लिए डेवलपर को कुछ और काम करना पड़ता है.
इंप्लिसिट कैशिंग
Gemini 2.5 के सभी मॉडल के लिए, इंप्लिसिट कैश मेमोरी की सुविधा डिफ़ॉल्ट रूप से चालू होती है. अगर आपका अनुरोध कैश मेमोरी से मिलता है, तो हम लागत में हुई बचत को अपने-आप लागू कर देते हैं. इसे चालू करने के लिए, आपको कुछ भी करने की ज़रूरत नहीं है. यह 8 मई, 2025 से लागू होगा. कॉन्टेक्स्ट कैश मेमोरी के लिए, इनपुट टोकन की कम से कम संख्या 1,024 होनी चाहिए. यह संख्या 2.5 Flash के लिए 1,024 और 2.5 Pro के लिए 4,096 है.
इंप्लिसिट कैश हिट की संभावना बढ़ाने के लिए:
- अपने प्रॉम्प्ट की शुरुआत में, बड़े और सामान्य कॉन्टेंट को शामिल करें
- कम समय में, एक जैसे प्रीफ़िक्स वाले अनुरोध भेजने की कोशिश करना
आपको रिस्पॉन्स ऑब्जेक्ट के usage_metadata
फ़ील्ड में, उन टोकन की संख्या दिखेगी जो कैश मेमोरी में मौजूद थे.
एक्सप्लिसिट कैशिंग
Gemini API की एक्सप्लिसिट कैशिंग सुविधा का इस्तेमाल करके, मॉडल को एक बार कुछ कॉन्टेंट दिया जा सकता है. साथ ही, इनपुट टोकन को कैश मेमोरी में सेव किया जा सकता है. इसके बाद, अगले अनुरोधों के लिए कैश मेमोरी में सेव किए गए टोकन का इस्तेमाल किया जा सकता है. कुछ वॉल्यूम पर, कैश किए गए टोकन का इस्तेमाल करना, टोकन के एक ही कॉर्पस को बार-बार पास करने की तुलना में कम खर्चीला होता है.
टोकन के सेट को कैश मेमोरी में सेव करते समय, यह चुना जा सकता है कि टोकन के अपने-आप मिटने से पहले, कैश मेमोरी में कितने समय तक सेव रहे. कैश मेमोरी में सेव रहने की इस अवधि को टाइम टू लिव (टीटीएल) कहा जाता है. अगर इसे सेट नहीं किया जाता है, तो टीटीएल डिफ़ॉल्ट रूप से एक घंटे पर सेट होता है. कैशिंग की लागत, इनपुट टोकन के साइज़ और टोकन को सेव रखने की अवधि पर निर्भर करती है.
इस सेक्शन में यह माना गया है कि आपने Gemini SDK इंस्टॉल कर लिया है या curl इंस्टॉल कर लिया है. साथ ही, आपने क्विकस्टार्ट में दिखाए गए तरीके से एपीआई पासकोड कॉन्फ़िगर कर लिया है.
OpenAI लाइब्रेरी का इस्तेमाल करके, कैश मेमोरी को साफ़ तौर पर मैनेज करना
अगर OpenAI लाइब्रेरी का इस्तेमाल किया जा रहा है, तो extra_body
पर cached_content
प्रॉपर्टी का इस्तेमाल करके, एक्सप्लिसिट कैश मेमोरी को चालू किया जा सकता है.
एक्सप्लिसिट कैशिंग का इस्तेमाल कब करें
कॉन्टेक्स्ट को कैश मेमोरी में सेव करने की सुविधा, खास तौर पर उन स्थितियों के लिए सही है जहां शुरुआती कॉन्टेक्स्ट के बड़े हिस्से को छोटे अनुरोधों से बार-बार रेफ़रंस किया जाता है. इन जैसे इस्तेमाल के उदाहरणों के लिए, कॉन्टेक्स्ट कैश मेमोरी का इस्तेमाल करें:
- सिस्टम के निर्देशों के साथ चैटबॉट
- लंबी वीडियो फ़ाइलों का बार-बार विश्लेषण करना
- दस्तावेज़ों के बड़े सेट के ख़िलाफ़ बार-बार की जाने वाली क्वेरी
- कोड रिपॉज़िटरी का बार-बार विश्लेषण करना या गड़बड़ी ठीक करना
एक्सप्लिसिट कैशिंग से लागत कैसे कम होती है
कॉन्टेक्स्ट कैश मेमोरी, पैसे चुकाकर इस्तेमाल की जाने वाली सुविधा है. इसे कुल परिचालन लागत को कम करने के लिए डिज़ाइन किया गया है. बिलिंग इन बातों पर निर्भर करती है:
- कैश किए गए टोकन की संख्या: कैश किए गए इनपुट टोकन की संख्या. इन्हें बाद के प्रॉम्प्ट में शामिल करने पर, कम कीमत पर बिल किया जाता है.
- स्टोरेज की अवधि: कैश मेमोरी में सेव किए गए टोकन को सेव रखने की अवधि (टीटीएल). कैश मेमोरी में सेव किए गए टोकन की संख्या के टीटीएल के आधार पर बिल भेजा जाता है. टीटीएल के लिए, कम से कम या ज़्यादा से ज़्यादा की कोई सीमा नहीं होती.
- अन्य कारक: अन्य शुल्क लागू होते हैं. जैसे, कैश मेमोरी में सेव न किए गए इनपुट टोकन और आउटपुट टोकन के लिए शुल्क.
कीमत के बारे में अप-टू-डेट जानकारी के लिए, Gemini API के कीमत वाले पेज पर जाएं. टोकन की गिनती करने का तरीका जानने के लिए, टोकन गाइड देखें.
ज़रूरी बातें
कॉन्टेक्स्ट कैश मेमोरी का इस्तेमाल करते समय, इन बातों का ध्यान रखें:
- कॉन्टेक्स्ट को कैश मेमोरी में सेव करने के लिए, इनपुट टोकन की कम से कम संख्या 2.5 Flash के लिए 1,024 और 2.5 Pro के लिए 2,048 है. ज़्यादा से ज़्यादा, दिए गए मॉडल के लिए ज़्यादा से ज़्यादा के बराबर है. (टोकन की गिनती के बारे में ज़्यादा जानने के लिए, टोकन गाइड देखें).
- यह मॉडल, कैश किए गए टोकन और सामान्य इनपुट टोकन के बीच कोई अंतर नहीं करता. कैश किया गया कॉन्टेंट, प्रॉम्प्ट का प्रीफ़िक्स होता है.
- कॉन्टेक्स्ट को कैश मेमोरी में सेव करने पर, इस्तेमाल की कोई खास दर या सीमाएं लागू नहीं होती हैं.
GenerateContent
के लिए, दर की स्टैंडर्ड सीमाएं लागू होती हैं. साथ ही, टोकन की सीमाओं में कैश मेमोरी में सेव किए गए टोकन शामिल होते हैं. - कैश किए गए टोकन की संख्या, कैश मेमोरी सेवा की create, get, और list कार्रवाइयों के
usage_metadata
से मिलती है. साथ ही, कैश मेमोरी का इस्तेमाल करते समयGenerateContent
से भी मिलती है.