Firebase AI Logic में कॉन्टेक्स्ट को कैश मेमोरी में सेव करना

एआई की सुविधा के लिए, किसी मॉडल को एक ही इनपुट टोकन (कॉन्टेंट) बार-बार भेजा जा सकता है. इन मामलों में, इस कॉन्टेंट को कैश मेमोरी में सेव किया जा सकता है. इसका मतलब है कि कॉन्टेंट को मॉडल को एक बार भेजा जाता है, उसे सेव किया जाता है, और बाद के अनुरोधों में उसका रेफ़रंस दिया जाता है.

कॉन्टेक्स्ट को कैश मेमोरी में सेव करने से, एक जैसे टास्क को बार-बार करने में लगने वाला समय और लागत काफ़ी कम हो सकती है. इन टास्क में ज़्यादा कॉन्टेंट शामिल होता है. जैसे, ज़्यादा टेक्स्ट, कोई ऑडियो फ़ाइल या कोई वीडियो फ़ाइल. कैश किए गए कॉन्टेंट के कुछ सामान्य इस्तेमाल के उदाहरणों में, पर्सोना के बारे में जानकारी देने वाले दस्तावेज़, कोडबेस या मैन्युअल शामिल हैं.

Gemini मॉडल, कैश मेमोरी में सेव करने के दो अलग-अलग तरीके उपलब्ध कराते हैं:

  • इंप्लिसिट कैश मेमोरी: ज़्यादातर मॉडल पर अपने-आप चालू हो जाती है. हालांकि, इससे लागत में बचत की कोई गारंटी नहीं है

  • एक्सप्लिसिट कैश मेमोरी: इसे ज़्यादातर मॉडल पर ज़रूरत के हिसाब से और मैन्युअल तरीके से चालू किया जा सकता है. इससे आम तौर पर लागत कम होती है

एक्सप्लिसिट कैशिंग उन मामलों में फ़ायदेमंद होती है जहां आपको लागत में बचत की गारंटी चाहिए. हालांकि, इसमें डेवलपर को कुछ अतिरिक्त काम करना पड़ता है.

जवाब के मेटाडेटा में मौजूद cachedContentTokenCount फ़ील्ड से पता चलता है कि आपके इनपुट के कैश मेमोरी में सेव किए गए हिस्से में कितने टोकन हैं. यह जानकारी, इंप्लिसिट और एक्सप्लिसिट, दोनों तरह की कैश मेमोरी के लिए उपलब्ध होती है. एक्सप्लिसिट कैश मेमोरी के लिए, इस पेज के सबसे नीचे दी गई कीमत की जानकारी ज़रूर देखें.

इन मॉडल के साथ काम करता है

इन मॉडल का इस्तेमाल करते समय, कैश मेमोरी की सुविधा काम करती है:

  • gemini-3.1-pro-preview
  • gemini-3.8-flash (और पुराने gemini-3.7-flash, gemini-3.6-flash, और gemini-3.5-flash)
  • gemini-3.5-flash-lite (और पुराना gemini-3.1-flash-lite)

सामान्य इस्तेमाल वाले Gemini 2.5 मॉडल में यह सुविधा काम करती है, लेकिन इन सभी मॉडल को बंद कर दिया गया है.

मीडिया जनरेट करने वाले मॉडल (उदाहरण के लिए, "Nana Banana" मॉडल जैसे कि gemini-3.1-flash-image), कॉन्टेक्स्ट को कैश मेमोरी में सेव करने की सुविधा के साथ काम नहीं करते.

कैश मेमोरी में सेव किए गए कॉन्टेंट के साइज़ की सीमाएं

कैश किए गए कॉन्टेंट के लिए, हर मॉडल के लिए कम से कम टोकन की संख्या तय की गई है. ज़्यादा से ज़्यादा टोकन की संख्या, मॉडल की कॉन्टेक्स्ट विंडो के हिसाब से तय होती है.

  • Gemini Pro मॉडल: कम से कम 4096 टोकन
  • Gemini Flash मॉडल: कम से कम 1024 टोकन

