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

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

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

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

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

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

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

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

इस्तेमाल किए जा सकने वाले मॉडल

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

  • gemini-3.1-pro-preview
  • 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 प्रो मॉडल: कम से कम 4,096 टोकन
  • Gemini Flash मॉडल: कम से कम 1,024 टोकन

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

पहला चरण: कैश बनाना

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

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

सिंटैक्स:

PROJECT_ID="PROJECT_ID"
MODEL_ID="GEMINI_MODEL"  # for example, gemini-3.7-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.7-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.7-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}");
}



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

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

एक्सप्लिसिट कैश मैनेज करने के लिए, Agent Platform Gemini API (formerly Vertex AI) के REST API का इस्तेमाल करें.

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

सभी कैश की सूची बनाना

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

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 सेट करने पर, कैश का 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 फ़ील्ड में, आपके इनपुट के कैश मेमोरी में सेव किए गए हिस्से में मौजूद टोकन की संख्या दी जाती है.