Caching

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

পদ্ধতি: cachedContents.create

CachedContent রিসোর্স তৈরি করে।

এন্ডপয়েন্ট

পোস্ট https: / /generativelanguage.googleapis.com /v1beta /cachedContents

অনুরোধকারী শরীর

অনুরোধের বডিতে CachedContent এর একটি ইনস্ট্যান্স থাকে।

ক্ষেত্র
contents[] object ( Content )

ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। ক্যাশে করার বিষয়বস্তু।

tools[] object ( Tool )

ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। পরবর্তী প্রতিক্রিয়া তৈরি করতে মডেলটি Tools ব্যবহার করতে পারে তার একটি তালিকা।

expiration Union type
এই রিসোর্সটির মেয়াদ কখন শেষ হবে তা নির্দিষ্ট করে। expiration নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে:
expireTime string ( Timestamp format)

এই রিসোর্সটি কখন মেয়াদোত্তীর্ণ বলে বিবেচিত হবে, তার UTC টাইমস্ট্যাম্প। ইনপুটে যা-ই পাঠানো হোক না কেন, এটি আউটপুটে সর্বদা প্রদান করা হয়।

RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" অথবা "2014-10-02T15:01:23+05:30"

ttl string ( Duration format)

শুধুমাত্র ইনপুট। এই রিসোর্সের জন্য নতুন TTL, শুধুমাত্র ইনপুট।

সেকেন্ডে পরিমাপকৃত সময়কাল, যা সর্বোচ্চ নয়টি ভগ্নাংশ অঙ্ক পর্যন্ত হতে পারে এবং শেষে ' s ' থাকে। উদাহরণ: "3.5s"

displayName string

ঐচ্ছিক। অপরিবর্তনীয়। ক্যাশ করা কন্টেন্টের জন্য ব্যবহারকারী-সৃষ্ট অর্থপূর্ণ প্রদর্শিত নাম। সর্বোচ্চ ১২৮টি ইউনিকোড অক্ষর।

model string

আবশ্যক। অপরিবর্তনীয়। ক্যাশ করা কন্টেন্টের জন্য ব্যবহৃত Model নাম। ফরম্যাট: models/{model}

systemInstruction object ( Content )

Optional. Input only. Immutable. Developer set system instruction. Currently text only.

toolConfig object ( ToolConfig )

ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। টুল কনফিগারেশন। এই কনফিগারেশনটি সকল টুলের জন্য ব্যবহৃত হবে।

উদাহরণ অনুরোধ

মৌলিক

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.5-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

নোড.জেএস

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.5-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    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);

যান

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.5-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

খোলস

wget https://storage.googleapis.com/generativeai-downloads/data/a11.txt
echo '{
  "model": "models/gemini-1.5-flash-001",
  "contents":[
    {
      "parts":[
        {
          "inline_data": {
            "mime_type":"text/plain",
            "data": "'$(base64 $B64FLAGS a11.txt)'"
          }
        }
      ],
    "role": "user"
    }
  ],
  "systemInstruction": {
    "parts": [
      {
        "text": "You are an expert at analyzing transcripts."
      }
    ]
  },
  "ttl": "300s"
}' > request.json

curl -X POST "https://generativelanguage.googleapis.com/v1beta/cachedContents?key=$GEMINI_API_KEY" \
 -H 'Content-Type: application/json' \
 -d @request.json \
 > cache.json

CACHE_NAME=$(cat cache.json | grep '"name":' | cut -d '"' -f 4 | head -n 1)

curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-001:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
      "contents": [
        {
          "parts":[{
            "text": "Please summarize this transcript"
          }],
          "role": "user"
        },
      ],
      "cachedContent": "'$CACHE_NAME'"
    }'

নাম থেকে

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.5-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
cache_name = cache.name  # Save the name for later