इसके अलावा, BLOB या टेक्स्ट का इस्तेमाल करके, ज़्यादा से ज़्यादा 10 एमबी का कॉन्टेंट कैश मेमोरी में सेव किया जा सकता है.



इंप्लिसिट कैशिंग

डिफ़ॉल्ट रूप से, इंप्लिसिट कैश मेमोरी की सुविधा चालू होती है. यह सुविधा, ज़्यादातर Gemini मॉडल के लिए उपलब्ध है.

अगर आपका अनुरोध, कैश मेमोरी में सेव किए गए कॉन्टेंट से मेल खाता है, तो Google लागत में हुई बचत को अपने-आप लागू कर देता है. यहां कुछ तरीके दिए गए हैं, जिनसे यह पक्का किया जा सकता है कि आपके अनुरोध में इंप्लिसिट कैश मेमोरी का इस्तेमाल किया जाए:

  • अपने प्रॉम्प्ट की शुरुआत में, बड़े और सामान्य कॉन्टेंट को शामिल करें.
  • एक जैसे प्रीफ़िक्स वाले अनुरोधों को कम समय में भेजने की कोशिश करें.

आपके इनपुट के कैश मेमोरी में सेव किए गए हिस्से में मौजूद टोकन की संख्या, जवाब के मेटाडेटा में मौजूद cachedContentTokenCount फ़ील्ड में दी जाती है.



एक्सप्लिसिट कैशिंग

एक्सप्लिसिट कैश मेमोरी की सुविधा, डिफ़ॉल्ट रूप से चालू नहीं होती. यह Gemini मॉडल की एक वैकल्पिक सुविधा है.

यहां अश्लील कॉन्टेंट की कैश मेमोरी को सेट अप करने और इस्तेमाल करने का तरीका बताया गया है:

ध्यान दें कि अश्लील कॉन्टेंट की कैश मेमोरी, इंप्लिसिट कैश मेमोरी के साथ इंटरैक्ट करती है. इससे, अश्लील कॉन्टेंट की कैश मेमोरी के अलावा, अन्य कॉन्टेंट की कैश मेमोरी भी बन सकती है. इंप्लिसिट कैश मेमोरी की सुविधा बंद करके और एक्सप्लिसिट कैश मेमोरी न बनाकर, कैश मेमोरी में सेव किए गए डेटा का रखरखाव होने से रोका जा सकता है. ज़्यादा जानकारी के लिए, कैशिंग की सुविधा चालू और बंद करना लेख पढ़ें.



एक्सप्लिसिट कैश मेमोरी बनाना और उसका इस्तेमाल करना

अश्लील कॉन्टेंट की कैश मेमोरी बनाने और इस्तेमाल करने के लिए, ये ज़रूरी शर्तें पूरी होनी चाहिए:

  1. एक्सप्लिसिट कैश मेमोरी बनाएं.

  2. सर्वर प्रॉम्प्ट टेंप्लेट में कैश मेमोरी का रेफ़रंस दें.

  3. अपने ऐप्लिकेशन से प्रॉम्प्ट के अनुरोध में, सर्वर प्रॉम्प्ट टेंप्लेट का रेफ़रंस दें.

एक्सप्लिसिट कैश मेमोरी बनाने और उसका इस्तेमाल करने के बारे में अहम जानकारी

