Firebase AI Logic-এ কন্টেক্সট ক্যাশিং

আপনার AI ফিচারের জন্য, আপনি একই ইনপুট টোকেন (কন্টেন্ট) বারবার কোনও মডেলে পাঠাতে পারেন। এইসব ব্যবহারের ক্ষেত্রে, আপনি এর পরিবর্তে এই কন্টেন্ট ক্যাশে করতে পারেন, যার অর্থ হল আপনি কন্টেন্টটি মডেলে একবার পাস করেন, এটি স্টোর করেন এবং পরবর্তী অনুরোধে এটি রেফারেন্স করেন।

কনটেক্সট ক্যাশিং, বিপুল পরিমাণ কন্টেন্ট, যেমন বিপুল পরিমাণ টেক্সট, অডিও ফাইল বা ভিডিও ফাইল নিয়ে বারবার করা টাস্কের ক্ষেত্রে লেটেন্সি ও খরচ উল্লেখযোগ্যভাবে কমাতে পারে। ক্যাশে করা কন্টেন্টের কিছু সাধারণ ব্যবহারের ক্ষেত্রে বিস্তারিত পারসোনা ডকুমেন্ট, কোডবেস বা ম্যানুয়াল অন্তর্ভুক্ত থাকে।

Gemini মডেল দুটি ভিন্ন ক্যাশিং মেকানিজম অফার করে:

  • ইমপ্লিসিট ক্যাশিং: বেশিরভাগ মডেলে অটোমেটিক চালু করা থাকে, খরচ বাঁচানোর কোনও গ্যারেন্টি নেই

  • এক্সপ্লিসিট ক্যাশিং: বেশিরভাগ মডেলে বিকল্প হিসেবে এবং ম্যানুয়ালি চালু করা যেতে পারে, সাধারণত এর ফলে খরচ কমে যায়

এক্সপ্লিসিট ক্যাশিং সেইসব ক্ষেত্রে উপযোগী যেখানে আপনি খরচ বাঁচানোর ব্যাপারে নিশ্চিত হতে চান, তবে এর জন্য ডেভেলপারকে কিছু অতিরিক্ত কাজ করতে হয়।

ইমপ্লিসিট ও এক্সপ্লিসিট ক্যাশিং, দুটির ক্ষেত্রেই আপনার উত্তরের মেটাডেটাতে থাকা cachedContentTokenCount ফিল্ডটি আপনার ইনপুটের ক্যাশ করা অংশে টোকেনের সংখ্যা নির্দেশ করে। এক্সপ্লিসিট ক্যাশিংয়ের জন্য, এই পৃষ্ঠার নিচে দেওয়া দাম সম্পর্কিত তথ্য পর্যালোচনা করতে ভুলবেন না।

যেসব মডেলে কাজ করে

নিম্নলিখিত মডেল ব্যবহার করার সময় ক্যাশিং কাজ করে:

  • gemini-4-argon (শুধুমাত্র ইমপ্লিসিট ক্যাশিং; এক্সপ্লিসিট ক্যাশিং কাজ করে না)
  • gemini-3.8-flash
  • gemini-3.5-flash-lite (এবং পুরনো gemini-3.1-flash-lite)

পুরনো সাধারণ-ব্যবহারের Gemini 3.x Flash এবং Gemini 2.5 মডেল এই ক্ষমতাকে সমর্থন করে, কিন্তু আসন্ন বন্ধের তারিখ এবং/অথবা নতুন মডেলে অটোমেটিক রাউটিংয়ের কারণে এগুলি আর ব্যবহারের জন্য সাজেস্ট করা হয় না।

মিডিয়া-জেনারেটিং মডেল (যেমন, Gemini Nano Banana মডেল যেমন gemini-nano-banana-2.1) কনটেক্সট ক্যাশিং সাপোর্ট করে না।

ক্যাশে করা কন্টেন্টের সাইজ সংক্রান্ত সীমা

প্রতিটি মডেলে ক্যাশে করা কন্টেন্টের জন্য ন্যূনতম টোকেন কাউন্টের প্রয়োজনীয়তা রয়েছে। মডেলের কন্টেক্সট উইন্ডো অনুযায়ী সর্বাধিক সীমা নির্ধারিত হয়।

  • Gemini 4 Argon: ন্যূনতম ৪০৯৬ টোকেন (Gemini Developer API) অথবা ন্যূনতম ৬১৪৪ টোকেন (Agent Platform Gemini API (formerly Vertex AI))
  • Gemini Pro মডেল: কমপক্ষে ৪০৯৬ টোকেন
  • Gemini Flash মডেল: কমপক্ষে ১০২৪টি টোকেন