# Later retrieve the cache
cache = client.caches.get(name=cache_name)
response = client.models.generate_content(
    model=model_name,
    contents="Find a lighthearted moment from this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

নোড.জেএস

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.5-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
const cacheName = cache.name; // Save the name for later

// Later retrieve the cache
const retrievedCache = await ai.caches.get({ name: cacheName });
const response = await ai.models.generateContent({
  model: modelName,
  contents: "Find a lighthearted moment from this transcript",
  config: { cachedContent: retrievedCache.name },
});
console.log("Response text:", response.text);

যান

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.5-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
cacheName := cache.Name

// Later retrieve the cache.
cache, err = client.Caches.Get(ctx, cacheName, &genai.GetCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Find a lighthearted moment from this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
fmt.Println("Response from cache (create from name):")
printResponse(response)

চ্যাট থেকে

পাইথন

from google import genai
from google.genai import types

client = genai.Client()
model_name = "gemini-3.5-flash"
system_instruction = "You are an expert analyzing transcripts."

# Create a chat session with the given system instruction.
chat = client.chats.create(
    model=model_name,
    config=types.GenerateContentConfig(system_instruction=system_instruction),
)
document = client.files.upload(file=media / "a11.txt")

response = chat.send_message(
    message=["Hi, could you summarize this transcript?", document]
)
print("\n\nmodel:  ", response.text)
response = chat.send_message(
    message=["Okay, could you tell me more about the trans-lunar injection"]
)
print("\n\nmodel:  ", response.text)

# To cache the conversation so far, pass the chat history as the list of contents.
cache = client.caches.create(
    model=model_name,
    config={
        "contents": chat.get_history(),
        "system_instruction": system_instruction,
    },
)
# Continue the conversation using the cached content.
chat = client.chats.create(
    model=model_name,
    config=types.GenerateContentConfig(cached_content=cache.name),
)
response = chat.send_message(
    message="I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", response.text)

নোড.জেএস

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const modelName = "gemini-3.5-flash";
const systemInstruction = "You are an expert analyzing transcripts.";

// Create a chat session with the system instruction.
const chat = ai.chats.create({
  model: modelName,
  config: { systemInstruction: systemInstruction },
});
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);

let response = await chat.sendMessage({
  message: createUserContent([
    "Hi, could you summarize this transcript?",
    createPartFromUri(document.uri, document.mimeType),
  ]),
});
console.log("\n\nmodel:", response.text);

response = await chat.sendMessage({
  message: "Okay, could you tell me more about the trans-lunar injection",
});
console.log("\n\nmodel:", response.text);

// To cache the conversation so far, pass the chat history as the list of contents.
const chatHistory = chat.getHistory();
const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: chatHistory,
    systemInstruction: systemInstruction,
  },
});

// Continue the conversation using the cached content.
const chatWithCache = ai.chats.create({
  model: modelName,
  config: { cachedContent: cache.name },
});
response = await chatWithCache.sendMessage({
  message:
    "I didn't understand that last part, could you explain it in simpler language?",
});
console.log("\n\nmodel:", response.text);

যান

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.5-flash"
systemInstruction := "You are an expert analyzing transcripts."

// Create initial chat with a system instruction.
chat, err := client.Chats.Create(ctx, modelName, &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText(systemInstruction, genai.RoleUser),
}, nil)
if err != nil {
	log.Fatal(err)
}

document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}

// Send first message with the transcript.
parts := make([]genai.Part, 2)
parts[0] = genai.Part{Text: "Hi, could you summarize this transcript?"}
parts[1] = genai.Part{
	FileData: &genai.FileData{
		FileURI :      document.URI,
		MIMEType: document.MIMEType,
	},
}

// Send chat message.
resp, err := chat.SendMessage(ctx, parts...)
if err != nil {
	log.Fatal(err)
}
fmt.Println("\n\nmodel: ", resp.Text())

resp, err = chat.SendMessage(
	ctx, 
	genai.Part{
		Text: "Okay, could you tell me more about the trans-lunar injection",
	},
)
if err != nil {
	log.Fatal(err)
}
fmt.Println("\n\nmodel: ", resp.Text())

// To cache the conversation so far, pass the chat history as the list of contents.
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          chat.History(false),
	SystemInstruction: genai.NewContentFromText(systemInstruction, genai.RoleUser),
})
if err != nil {
	log.Fatal(err)
}