आपकी कैश मेमोरी, ऐप्लिकेशन के प्रॉम्प्ट अनुरोधों और सर्वर के प्रॉम्प्ट टेंप्लेट के साथ अलाइन होनी चाहिए:

  • यह कैश मेमोरी, Gemini API सेवा देने वाली कंपनी के हिसाब से होती है. आपके ऐप्लिकेशन के प्रॉम्प्ट अनुरोध में, एक ही सेवा देने वाली कंपनी का इस्तेमाल किया जाना चाहिए.
    हमारा सुझाव है कि Firebase AI Logic के लिए, एक्सप्लिसिट कॉन्टेंट कैश का इस्तेमाल सिर्फ़ Agent Platform Gemini API (formerly Vertex AI) के साथ करें. इस पेज पर दी गई सभी जानकारी और उदाहरण, Gemini API सेवा देने वाली कंपनी के हिसाब से हैं.

  • कैश मेमोरी, किसी Gemini मॉडल के हिसाब से होती है. आपके ऐप्लिकेशन के प्रॉम्प्ट अनुरोध में, उसी मॉडल का इस्तेमाल किया जाना चाहिए.

  • Agent Platform Gemini API (formerly Vertex AI) का इस्तेमाल करते समय, कैश मेमोरी किसी जगह के हिसाब से होती है.
    एक्सप्लिसिट कैश की जगह, सर्वर प्रॉम्प्ट टेंप्लेट की जगह और ऐप्लिकेशन में मॉडल को ऐक्सेस करने की जगह से मेल खानी चाहिए.

इसके अलावा, एक्सप्लिसिट कैश मेमोरी के लिए यहां दी गई सीमाओं और ज़रूरी शर्तों के बारे में भी जानें:

  • एक्सप्लिसिट कैश मेमोरी बनाने के बाद, टीटीएल या समयसीमा खत्म होने के समय को छोड़कर, कैश मेमोरी के बारे में कुछ भी नहीं बदला जा सकता.

  • आप किसी भी समर्थित इनपुट फ़ाइल के एमआईएमई टाइप या कैश मेमोरी बनाने के अनुरोध में दिए गए टेक्स्ट को भी कैश मेमोरी में सेव कर सकते हैं.

  • अगर आपको किसी फ़ाइल को कैश मेमोरी में शामिल करना है, तो आपको फ़ाइल को Cloud Storage यूआरआई के तौर पर देना होगा. यह ब्राउज़र या YouTube का यूआरएल नहीं हो सकता.

    इसके अलावा, फ़ाइल के ऐक्सेस से जुड़ी पाबंदियों की जांच कैश मेमोरी बनने के समय की जाती है. साथ ही, उपयोगकर्ता के अनुरोध के समय, ऐक्सेस से जुड़ी पाबंदियों की जांच नहीं की जाती है. इसलिए, पक्का करें कि एक्सप्लिसिट कैश मेमोरी में शामिल किया गया कोई भी डेटा, अनुरोध करने वाले किसी भी उपयोगकर्ता के लिए सही हो.

  • अगर आपको सिस्टम के निर्देशों या टूल (जैसे कि कोड एक्ज़ीक्यूशन, यूआरएल कॉन्टेक्स्ट, Google Search के साथ ग्राउंडिंग या Google Maps के साथ ग्राउंडिंग) का इस्तेमाल करना है, तो कैश मेमोरी में उनके कॉन्फ़िगरेशन होने चाहिए. इन्हें सर्वर प्रॉम्प्ट टेंप्लेट या आपके ऐप्लिकेशन के प्रॉम्प्ट अनुरोध में कॉन्फ़िगर नहीं किया जा सकता. ध्यान दें कि सर्वर प्रॉम्प्ट टेंप्लेट, फ़ंक्शन कॉलिंग (या चैट) की सुविधा के साथ अभी तक काम नहीं करते हैं. अपनी कैश मेमोरी में सिस्टम के निर्देशों और टूल को कॉन्फ़िगर करने के तरीके के बारे में जानने के लिए, Agent Platform Gemini API (formerly Vertex AI) का REST API देखें.

पहला चरण: कैश मेमोरी बनाना

Agent Platform Gemini API (formerly Vertex AI) के REST API का सीधे तौर पर इस्तेमाल करके, कैश मेमोरी बनाएं.

