একটি সাধারণ AI ওয়ার্কফ্লোতে, আপনি একটি মডেলে একই ইনপুট টোকেন বারবার পাস করতে পারেন। Gemini API প্রসঙ্গ ক্যাশিং বৈশিষ্ট্য ব্যবহার করে, আপনি একবার মডেলে কিছু বিষয়বস্তু প্রেরণ করতে পারেন, ইনপুট টোকেনগুলি ক্যাশ করতে পারেন এবং তারপরে পরবর্তী অনুরোধগুলির জন্য ক্যাশে করা টোকেনগুলি উল্লেখ করতে পারেন৷ নির্দিষ্ট ভলিউমে, ক্যাশে করা টোকেন ব্যবহার করা টোকেনের একই কর্পাসে বারবার পাস করার চেয়ে কম খরচ।
আপনি যখন টোকেনগুলির একটি সেট ক্যাশে করেন, তখন টোকেনগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলার আগে আপনি কতক্ষণ ক্যাশে থাকতে চান তা চয়ন করতে পারেন। এই ক্যাশিং সময়কালকে টাইম টু লিভ (TTL) বলা হয়। সেট না থাকলে, TTL ডিফল্ট 1 ঘন্টা। ক্যাশিংয়ের জন্য খরচ নির্ভর করে ইনপুট টোকেনের আকারের উপর এবং আপনি কতক্ষণ টোকেনগুলি বজায় রাখতে চান।
জেমিনি 1.5 এবং 2.0 স্থিতিশীল মডেল সিরিজের সাথে প্রসঙ্গ ক্যাশিং সমর্থিত।
কখন প্রসঙ্গ ক্যাশিং ব্যবহার করবেন
প্রসঙ্গ ক্যাশিং এমন পরিস্থিতিতে বিশেষভাবে উপযুক্ত যেখানে একটি উল্লেখযোগ্য প্রারম্ভিক প্রসঙ্গ সংক্ষিপ্ত অনুরোধ দ্বারা বারবার উল্লেখ করা হয়। ব্যবহারের ক্ষেত্রে প্রসঙ্গ ক্যাশিং ব্যবহার করার কথা বিবেচনা করুন যেমন:
- বিস্তৃত সিস্টেম নির্দেশাবলী সহ চ্যাটবট
- দীর্ঘ ভিডিও ফাইলের পুনরাবৃত্তিমূলক বিশ্লেষণ
- বৃহৎ নথি সেটের বিরুদ্ধে পুনরাবৃত্ত প্রশ্ন
- ঘন ঘন কোড সংগ্রহস্থল বিশ্লেষণ বা বাগ ফিক্সিং
কিভাবে ক্যাশিং খরচ কমায়
কনটেক্সট ক্যাশিং হল একটি প্রদত্ত বৈশিষ্ট্য যা সামগ্রিক অপারেশনাল খরচ কমানোর জন্য ডিজাইন করা হয়েছে। বিলিং নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করে:
- ক্যাশে টোকেন গণনা: ক্যাশ করা ইনপুট টোকেনের সংখ্যা, পরবর্তী প্রম্পটে অন্তর্ভুক্ত করার সময় একটি হ্রাস হারে বিল করা হয়।
- সঞ্চয়স্থানের সময়কাল: ক্যাশ করা টোকেন সংরক্ষিত সময়ের পরিমাণ (TTL), ক্যাশ করা টোকেন গণনার TTL সময়ের উপর ভিত্তি করে বিল করা হয়। TTL-এ কোন সর্বনিম্ন বা সর্বোচ্চ সীমা নেই।
- অন্যান্য কারণ: অন্যান্য চার্জ প্রযোজ্য, যেমন নন-ক্যাশড ইনপুট টোকেন এবং আউটপুট টোকেনগুলির জন্য।
আপ-টু-ডেট মূল্যের বিশদ বিবরণের জন্য, Gemini API মূল্য নির্ধারণ পৃষ্ঠাটি পড়ুন। কিভাবে টোকেন গণনা করতে হয় তা জানতে, টোকেন গাইড দেখুন।
প্রসঙ্গ ক্যাশিং কিভাবে ব্যবহার করবেন
এই বিভাগটি অনুমান করে যে আপনি একটি Gemini SDK ইনস্টল করেছেন (বা কার্ল ইনস্টল করেছেন) এবং আপনি একটি API কী কনফিগার করেছেন, যেমন quickstart এ দেখানো হয়েছে।
একটি ক্যাশে ব্যবহার করে সামগ্রী তৈরি করুন
নিম্নলিখিত উদাহরণ দেখায় কিভাবে একটি ক্যাশে সিস্টেম নির্দেশনা এবং একটি টেক্সট ফাইল ব্যবহার করে বিষয়বস্তু তৈরি করতে হয়।
import {
GoogleGenAI,
createUserContent,
createPartFromUri,
} from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
async function main() {
const doc = await ai.files.upload({
file: "path/to/file.txt",
config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", doc.name);
const modelName = "gemini-2.0-flash-001";
const cache = await ai.caches.create({
model: modelName,
config: {
contents: createUserContent(createPartFromUri(doc.uri, doc.mimeType)),
systemInstruction: "You are an expert analyzing transcripts.",
},
});
console.log("Cache created:", cache);
const response = await ai.models.generateContent({
model: modelName,
contents: "Please summarize this transcript",
config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);
}
await main();
তালিকা ক্যাশে
ক্যাশে করা বিষয়বস্তু পুনরুদ্ধার করা বা দেখা সম্ভব নয়, তবে আপনি ক্যাশে মেটাডেটা ( name
, model
, displayName
, usageMetadata
, createTime
, updateTime
, এবং expireTime
) পুনরুদ্ধার করতে পারেন।
সমস্ত আপলোড করা ক্যাশে মেটাডেটা তালিকাভুক্ত করতে, GoogleGenAI.caches.list()
ব্যবহার করুন :
console.log("My caches:");
const pager = await ai.caches.list({ config: { pageSize: 10 } });
let page = pager.page;
while (true) {
for (const c of page) {
console.log(" ", c.name);
}
if (!pager.hasNextPage()) break;
page = await pager.nextPage();
}
একটি ক্যাশে আপডেট করুন
আপনি একটি ক্যাশের জন্য একটি নতুন ttl
বা expireTime
সেট করতে পারেন। ক্যাশে সম্পর্কে অন্য কিছু পরিবর্তন করা সমর্থিত নয়।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে GoogleGenAI.caches.update()
ব্যবহার করে একটি ক্যাশের ttl
আপডেট করতে হয়।
const ttl = `${2 * 3600}s`; // 2 hours in seconds
const updatedCache = await ai.caches.update({
name: cache.name,
config: { ttl },
});
console.log("After update (TTL):", updatedCache);
একটি ক্যাশে মুছুন
ক্যাশিং পরিষেবা ক্যাশে থেকে ম্যানুয়ালি বিষয়বস্তু অপসারণের জন্য একটি মুছে ফেলার অপারেশন প্রদান করে। GoogleGenAI.caches.delete()
ব্যবহার করে কিভাবে একটি ক্যাশে মুছতে হয় তা নিচের উদাহরণটি দেখায়।
await ai.caches.delete({ name: cache.name });
অতিরিক্ত বিবেচনা
প্রসঙ্গ ক্যাশিং ব্যবহার করার সময় নিম্নলিখিত বিবেচনাগুলি মনে রাখবেন:
- প্রসঙ্গ ক্যাশিংয়ের জন্য সর্বনিম্ন ইনপুট টোকেন গণনা হল 32,768, এবং সর্বাধিক প্রদত্ত মডেলের জন্য সর্বাধিকের সমান। (টোকেন গণনা সম্পর্কে আরও জানতে, টোকেন গাইড দেখুন)।
- মডেলটি ক্যাশে করা টোকেন এবং নিয়মিত ইনপুট টোকেনের মধ্যে কোনো পার্থক্য করে না। ক্যাশে করা বিষয়বস্তু হল প্রম্পটের একটি উপসর্গ।
- কনটেক্সট ক্যাশিং-এ কোনো বিশেষ হার বা ব্যবহারের সীমা নেই;
GenerateContent
জন্য আদর্শ হারের সীমা প্রযোজ্য, এবং টোকেন সীমা ক্যাশে করা টোকেন অন্তর্ভুক্ত করে। - ক্যাশে পরিষেবার ক্রিয়েট, গেট এবং লিস্ট ক্রিয়াকলাপ থেকে
usage_metadata
ক্যাশ করা টোকেনের সংখ্যা ফেরত দেওয়া হয়, এবং ক্যাশে ব্যবহার করার সময়GenerateContent
এও।