// Continue the conversation using the cached history.
chat, err = client.Chats.Create(ctx, modelName, &genai.GenerateContentConfig{
	CachedContent: cache.Name,
}, nil)
if err != nil {
	log.Fatal(err)
}

resp, err = chat.SendMessage(
	ctx, 
	genai.Part{
		Text: "I didn't understand that last part, could you explain it in simpler language?",
	},
)
if err != nil {
	log.Fatal(err)
}
fmt.Println("\n\nmodel: ", resp.Text())

প্রতিক্রিয়া সংস্থা

সফল হলে, রেসপন্স বডিতে CachedContent এর একটি নতুন তৈরি হওয়া ইনস্ট্যান্স থাকে।

পদ্ধতি: cachedContents.list

ক্যাশ করা বিষয়বস্তু তালিকাভুক্ত করে।

এন্ডপয়েন্ট

https: / /generativelanguage.googleapis.com /v1beta /cachedContents পান

কোয়েরি প্যারামিটার

pageSize integer

ঐচ্ছিক। ফেরত দেওয়ার জন্য ক্যাশ করা কন্টেন্টের সর্বোচ্চ সংখ্যা। পরিষেবাটি এই মানের চেয়ে কমও ফেরত দিতে পারে। যদি নির্দিষ্ট না করা হয়, তাহলে ডিফল্ট (সর্বোচ্চের চেয়ে কম) সংখ্যক আইটেম ফেরত দেওয়া হবে। সর্বোচ্চ মান হলো ১০০০; ১০০০-এর উপরের মানগুলোকে ১০০০-এ রূপান্তরিত করা হবে।

pageToken string

ঐচ্ছিক। পূর্ববর্তী cachedContents.list কল থেকে প্রাপ্ত একটি পেজ টোকেন। পরবর্তী পেজটি পুনরুদ্ধার করতে এটি প্রদান করুন।

পেজিনেশন করার সময়, cachedContents.list এ প্রদত্ত অন্য সকল প্যারামিটার অবশ্যই সেই কলের সাথে মিলতে হবে যা পেজ টোকেনটি প্রদান করেছে।

অনুরোধকারী শরীর

অনুরোধের মূল অংশ অবশ্যই খালি হতে হবে।

প্রতিক্রিয়া সংস্থা

CachedContents তালিকা সহ প্রতিক্রিয়া।

সফল হলে, প্রতিক্রিয়া অংশে নিম্নলিখিত কাঠামোসহ ডেটা থাকে:

ক্ষেত্র
cachedContents[] object ( CachedContent )

ক্যাশে করা বিষয়বস্তুর তালিকা।

nextPageToken string

একটি টোকেন, যা পরবর্তী পৃষ্ঠা আনার জন্য pageToken হিসেবে পাঠানো যেতে পারে। এই ক্ষেত্রটি বাদ দিলে, পরবর্তী কোনো পৃষ্ঠা থাকবে না।

JSON উপস্থাপনা
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

পদ্ধতি: cachedContents.get

CachedContent রিসোর্সটি পড়ে।

এন্ডপয়েন্ট