यहां एक उदाहरण दिया गया है, जिसमें किसी PDF फ़ाइल को उसके कॉन्टेंट के तौर पर एक्सप्लिसिट कैश मेमोरी में सेव किया गया है.

Cloud Shell Firebase कंसोल में, उस Google खाते से पहले ही पुष्टि हो चुकी होती है जिसका इस्तेमाल आपने Firebase कंसोल में लॉग इन करने के लिए किया था.

सिंटैक्स:

PROJECT_ID="PROJECT_ID"
MODEL_ID="GEMINI_MODEL"  # for example, gemini-3.8-flash
LOCATION="LOCATION"  # location for both the cache and the model
MIME_TYPE="MIME_TYPE"
CACHED_CONTENT_URI="CLOUD_STORAGE_FILE_URI"  # must be a Cloud Storage URI
CACHE_DISPLAY_NAME="CACHE_DISPLAY_NAME"  # optional
TTL="CACHE_TIME_TO_LIVE"  # optional (if not specified, defaults to 3600s)

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents \
-d @- <<EOF
{
  "model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "${MIME_TYPE}",
            "fileUri": "${CACHED_CONTENT_URI}"
          }
        }
      ]
    }
  ],
  "displayName": "${CACHE_DISPLAY_NAME}",
  "ttl": "${TTL}"
}
EOF

अनुरोध का उदाहरण:

PROJECT_ID="my-amazing-app"
MODEL_ID="gemini-3.8-flash"
LOCATION="global"
MIME_TYPE="application/pdf"
CACHED_CONTENT_URI="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf"
CACHE_DISPLAY_NAME="Gemini - A Family of Highly Capable Multimodal Model (PDF)"
TTL="7200s"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents \
-d @- <<EOF
{
  "model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "${MIME_TYPE}",
            "fileUri": "${CACHED_CONTENT_URI}"
          }
        }
      ]
    }
  ],
  "displayName": "${CACHE_DISPLAY_NAME}",
  "ttl": "${TTL}"
}
EOF

जवाब का उदाहरण:

जवाब में पूरी तरह क्वालिफ़ाइड संसाधन name शामिल है, जो कैश के लिए दुनिया भर में यूनीक है. ध्यान दें कि आखिरी सेगमेंट, कैश आईडी है. आपको इस पूरी name वैल्यू का इस्तेमाल, वर्कफ़्लो के अगले चरण में करना होगा.

{
  "name": "projects/861083271981/locations/global/cachedContents/4545031458888089601",
  "model": "projects/my-amazing-app/locations/global/publishers/google/models/gemini-3.8-flash",
  "createTime": "2024-06-04T01:11:50.808236Z",
  "updateTime": "2024-06-04T01:11:50.808236Z",
  "expireTime": "2024-06-04T02:11:50.794542Z"
}

दूसरा चरण: सर्वर प्रॉम्प्ट टेंप्लेट में कैश मेमोरी का रेफ़रंस देना

कैश बनाने के बाद, cachedContent प्रॉपर्टी के सर्वर प्रॉम्प्ट टेंप्लेट में name का इस्तेमाल करके, इसे रेफ़रंस करें.

सर्वर प्रॉम्प्ट टेंप्लेट बनाते समय, इन ज़रूरी शर्तों का पालन करें:

  • कैश मेमोरी बनाते समय, जवाब में मौजूद पूरी तरह से क्वालिफ़ाइड name का इस्तेमाल करें. यह वह वैकल्पिक डिसप्ले नेम नहीं है जिसे आपने अनुरोध में दिया था.

  • सर्वर प्रॉम्प्ट टेंप्लेट की जगह की जानकारी, कैश मेमोरी की जगह की जानकारी से मेल खानी चाहिए.

  • सिस्टम के निर्देशों या टूल का इस्तेमाल करने के लिए, उन्हें कैश मेमोरी के हिस्से के तौर पर कॉन्फ़िगर किया जाना चाहिए. साथ ही, उन्हें सर्वर प्रॉम्प्ट टेंप्लेट के हिस्से के तौर पर नहीं कॉन्फ़िगर किया जाना चाहिए.