এছাড়াও, আপনি ব্লব বা টেক্সট ব্যবহার করে সর্বাধিক ১০ এমবি সাইজের কন্টেন্ট ক্যাশে করতে পারবেন।



ইমপ্লিসিট ক্যাশিং

ইমপ্লিসিট ক্যাশিং ডিফল্ট হিসেবে চালু করা থাকে এবং বেশিরভাগ Gemini মডেলের জন্য উপলভ্য।

আপনার অনুরোধ ক্যাশে করা কন্টেন্টে হিট করলে, Google অটোমেটিক খরচ বাঁচায়। আপনার অনুরোধে ইমপ্লিসিট ক্যাশিং ব্যবহার করার সম্ভাবনা বাড়ানোর কিছু উপায় এখানে দেওয়া হল:

  • আপনার প্রম্পটের শুরুতে বড় এবং সাধারণ কন্টেন্ট রাখার চেষ্টা করুন।
  • অল্প সময়ের মধ্যে একই ধরনের প্রিফিক্স সহ অনুরোধ পাঠানোর চেষ্টা করুন।

আপনার ইনপুটের ক্যাশে করা অংশে টোকেনের সংখ্যা, উত্তরের মেটাডেটার cachedContentTokenCount ফিল্ডে প্রদান করা হয়।



এক্সপ্লিসিট ক্যাশিং

এক্সপ্লিসিট ক্যাশিং ডিফল্ট হিসেবে চালু করা থাকে না এবং এটি Gemini মডেলের একটি ঐচ্ছিক ক্ষমতা।

মনে রাখবেন যে gemini-4-argon মডেলে এক্সপ্লিসিট ক্যাশিং কাজ করে না।

আপনি কীভাবে অনুপযুক্ত কন্টেন্ট ক্যাশে সেট-আপ করতে এবং তা নিয়ে কাজ করতে পারবেন তা এখানে দেওয়া হল:

মনে রাখবেন যে এক্সপ্লিসিট কন্টেন্ট ক্যাশে ইমপ্লিসিট ক্যাশিংয়ের সাথে ইন্টার‍্যাক্ট করে, যার ফলে এক্সপ্লিসিট ক্যাশে করা কন্টেন্টের বাইরে অতিরিক্ত ক্যাশিং হতে পারে। আপনি ইমপ্লিসিট ক্যাশিং বন্ধ করে এবং এক্সপ্লিসিট ক্যাশ তৈরি না করে ক্যাশে ডেটা রেখে দেওয়া আটকাতে পারবেন। আরও তথ্যের জন্য, ক্যাশিং চালু ও বন্ধ করা দেখুন।



স্পষ্ট ক্যাশে তৈরি ও ব্যবহার করা

স্পষ্ট কন্টেন্ট ক্যাশে তৈরি ও ব্যবহার করতে নিম্নলিখিত বিষয়গুলি প্রয়োজন:

  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) ব্যবহার করার সময় ক্যাশে কোনও লোকেশনের জন্য নির্দিষ্ট হয়।
    এক্সপ্লিসিট ক্যাশের লোকেশন অবশ্যই আপনার অ্যাপের প্রম্পট অনুরোধে সার্ভার প্রম্পট টেমপ্লেটের লোকেশন এবং আপনি যে লোকেশন থেকে মডেল অ্যাক্সেস করেন তার সাথে মিলতে হবে।

