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