सिंटैक्स:

{{cachedContent name="YOUR_CACHE_RESOURCE_NAME"}}

{{role "user"}}
{{userPrompt}}

उदाहरण:

{{cachedContent name="projects/861083271981/locations/global/cachedContents/4545031458888089601"}}

{{role "user"}}
{{userPrompt}}

इसके अलावा, सर्वर प्रॉम्प्ट टेंप्लेट में name पैरामीटर की वैल्यू, डाइनैमिक इनपुट वैरिएबल हो सकती है. उदाहरण के लिए, {{cachedContent name=someVariable}} की मदद से, कैश मेमोरी के name को अपने ऐप्लिकेशन से किए गए अनुरोध के इनपुट के तौर पर शामिल किया जा सकता है.

तीसरा चरण: अपने ऐप्लिकेशन से किए गए अनुरोध में, सर्वर प्रॉम्प्ट टेंप्लेट का रेफ़रंस दें

अनुरोध लिखते समय, इन बातों का ध्यान रखें:

  • Agent Platform Gemini API (formerly Vertex AI) का इस्तेमाल करें, क्योंकि कैश मेमोरी को इसी Gemini API प्रोवाइडर की मदद से बनाया गया था.

  • आपके ऐप्लिकेशन के प्रॉम्प्ट अनुरोध में, मॉडल को ऐक्सेस करने की जगह, सर्वर प्रॉम्प्ट टेंप्लेट और कैश मेमोरी की जगह से मेल खानी चाहिए.

Swift

// ...

// Initialize the Agent Platform Gemini API backend service (formerly Vertex AI).
// Create a `TemplateGenerativeModel` instance.
// Make sure to specify the same location as the server prompt template and the cache.
let model = FirebaseAI.firebaseAI(backend: .agentPlatform(location: "LOCATION"))
                                  .templateGenerativeModel()

do {
    let response = try await model.generateContent(
        // Specify your template ID.
        templateID: "TEMPLATE_ID"
    )
    if let text = response.text {
        print("Response Text: \(text)")
    }
} catch {
    print("An error occurred: \(error)")
}
print("\n")

Kotlin

// ...

// Initialize the Agent Platform Gemini API backend service (formerly Vertex AI).
// Create a `TemplateGenerativeModel` instance.
// Make sure to specify the same location as the server prompt template and the cache.
val model = Firebase.ai(backend = GenerativeBackend.agentPlatform(location = "LOCATION"))
                        .templateGenerativeModel()

val response = model.generateContent(
    // Specify your template ID.
    "TEMPLATE_ID",
)

val text = response.text
println(text)

Java

// ...

// Initialize the Agent Platform Gemini API backend service (formerly Vertex AI).
// Create a `TemplateGenerativeModel` instance.
// Make sure to specify the same location as the server prompt template and the cache.
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance(GenerativeBackend.agentPlatform("LOCATION"))
      .templateGenerativeModel();

TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);

Future<GenerateContentResponse> response = model.generateContent(
    // Specify your template ID.
    "TEMPLATE_ID"
);
addCallback(response,
      new FutureCallback<GenerateContentResponse>() {
          public void onSuccess(GenerateContentResponse result) {
            System.out.println(result.getText());
          }
          public void onFailure(Throwable t) {
            reportError(t);
          }
    }
executor);

Web

// ...

// Initialize the Agent Platform Gemini API backend service (formerly Vertex AI).
// Make sure to specify the same location as the server prompt template and the cache.
const ai = getAI(app, { backend: new AgentPlatformBackend('LOCATION') });

// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);

const result = await model.generateContent(
  // Specify your template ID.
  'TEMPLATE_ID'
);