এছাড়াও, এক্সপ্লিসিট ক্যাশিংয়ের জন্য নিম্নলিখিত সীমাবদ্ধতা এবং প্রয়োজনীয়তা সম্পর্কে সচেতন থাকুন:

  • স্পষ্ট ক্যাশে তৈরি হয়ে গেলে, TTL বা মেয়াদ শেষ হওয়ার সময় ছাড়া ক্যাশের আর কোনও কিছু পরিবর্তন করতে পারবেন না।

  • আপনি যেকোনও কাজ করে এমন ইনপুট ফাইল MIME টাইপ অথবা ক্যাশে তৈরি করার অনুরোধে দেওয়া টেক্সট ক্যাশে করতে পারবেন।

  • আপনি ক্যাশে কোনও ফাইল অন্তর্ভুক্ত করতে চাইলে, আপনাকে অবশ্যই ফাইলটি Cloud Storage URI হিসেবে প্রদান করতে হবে। এটি কোনও ব্রাউজার URL বা YouTube URL হলে চলবে না।

    এছাড়াও, ফাইলে অ্যাক্সেস সংক্রান্ত বিধিনিষেধ ক্যাশে-তৈরি-করার-সময় চেক করা হয় এবং ব্যবহারকারী-অনুরোধ-করার-সময় অ্যাক্সেস সংক্রান্ত বিধিনিষেধ আবার চেক করা হয় না। এই কারণে, এক্সপ্লিসিট ক্যাশে অন্তর্ভুক্ত যেকোনও ডেটা সেই ক্যাশে অন্তর্ভুক্ত করে অনুরোধ করা যেকোনও ব্যবহারকারীর জন্য উপযুক্ত কিনা তা নিশ্চিত করুন।

  • আপনি যদি সিস্টেম নির্দেশাবলী বা টুল (যেমন কোড এক্সিকিউশন, URL কন্টেক্সট, Google Search-এর সাথে গ্রাউন্ডিং বা Google Maps-এর সাথে গ্রাউন্ডিং) ব্যবহার করতে চান, তাহলে ক্যাশেতে অবশ্যই তাদের কনফিগারেশন থাকতে হবে। সেগুলি সার্ভার প্রম্পট টেমপ্লেটে বা আপনার অ্যাপের প্রম্পট অনুরোধে কনফিগার করা যাবে না। মনে রাখবেন, সার্ভার প্রম্পট টেমপ্লেট এখনও ফাংশন কলিং (বা চ্যাট) সাপোর্ট করে না। আপনার ক্যাশে সিস্টেম নির্দেশাবলী এবং টুল কীভাবে কনফিগার করবেন সে সম্পর্কে বিশদ বিবরণের জন্য, Agent Platform Gemini API (formerly Vertex AI)-এর REST API দেখুন।

ধাপ ১: ক্যাশে তৈরি করা

Agent Platform Gemini API (formerly Vertex AI)-এর REST API সরাসরি ব্যবহার করে ক্যাশে তৈরি করুন।

নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে PDF ফাইলের কন্টেন্ট হিসেবে সেটির এক্সপ্লিসিট ক্যাশে তৈরি করা হয়।

সিনট্যাক্স:

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.
  templateId: 'TEMPLATE_ID',
  templateVariables: {},
});

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',
        inputs: {},
      );

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",
      new Dictionary<string, object>()
  );
  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 ব্যবহার করে এক্সপ্লিসিট ক্যাশে ম্যানেজ করেন।

অনুপযুক্ত কন্টেন্ট ক্যাশে তৈরি হয়ে গেলে, TTL বা মেয়াদ শেষ হওয়ার সময় ছাড়া ক্যাশের আর কোনও কিছু পরিবর্তন করতে পারবেন না।

সব ক্যাশের তালিকা দেখুন

আপনার প্রোজেক্টের জন্য উপলভ্য সব এক্সপ্লিসিট ক্যাশে আপনি তালিকাভুক্ত করতে পারবেন। এই কমান্ড শুধুমাত্র নির্দিষ্ট লোকেশনে ক্যাশে ফিরিয়ে দেবে।

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 বা মেয়াদ শেষ হওয়ার সময় আপডেট করা

আপনি এক্সপ্লিসিট ক্যাশে তৈরি করার সময়, বিকল্প হিসেবে ttl বা expire_time সেট করতে পারবেন।

  • ttl: ক্যাশের জন্য TTL (টাইম-টু-লিভ), বিশেষ করে ক্যাশ তৈরি হওয়ার পরে বা ttl আপডেট হওয়ার পরে এবং মেয়াদ শেষ হওয়ার আগে ক্যাশ কত সেকেন্ড এবং ন্যানোসেকেন্ড থাকে। আপনি ttl সেট করলে, ক্যাশের expireTime অটোমেটিক আপডেট হয়ে যায়।

  • expire_time: একটি Timestamp (যেমন 2024-06-30T09:00:00.000000Z) যা ক্যাশের মেয়াদ শেষ হওয়ার নির্দিষ্ট তারিখ ও সময় উল্লেখ করে।

আপনি যদি এই ভ্যালুগুলির কোনওটিই সেট না করেন, তাহলে ডিফল্ট TTL হল ১ ঘণ্টা। TTL-এর কোনও সর্বনিম্ন বা সর্বোচ্চ সীমা নেই।

আগে থেকে থাকা এক্সপ্লিসিট ক্যাশের জন্য, আপনি 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 এবং পরবর্তী মডেলের জন্য, এই ছাড় হল ৯০%।

আপনার ইনপুটের ক্যাশে করা অংশে টোকেনের সংখ্যা, উত্তরের মেটাডেটার cachedContentTokenCount ফিল্ডে প্রদান করা হয়।