get https: / /generativelanguage.googleapis.com /v1beta /{name=cachedContents /*}

পথের পরামিতি

name string

আবশ্যক। কন্টেন্ট ক্যাশ এন্ট্রিকে নির্দেশকারী রিসোর্সের নাম। ফরম্যাট: cachedContents/{id} এটি cachedContents/{cachedcontent} আকারে থাকে।

অনুরোধকারী শরীর

অনুরোধের মূল অংশ অবশ্যই খালি হতে হবে।

উদাহরণ অনুরোধ

পাইথন

from google import genai

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.5-flash"

cache = client.caches.create(
    model=model_name,
    config={
        "contents": [document],
        "system_instruction": "You are an expert analyzing transcripts.",
    },
)
print(client.caches.get(name=cache.name))

নোড.জেএস

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.5-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
const retrievedCache = await ai.caches.get({ name: cache.name });
console.log("Retrieved Cache:", retrievedCache);

যান

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.5-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}

cache, err = client.Caches.Get(ctx, cache.Name, &genai.GetCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Retrieved cache:")
fmt.Println(cache)

খোলস

curl "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GEMINI_API_KEY"

প্রতিক্রিয়া সংস্থা

সফল হলে, রেসপন্স বডিতে CachedContent এর একটি ইনস্ট্যান্স থাকে।

পদ্ধতি: cachedContents.patch

CachedContent রিসোর্স আপডেট করে (শুধুমাত্র মেয়াদোত্তীর্ণের তারিখ আপডেটযোগ্য)।

এন্ডপয়েন্ট

patch https: / /generativelanguage.googleapis.com /v1beta /{cachedContent.name=cachedContents /*}
PATCH https://generativelanguage.googleapis.com/v1beta/{cachedContent.name=cachedContents/*}

পথের পরামিতি

cachedContent.name string

শুধুমাত্র আউটপুট। শনাক্তকারী। ক্যাশ করা বিষয়বস্তুকে নির্দেশকারী রিসোর্সের নাম। ফরম্যাট: cachedContents/{id} এটি cachedContents/{cachedcontent} আকারে থাকে।

কোয়েরি প্যারামিটার

updateMask string ( FieldMask format)

আপডেট করার জন্য ফিল্ডগুলির তালিকা।

এটি ফিল্ডগুলোর পূর্ণাঙ্গ নামের একটি কমা-দ্বারা-বিভক্ত তালিকা। উদাহরণ: "user.displayName,photo"

অনুরোধকারী শরীর

অনুরোধের বডিতে CachedContent এর একটি ইনস্ট্যান্স থাকে।

ক্ষেত্র
expiration Union type
এই রিসোর্সটির মেয়াদ কখন শেষ হবে তা নির্দিষ্ট করে। expiration নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে:
expireTime string ( Timestamp format)

এই রিসোর্সটি কখন মেয়াদোত্তীর্ণ বলে বিবেচিত হবে, তার UTC টাইমস্ট্যাম্প। ইনপুটে যা-ই পাঠানো হোক না কেন, এটি আউটপুটে সর্বদা প্রদান করা হয়।

RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" অথবা "2014-10-02T15:01:23+05:30"

ttl string ( Duration format)

শুধুমাত্র ইনপুট। এই রিসোর্সের জন্য নতুন TTL, শুধুমাত্র ইনপুট।

সেকেন্ডে পরিমাপকৃত সময়কাল, যা সর্বোচ্চ নয়টি ভগ্নাংশ অঙ্ক পর্যন্ত হতে পারে এবং শেষে ' s ' থাকে। উদাহরণ: "3.5s"

উদাহরণ অনুরোধ

পাইথন

from google import genai
from google.genai import types
import datetime

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.5-flash"

cache = client.caches.create(
    model=model_name,
    config={
        "contents": [document],
        "system_instruction": "You are an expert analyzing transcripts.",
    },
)

# Update the cache's time-to-live (ttl)
ttl = f"{int(datetime.timedelta(hours=2).total_seconds())}s"
client.caches.update(
    name=cache.name, config=types.UpdateCachedContentConfig(ttl=ttl)
)
print(f"After update:\n {cache}")

# Alternatively, update the expire_time directly
# Update the expire_time directly in valid RFC 3339 format (UTC with a "Z" suffix)
expire_time = (
    (
        datetime.datetime.now(datetime.timezone.utc)
        + datetime.timedelta(minutes=15)
    )
    .isoformat()
    .replace("+00:00", "Z")
)
client.caches.update(
    name=cache.name,
    config=types.UpdateCachedContentConfig(expire_time=expire_time),
)

নোড.জেএস

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.5-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

let cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});

// Update the cache's time-to-live (ttl)
const ttl = `${2 * 3600}s`; // 2 hours in seconds
cache = await ai.caches.update({
  name: cache.name,
  config: { ttl },
});
console.log("After update (TTL):", cache);

// Alternatively, update the expire_time directly (in RFC 3339 format with a "Z" suffix)
const expireTime = new Date(Date.now() + 15 * 60000)
  .toISOString()
  .replace(/\.\d{3}Z$/, "Z");
cache = await ai.caches.update({
  name: cache.name,
  config: { expireTime: expireTime },
});
console.log("After update (expire_time):", cache);

যান

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.5-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}

_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache deleted:", cache.Name)

খোলস

curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GEMINI_API_KEY" \
 -H 'Content-Type: application/json' \
 -d '{"ttl": "600s"}'

প্রতিক্রিয়া সংস্থা

সফল হলে, রেসপন্স বডিতে CachedContent এর একটি ইনস্ট্যান্স থাকে।

পদ্ধতি: cachedContents.delete

CachedContent রিসোর্সটি মুছে ফেলে।

এন্ডপয়েন্ট

https: / /generativelanguage.googleapis.com /v1beta /{name=cachedContents /*} মুছে ফেলুন

পথের পরামিতি

name string

আবশ্যক। কন্টেন্ট ক্যাশ এন্ট্রিকে নির্দেশকারী রিসোর্সের নাম। ফরম্যাট: cachedContents/{id} এটি cachedContents/{cachedcontent} আকারে থাকে।

অনুরোধকারী শরীর

অনুরোধের মূল অংশ অবশ্যই খালি হতে হবে।

উদাহরণ অনুরোধ

পাইথন

from google import genai

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.5-flash"

cache = client.caches.create(
    model=model_name,
    config={
        "contents": [document],
        "system_instruction": "You are an expert analyzing transcripts.",
    },
)
client.caches.delete(name=cache.name)

নোড.জেএস

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.5-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
await ai.caches.delete({ name: cache.name });
console.log("Cache deleted:", cache.name);

যান

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.5-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}

_, err = client.Caches.Delete(ctx, cache.Name, &genai.DeleteCachedContentConfig{})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache deleted:", cache.Name)

খোলস

curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/$CACHE_NAME?key=$GEMINI_API_KEY"

প্রতিক্রিয়া সংস্থা

সফল হলে, রেসপন্স বডিটি একটি খালি JSON অবজেক্ট হয়।

REST রিসোর্স: ক্যাশড কন্টেন্টস

উৎস: ক্যাশড কন্টেন্ট

যে কন্টেন্টটি পূর্ব-প্রক্রিয়াজাত করা হয়েছে এবং যা জেনারেটিভসার্ভিস-এ পরবর্তী অনুরোধে ব্যবহার করা যাবে।

ক্যাশ করা কন্টেন্ট শুধুমাত্র সেই মডেলের সাথেই ব্যবহার করা যাবে, যেটির জন্য এটি তৈরি করা হয়েছে।

ক্ষেত্র
contents[] object ( Content )

ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। ক্যাশে করার বিষয়বস্তু।

tools[] object ( Tool )

ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। পরবর্তী প্রতিক্রিয়া তৈরি করতে মডেলটি Tools ব্যবহার করতে পারে তার একটি তালিকা।

createTime string ( Timestamp format)

শুধুমাত্র আউটপুট। ক্যাশ এন্ট্রি তৈরির সময়।

RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" অথবা "2014-10-02T15:01:23+05:30"

updateTime string ( Timestamp format)

শুধুমাত্র আউটপুট। UTC সময় অনুযায়ী ক্যাশ এন্ট্রিটি সর্বশেষ কখন আপডেট করা হয়েছিল।

RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" অথবা "2014-10-02T15:01:23+05:30"

usageMetadata object ( UsageMetadata )

শুধুমাত্র আউটপুট। ক্যাশ করা কন্টেন্টের ব্যবহার সংক্রান্ত মেটাডেটা।

expiration Union type
এই রিসোর্সটির মেয়াদ কখন শেষ হবে তা নির্দিষ্ট করে। expiration নিম্নলিখিতগুলির মধ্যে কেবল একটি হতে পারে:
expireTime string ( Timestamp format)

এই রিসোর্সটি কখন মেয়াদোত্তীর্ণ বলে বিবেচিত হবে, তার UTC টাইমস্ট্যাম্প। ইনপুটে যা-ই পাঠানো হোক না কেন, এটি আউটপুটে সর্বদা প্রদান করা হয়।

RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "Z" ছাড়াও অন্যান্য অফসেটও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" অথবা "2014-10-02T15:01:23+05:30"

ttl string ( Duration format)

শুধুমাত্র ইনপুট। এই রিসোর্সের জন্য নতুন TTL, শুধুমাত্র ইনপুট।

সেকেন্ডে পরিমাপকৃত সময়কাল, যা সর্বোচ্চ নয়টি ভগ্নাংশ অঙ্ক পর্যন্ত হতে পারে এবং শেষে ' s ' থাকে। উদাহরণ: "3.5s"

name string

শুধুমাত্র আউটপুট। শনাক্তকারী। ক্যাশ করা বিষয়বস্তুকে নির্দেশকারী রিসোর্সের নাম। ফরম্যাট: cachedContents/{id}

displayName string

ঐচ্ছিক। অপরিবর্তনীয়। ক্যাশ করা কন্টেন্টের জন্য ব্যবহারকারী-সৃষ্ট অর্থপূর্ণ প্রদর্শিত নাম। সর্বোচ্চ ১২৮টি ইউনিকোড অক্ষর।

model string

আবশ্যক। অপরিবর্তনীয়। ক্যাশ করা কন্টেন্টের জন্য ব্যবহৃত Model নাম। ফরম্যাট: models/{model}

systemInstruction object ( Content )

Optional. Input only. Immutable. Developer set system instruction. Currently text only.

toolConfig object ( ToolConfig )

ঐচ্ছিক। শুধুমাত্র ইনপুট। অপরিবর্তনীয়। টুল কনফিগারেশন। এই কনফিগারেশনটি সকল টুলের জন্য ব্যবহৃত হবে।

JSON উপস্থাপনা
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // expiration
  "expireTime": string,
  "ttl": string
  // Union type
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}

টুলকনফিগ

টুল কনফিগারেশনে অনুরোধে Tool ব্যবহার নির্দিষ্ট করার জন্য প্যারামিটারসমূহ থাকে।

ক্ষেত্র
functionCallingConfig object ( FunctionCallingConfig )

ঐচ্ছিক। ফাংশন কল করার কনফিগারেশন।

retrievalConfig object ( RetrievalConfig )

ঐচ্ছিক। পুনরুদ্ধার কনফিগারেশন।

includeServerSideToolInvocations boolean

ঐচ্ছিক। যদি এটি সত্য হয়, তাহলে এপিআই প্রতিক্রিয়ার Content মেসেজের মধ্যেই সার্ভার-সাইড টুলের কল এবং প্রতিক্রিয়াগুলো অন্তর্ভুক্ত থাকবে। এর ফলে ক্লায়েন্টরা সার্ভারের টুলের কার্যকলাপ পর্যবেক্ষণ করতে পারে।

JSON উপস্থাপনা
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  },
  "retrievalConfig": {
    object (RetrievalConfig)
  },
  "includeServerSideToolInvocations": boolean
}

ফাংশনকলিংকনফিগ

ফাংশন কল করার আচরণ নির্দিষ্ট করার কনফিগারেশন।

ক্ষেত্র
mode enum ( Mode )

ঐচ্ছিক। ফাংশন কলিং কোন মোডে সম্পাদিত হবে তা নির্দিষ্ট করে। নির্দিষ্ট না করা হলে, ডিফল্ট মান AUTO সেট করা হবে।

allowedFunctionNames[] string

ঐচ্ছিক। ফাংশন নামগুলির একটি সেট, যা প্রদান করা হলে মডেলটি কোন কোন ফাংশনকে কল করবে তা সীমিত করে।

এটি শুধুমাত্র তখনই সেট করা উচিত যখন মোড ANY বা VALIDATED হয়। ফাংশনের নাম অবশ্যই [FunctionDeclaration.name]-এর সাথে মিলতে হবে। এটি সেট করা হলে, মডেলটি শুধুমাত্র অনুমোদিত ফাংশনের নামগুলো থেকে একটি ফাংশন কল প্রেডিক্ট করবে।

JSON উপস্থাপনা
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

মোড

এক্সিকিউশন মোড নির্ধারণের মাধ্যমে ফাংশন কলিংয়ের কার্যসম্পাদন আচরণ সংজ্ঞায়িত করা হয়।

এনাম
MODE_UNSPECIFIED অনির্দিষ্ট ফাংশন কলিং মোড। এই মানটি ব্যবহার করা উচিত নয়।
AUTO মডেলের ডিফল্ট আচরণ অনুযায়ী, মডেলটি একটি ফাংশন কল অথবা স্বাভাবিক ভাষার প্রতিক্রিয়া ভবিষ্যদ্বাণী করার সিদ্ধান্ত নেয়।
ANY মডেলটি শুধুমাত্র একটি ফাংশন কল ভবিষ্যদ্বাণী করতে সীমাবদ্ধ। যদি "allowedFunctionNames" সেট করা থাকে, তাহলে ভবিষ্যদ্বাণী করা ফাংশন কলটি "allowedFunctionNames"-এর যেকোনো একটির মধ্যে সীমাবদ্ধ থাকবে, অন্যথায় ভবিষ্যদ্বাণী করা ফাংশন কলটি প্রদত্ত "functionDeclarations"-গুলোর যেকোনো একটি হবে।
NONE মডেল কোনো ফাংশন কল প্রেডিক্ট করবে না। কোনো ফাংশন ডিক্লারেশন পাস না করার সময়ের মতোই মডেলের আচরণ একই থাকবে।
VALIDATED মডেলটি একটি ফাংশন কল অথবা একটি স্বাভাবিক ভাষার প্রতিক্রিয়া ভবিষ্যদ্বাণী করার সিদ্ধান্ত নেয়, তবে সীমাবদ্ধ ডিকোডিংয়ের মাধ্যমে ফাংশন কলগুলো যাচাই করবে। যদি "allowedFunctionNames" সেট করা থাকে, তাহলে ভবিষ্যদ্বাণী করা ফাংশন কলটি "allowedFunctionNames"-এর যেকোনো একটির মধ্যে সীমাবদ্ধ থাকবে, অন্যথায় ভবিষ্যদ্বাণী করা ফাংশন কলটি প্রদত্ত "functionDeclarations"-গুলোর যেকোনো একটি হবে।

পুনরুদ্ধার কনফিগারেশন

পুনরুদ্ধার কনফিগারেশন।

ক্ষেত্র
latLng object ( LatLng )

ঐচ্ছিক। ব্যবহারকারীর অবস্থান।

languageCode string

ঐচ্ছিক। ব্যবহারকারীর ভাষা কোড। বিষয়বস্তুর জন্য ভাষা কোড। BCP47 দ্বারা সংজ্ঞায়িত ভাষা ট্যাগ ব্যবহার করুন।

JSON উপস্থাপনা
{
  "latLng": {
    object (LatLng)
  },
  "languageCode": string
}

অক্ষাংশ দ্রাঘিমাংশ

একটি অবজেক্ট যা একটি অক্ষাংশ/দ্রাঘিমাংশ জোড়াকে উপস্থাপন করে। এটি ডিগ্রি অক্ষাংশ এবং ডিগ্রি দ্রাঘিমাংশ বোঝাতে একজোড়া ডাবল (double) হিসেবে প্রকাশ করা হয়। অন্যভাবে নির্দিষ্ট করা না থাকলে, এই অবজেক্টটিকে অবশ্যই WGS84 স্ট্যান্ডার্ড মেনে চলতে হবে। মানগুলো অবশ্যই নর্মালাইজড রেঞ্জের মধ্যে থাকতে হবে।

ক্ষেত্র
latitude number

অক্ষাংশ ডিগ্রিতে। এটি অবশ্যই [-90.0, +90.0] সীমার মধ্যে হতে হবে।

longitude number

দ্রাঘিমাংশ ডিগ্রিতে। এটি অবশ্যই [-180.0, +180.0] সীমার মধ্যে হতে হবে।

JSON উপস্থাপনা
{
  "latitude": number,
  "longitude": number
}

ব্যবহার মেটাডেটা

ক্যাশে করা বিষয়বস্তুর ব্যবহার সংক্রান্ত মেটাডেটা।

ক্ষেত্র
totalTokenCount integer

ক্যাশে করা কন্টেন্ট দ্বারা ব্যবহৃত মোট টোকেনের সংখ্যা।

JSON উপস্থাপনা
{
  "totalTokenCount": integer
}