const response = result.response;
const text = response.text();

Dart

// ...

// Initialize the Agent Platform Gemini API backend service (formerly Vertex AI).
// Create a `TemplateGenerativeModel` instance.
// Make sure to specify the same location as the server prompt template and the cache.
var _model = FirebaseAI.agentPlatform(location: 'LOCATION').templateGenerativeModel()

var response = await _model.generateContent(
        // Specify your template ID.
        'TEMPLATE_ID',
      );

var text = response?.text;
print(text);

Unity

// ...

// Initialize the Agent Platform Gemini API backend service (formerly Vertex AI).
// Make sure to specify the same location as the server prompt template and the cache.
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.AgentPlatform(location: "LOCATION"));

// Create a `TemplateGenerativeModel` instance.
var model = firebaseAI.GetTemplateGenerativeModel();

try
{
  var response = await model.GenerateContentAsync(
      // Specify your template ID.
      "TEMPLATE_ID"
  );
  Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
  Debug.LogError($"An error occurred: {e.Message}");
}



एक्सप्लिसिट कैश मैनेज करना

इस सेक्शन में, साफ़ तौर पर दिखाए गए कॉन्टेंट की कैश मेमोरी को मैनेज करने के बारे में बताया गया है. इसमें यह भी बताया गया है कि सभी कैश मेमोरी की सूची कैसे बनाएं, किसी कैश मेमोरी के बारे में मेटाडेटा कैसे पाएं, किसी कैश मेमोरी के TTL या खत्म होने के समय को कैसे अपडेट करें, और किसी कैश मेमोरी को कैसे मिटाएं.

Agent Platform Gemini API (formerly Vertex AI) के REST API का इस्तेमाल करके, साफ़ तौर पर बताई गई कैश मेमोरी को मैनेज किया जाता है.

अश्लील कॉन्टेंट की कैश मेमोरी बन जाने के बाद, टीटीएल या खत्म होने के समय के अलावा, कैश मेमोरी के बारे में कुछ भी नहीं बदला जा सकता.

Cloud Shell Firebase कंसोल में, उस Google खाते से पहले ही पुष्टि हो चुकी होती है जिसका इस्तेमाल आपने Firebase कंसोल में लॉग इन करने के लिए किया था.

सभी कैश मेमोरी की सूची बनाना

अपने प्रोजेक्ट के लिए उपलब्ध सभी एक्सप्लिसिट कैश की सूची बनाई जा सकती है. इस कमांड से, सिर्फ़ बताई गई जगह की कैश मेमोरी दिखेगी.

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"

curl \
-X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents

किसी कैश मेमोरी के बारे में मेटाडेटा पाना

कैश मेमोरी में सेव किए गए असली कॉन्टेंट को वापस नहीं लाया जा सकता और न ही देखा जा सकता. हालांकि, साफ़ तौर पर कैश किए गए डेटा के बारे में मेटाडेटा को वापस पाया जा सकता है. इसमें name, model, display_name, usage_metadata, create_time, update_time, और expire_time शामिल हैं.

आपको CACHE_ID देना होगा. यह कैश मेमोरी के पूरी तरह से क्वालिफ़ाइड संसाधन name का आखिरी सेगमेंट होता है.

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID"  # the final segment in the `name` of the cache

curl \
-X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID}

किसी कैश मेमोरी के लिए टीटीएल या इस्तेमाल खत्म होने का समय अपडेट करना

एक्सप्लिसिट कैश बनाते समय, ttl या expire_time को सेट किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.

  • ttl: कैश मेमोरी के लिए TTL (टाइम-टू-लाइव). खास तौर पर, यह कैश मेमोरी के बनने के बाद या ttl के अपडेट होने के बाद, कैश मेमोरी के खत्म होने से पहले के सेकंड और नैनोसेकंड की संख्या होती है. ttl सेट करने पर, कैश मेमोरी का expireTime अपने-आप अपडेट हो जाता है.

  • expire_time: यह एक Timestamp (जैसे कि 2024-06-30T09:00:00.000000Z) है. यह पूरी तारीख और समय के बारे में बताता है, जब कैश मेमोरी की समयसीमा खत्म हो जाती है.

