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

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

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

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

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

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

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

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

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

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

  • gemini-3.1-pro-preview
  • gemini-3.5-flash
  • gemini-3.1-flash-lite
  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite

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

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

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

  • Gemini Pro मॉडल: कम से कम 4,096 टोकन
  • Gemini फ़्लैश मॉडल: कम से कम 1024 टोकन

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



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

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

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

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

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



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

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

यहां बताया गया है कि साफ़ तौर पर यौन गतिविधियों को दिखाने वाले कॉन्टेंट की कैश मेमोरी को कैसे सेट अप किया जा सकता है और उसका इस्तेमाल कैसे किया जा सकता है:

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

सिंटैक्स:

PROJECT_ID="PROJECT_ID"
MODEL_ID="GEMINI_MODEL"  # for example, gemini-3.5-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.5-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.5-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 को अपने ऐप्लिकेशन से किए गए अनुरोध के इनपुट के तौर पर शामिल किया जा सकता है.

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

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

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

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

Swift

// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
let model = FirebaseAI.firebaseAI(backend: .vertexAI(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 Vertex AI Gemini API backend service
// 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.vertexAI(location = "LOCATION"))
                        .templateGenerativeModel()

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

val text = response.text
println(text)

Java

// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().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 Vertex AI Gemini API backend service
// Make sure to specify the same location as the server prompt template and the cache
const ai = getAI(app, { backend: new VertexAIBackend('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 Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
// Make sure to specify the same location as the server prompt template and the cache
var _model = FirebaseAI.vertexAI(location: 'LOCATION').templateGenerativeModel()

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

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

Unity

// ...

// Initialize the Vertex AI Gemini API backend service
// Make sure to specify the same location as the server prompt template and the cache
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.VertexAI(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}");
}



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

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

Vertex AI Gemini API के 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 सेट करने पर, कैश मेमोरी का 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}



एक्सप्लिसिट कैशिंग के लिए कीमत

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

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

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

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

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