इनमें से कोई भी वैल्यू सेट न करने पर, डिफ़ॉल्ट टीटीएल एक घंटे का होता है. टीटीएल के लिए, कम से कम या ज़्यादा से ज़्यादा की कोई सीमा नहीं है.

एक्सप्लिसिट कैश के लिए, ttl या expire_time को जोड़ा या अपडेट किया जा सकता है. आपको CACHE_ID देना होगा. यह कैश मेमोरी के पूरी तरह से क्वालिफ़ाइड संसाधन name का आखिरी सेगमेंट होता है.

अपडेट करें ttl

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID"  # the final segment in the `name` of the cache
TTL="CACHE_TIME_TO_LIVE"

curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID} -d \
'{
  "ttl": "'$TTL'"
}'

अपडेट करें expire_time

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID"  # the final segment in the `name` of the cache
EXPIRE_TIME="ABSOLUTE_TIME_CACHE_EXPIRES"

curl \
-X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID} -d \
'{
  "expire_time": "'$EXPIRE_TIME'"
}'

कैश मेमोरी मिटाना

जब किसी एक्सप्लिसिट कैश की ज़रूरत नहीं होती है, तो उसे मिटाया जा सकता है.

आपको CACHE_ID देना होगा. यह कैश मेमोरी के पूरी तरह से क्वालिफ़ाइड संसाधन name का आखिरी सेगमेंट होता है.

PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
CACHE_ID="CACHE_ID"  # the final segment in the `name` of the cache

curl \
-X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/cachedContents/${CACHE_ID}



एक्सप्लिसिट कैश मेमोरी के लिए कीमत

एक्सप्लिसिट कैश मेमोरी, पैसे चुकाकर इस्तेमाल की जाने वाली सुविधा है. इसे लागत कम करने के लिए डिज़ाइन किया गया है. कीमत इन बातों के आधार पर तय की जाती है:

  • कैश मेमोरी बनाने के लिए इस्तेमाल किए गए इनपुट टोकन: इंप्लिसिट और एक्सप्लिसिट, दोनों तरह की कैश मेमोरी के लिए, आपसे इनपुट टोकन के लिए शुल्क लिया जाता है. यह शुल्क, इनपुट टोकन की स्टैंडर्ड कीमत के हिसाब से लिया जाता है.

  • कैश मेमोरी का स्टोरेज: साफ़ तौर पर कैश मेमोरी में सेव करने के लिए, स्टोरेज का शुल्क भी लगता है. यह शुल्क इस बात पर निर्भर करता है कि कैश मेमोरी को कितने समय तक सेव रखा जाता है. इंप्लिसिट कैश मेमोरी के लिए, स्टोरेज का कोई शुल्क नहीं लगता. ज़्यादा जानकारी के लिए, Agent Platform Gemini API (formerly Vertex AI) के लिए कीमत देखें.

  • कैश किए गए कॉन्टेंट का इस्तेमाल: एक्सप्लिसिट कैशिंग से, एक्सप्लिसिट कैश का रेफ़रंस देने पर छूट मिलती है. इसका मतलब है कि मौजूदा कैश का रेफ़रंस देने पर, आपको इनपुट टोकन पर छूट मिलती है. Gemini 2.5 और इसके बाद के मॉडल के लिए, यह छूट 90% है.

आपके इनपुट के कैश मेमोरी में सेव किए गए हिस्से में मौजूद टोकन की संख्या, जवाब के मेटाडेटा में मौजूद cachedContentTokenCount फ़ील्ड में दी जाती है.