Caching

কনটেক্সট ক্যাশিং আপনাকে প্রাক-কম্পিউটেড ইনপুট টোকেনগুলি সংরক্ষণ এবং পুনঃব্যবহারের অনুমতি দেয় যা আপনি বারবার ব্যবহার করতে চান, উদাহরণস্বরূপ একই মিডিয়া ফাইল সম্পর্কে বিভিন্ন প্রশ্ন জিজ্ঞাসা করার সময়। এটি ব্যবহারের উপর নির্ভর করে খরচ এবং গতি সঞ্চয় করতে পারে। বিস্তারিত ভূমিকার জন্য, প্রসঙ্গ ক্যাশিং গাইড দেখুন।

পদ্ধতি: cachedContents.create

ক্যাশেড কনটেন্ট রিসোর্স তৈরি করে।

শেষবিন্দু

পোস্ট 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-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "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

ঐচ্ছিক। অপরিবর্তনীয়। ক্যাশ করা বিষয়বস্তুর ব্যবহারকারীর তৈরি অর্থপূর্ণ প্রদর্শন নাম। সর্বোচ্চ 128টি ইউনিকোড অক্ষর।

model string

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

systemInstruction object ( Content )

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

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-1.5-flash-001"

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-1.5-flash-001";

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-1.5-flash-001"
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, "user"),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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-1.5-flash-001"

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-1.5-flash-001";

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-1.5-flash-001"
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, "user"),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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-1.5-flash-001"
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-1.5-flash-001";
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-1.5-flash-001"
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, "user"),
}, 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, "user"),
})
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

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

pageToken string

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

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

শরীরের অনুরোধ

অনুরোধের বডি খালি হতে হবে।

প্রতিক্রিয়া শরীর

ক্যাশেড বিষয়বস্তু তালিকা সহ প্রতিক্রিয়া.

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

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

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

nextPageToken string

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

JSON প্রতিনিধিত্ব
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

পদ্ধতি: cachedContents.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-1.5-flash-001"

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-1.5-flash-001";

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-1.5-flash-001"
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, "user"),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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

ক্যাশেড কনটেন্ট রিসোর্স আপডেট করে (কেবলমাত্র মেয়াদ শেষ হওয়া আপডেটযোগ্য)।

শেষবিন্দু

প্যাচ 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-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "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-1.5-flash-001"

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-1.5-flash-001";

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-1.5-flash-001"
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, "user"),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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

ক্যাশেড কনটেন্ট রিসোর্স মুছে দেয়।

শেষবিন্দু

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-1.5-flash-001"

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-1.5-flash-001";

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-1.5-flash-001"
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, "user"),
}

cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents:          contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", "user",
	),
})
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 সম্পদ: ক্যাশেড বিষয়বস্তু

সম্পদ: ক্যাশেড সামগ্রী

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

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

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

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

tools[] object ( Tool )

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

createTime string ( Timestamp format)

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

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "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-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "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-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "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

ঐচ্ছিক। অপরিবর্তনীয়। ক্যাশ করা বিষয়বস্তুর ব্যবহারকারীর তৈরি অর্থপূর্ণ প্রদর্শন নাম। সর্বোচ্চ 128টি ইউনিকোড অক্ষর।

model string

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

systemInstruction object ( Content )

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

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)
  }
}

বিষয়বস্তু

একটি বার্তার বহু-অংশ বিষয়বস্তু ধারণকারী বেস স্ট্রাকচার্ড ডেটাটাইপ।

একটি Content মধ্যে একটি role ক্ষেত্র রয়েছে যা Content প্রযোজককে মনোনীত করে এবং একটি parts ক্ষেত্র যাতে বহু-অংশের ডেটা থাকে যাতে বার্তার বিষয়বস্তু থাকে।

ক্ষেত্র
parts[] object ( Part )

অর্ডার করা Parts যা একটি একক বার্তা গঠন করে। অংশের বিভিন্ন MIME প্রকার থাকতে পারে।

role string

ঐচ্ছিক। বিষয়বস্তুর প্রযোজক। 'ব্যবহারকারী' বা 'মডেল' হতে হবে।

মাল্টি-টার্ন কথোপকথনের জন্য সেট করার জন্য দরকারী, অন্যথায় ফাঁকা বা সেট না করা যেতে পারে।

JSON প্রতিনিধিত্ব
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

অংশ

মিডিয়া ধারণকারী একটি ডেটাটাইপ যা একটি বহু-অংশ Content বার্তার অংশ।

একটি Part ডেটা থাকে যার একটি সম্পর্কিত ডেটাটাইপ থাকে। একটি Part শুধুমাত্র Part.data তে গৃহীত প্রকারগুলির একটি ধারণ করতে পারে।

একটি Part অবশ্যই একটি নির্দিষ্ট IANA MIME টাইপ থাকতে হবে যা মিডিয়ার ধরন এবং উপপ্রকার সনাক্ত করে যদি inlineData ক্ষেত্র কাঁচা বাইট দিয়ে পূর্ণ হয়।

ক্ষেত্র
boolean thought

ঐচ্ছিক। অংশটি মডেল থেকে চিন্তা করা হলে নির্দেশ করে।

data Union type
data নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
text string

ইনলাইন পাঠ্য।

inlineData object ( Blob )

ইনলাইন মিডিয়া বাইট।

functionCall object ( FunctionCall )

একটি ভবিষ্যদ্বাণীকৃত FunctionCall মডেল থেকে ফিরে এসেছে যেটিতে একটি স্ট্রিং রয়েছে যা আর্গুমেন্ট এবং তাদের মান সহ FunctionDeclaration.name প্রতিনিধিত্ব করে।

functionResponse object ( FunctionResponse )

একটি FunctionCall এর ফলাফল আউটপুট যেটিতে FunctionDeclaration.name প্রতিনিধিত্বকারী একটি স্ট্রিং রয়েছে এবং ফাংশন থেকে যেকোনো আউটপুট ধারণকারী একটি কাঠামোগত JSON অবজেক্ট মডেলের প্রসঙ্গ হিসাবে ব্যবহৃত হয়।

fileData object ( FileData )

URI ভিত্তিক ডেটা।

executableCode object ( ExecutableCode )

মডেল দ্বারা উত্পন্ন কোড যা কার্যকর করা হবে।

codeExecutionResult object ( CodeExecutionResult )

ExecutableCode কার্যকর করার ফলাফল।

metadata Union type
ডেটার অতিরিক্ত প্রিপ্রসেসিং নিয়ন্ত্রণ করে। metadata নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
videoMetadata object ( VideoMetadata )

ঐচ্ছিক। ভিডিও মেটাডেটা। ভিডিও ডেটা ইনলাইনডেটা বা ফাইলডেটাতে উপস্থাপিত হলেই মেটাডেটা নির্দিষ্ট করা উচিত।

JSON প্রতিনিধিত্ব
{
  "thought": boolean,

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // Union type

  // metadata
  "videoMetadata": {
    object (VideoMetadata)
  }
  // Union type
}

ব্লব

কাঁচা মিডিয়া বাইট।

টেক্সট কাঁচা বাইট হিসাবে পাঠানো উচিত নয়, 'টেক্সট' ক্ষেত্র ব্যবহার করুন।

ক্ষেত্র
mimeType string

উৎস ডেটার IANA স্ট্যান্ডার্ড MIME প্রকার। উদাহরণ: - image/png - image/jpeg যদি একটি অসমর্থিত MIME প্রকার প্রদান করা হয়, একটি ত্রুটি ফেরত দেওয়া হবে। সমর্থিত প্রকারের একটি সম্পূর্ণ তালিকার জন্য, সমর্থিত ফাইল বিন্যাস দেখুন।

data string ( bytes format)

মিডিয়া ফরম্যাটের জন্য কাঁচা বাইট।

একটি base64-এনকোডেড স্ট্রিং।

JSON প্রতিনিধিত্ব
{
  "mimeType": string,
  "data": string
}

ফাংশনকল

একটি ভবিষ্যদ্বাণীকৃত FunctionCall মডেল থেকে ফিরে এসেছে যেটিতে একটি স্ট্রিং রয়েছে যা আর্গুমেন্ট এবং তাদের মান সহ FunctionDeclaration.name প্রতিনিধিত্ব করে।

ক্ষেত্র
id string

ঐচ্ছিক। ফাংশন কলের অনন্য আইডি। জনবহুল হলে, ক্লায়েন্ট functionCall চালাতে কল করবে এবং ম্যাচিং id সহ প্রতিক্রিয়া ফেরত দেবে।

name string

প্রয়োজন। কল করার ফাংশনের নাম। az, AZ, 0-9 হতে হবে অথবা আন্ডারস্কোর এবং ড্যাশ থাকতে হবে, যার সর্বোচ্চ দৈর্ঘ্য 63।

args object ( Struct format)

ঐচ্ছিক। JSON অবজেক্ট ফরম্যাটে ফাংশন প্যারামিটার এবং মান।

JSON প্রতিনিধিত্ব
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

ফাংশন রেসপন্স

একটি FunctionCall থেকে ফলাফল আউটপুট যেটিতে FunctionDeclaration.name প্রতিনিধিত্বকারী একটি স্ট্রিং রয়েছে এবং ফাংশন থেকে যেকোনো আউটপুট ধারণকারী একটি কাঠামোগত JSON অবজেক্ট মডেলের প্রসঙ্গ হিসাবে ব্যবহৃত হয়। এটিতে মডেল পূর্বাভাসের উপর ভিত্তি করে তৈরি একটি FunctionCall ফলাফল থাকা উচিত।

ক্ষেত্র
id string

ঐচ্ছিক। এই প্রতিক্রিয়া কল ফাংশন আইডি জন্য. সংশ্লিষ্ট ফাংশন কল id সাথে মেলে ক্লায়েন্ট দ্বারা জনবহুল।

name string

প্রয়োজন। কল করার ফাংশনের নাম। az, AZ, 0-9 হতে হবে অথবা আন্ডারস্কোর এবং ড্যাশ থাকতে হবে, যার সর্বোচ্চ দৈর্ঘ্য 63।

response object ( Struct format)

প্রয়োজন। JSON অবজেক্ট ফরম্যাটে ফাংশন প্রতিক্রিয়া।

boolean willContinue

ঐচ্ছিক। সিগন্যাল যে ফাংশন কল চলতে থাকে, এবং আরও প্রতিক্রিয়া ফেরত দেওয়া হবে, ফাংশন কলটিকে জেনারেটরে পরিণত করবে। শুধুমাত্র NON_BLOCKING ফাংশন কলের ক্ষেত্রে প্রযোজ্য, অন্যথায় উপেক্ষা করা হয়। মিথ্যা সেট করলে, ভবিষ্যতের প্রতিক্রিয়া বিবেচনা করা হবে না। ফাংশন কল শেষ হওয়ার সংকেত দিতে willContinue=False দিয়ে খালি response ফেরত দেওয়ার অনুমতি দেওয়া হয়। এটি এখনও মডেল প্রজন্মকে ট্রিগার করতে পারে। জেনারেশন ট্রিগার এড়াতে এবং ফাংশন কল শেষ করতে, অতিরিক্ত scheduling SILENT এ সেট করুন।

scheduling enum ( Scheduling )

ঐচ্ছিক। কথোপকথনে প্রতিক্রিয়া কীভাবে নির্ধারণ করা উচিত তা নির্দিষ্ট করে। শুধুমাত্র NON_BLOCKING ফাংশন কলের ক্ষেত্রে প্রযোজ্য, অন্যথায় উপেক্ষা করা হয়। WHEN_IDLE তে ডিফল্ট।

JSON প্রতিনিধিত্ব
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

সময়সূচী

কথোপকথনে প্রতিক্রিয়া কীভাবে নির্ধারণ করা উচিত তা নির্দিষ্ট করে।

এনামস
SCHEDULING_UNSPECIFIED এই মান অব্যবহৃত.
SILENT শুধুমাত্র কথোপকথন প্রসঙ্গে ফলাফল যোগ করুন, বাধা বা ট্রিগার প্রজন্মের না.
WHEN_IDLE কথোপকথনের প্রসঙ্গে ফলাফল যোগ করুন, এবং চলমান প্রজন্মকে বাধা না দিয়ে আউটপুট তৈরি করতে অনুরোধ করুন।
INTERRUPT কথোপকথনের প্রসঙ্গে ফলাফল যোগ করুন, চলমান প্রজন্মকে বাধা দিন এবং আউটপুট তৈরি করতে অনুরোধ করুন।

ফাইল ডেটা

URI ভিত্তিক ডেটা।

ক্ষেত্র
mimeType string

ঐচ্ছিক। উৎস ডেটার IANA স্ট্যান্ডার্ড MIME প্রকার।

fileUri string

প্রয়োজন। ইউআরআই।

JSON প্রতিনিধিত্ব
{
  "mimeType": string,
  "fileUri": string
}

এক্সিকিউটেবল কোড

কোড যে মডেলের দ্বারা উত্পন্ন হয় যা কার্যকর করা হয় এবং ফলাফলটি মডেলে ফিরে আসে।

শুধুমাত্র CodeExecution টুল ব্যবহার করার সময় তৈরি করা হয়, যেখানে কোডটি স্বয়ংক্রিয়ভাবে কার্যকর হবে এবং একটি সংশ্লিষ্ট CodeExecutionResult ও তৈরি হবে।

ক্ষেত্র
language enum ( Language )

প্রয়োজন। code প্রোগ্রামিং ভাষা।

code string

প্রয়োজন। কোডটি কার্যকর করতে হবে।

JSON প্রতিনিধিত্ব
{
  "language": enum (Language),
  "code": string
}

ভাষা

উত্পন্ন কোডের জন্য সমর্থিত প্রোগ্রামিং ভাষা।

এনামস
LANGUAGE_UNSPECIFIED অনির্দিষ্ট ভাষা। এই মান ব্যবহার করা উচিত নয়.
PYTHON পাইথন >= 3.10, নম্পি এবং সিম্পি উপলব্ধ।

কোড এক্সিকিউশন ফলাফল

ExecutableCode কার্যকর করার ফলাফল।

শুধুমাত্র CodeExecution ব্যবহার করার সময় উৎপন্ন হয় এবং সর্বদা ExecutableCode ধারণকারী একটি part অনুসরণ করে।

ক্ষেত্র
outcome enum ( Outcome )

প্রয়োজন। কোড নির্বাহের ফলাফল।

output string

ঐচ্ছিক। কোড এক্সিকিউশন সফল হলে stdout ধারণ করে, stderr বা অন্যথায় অন্য বিবরণ।

JSON প্রতিনিধিত্ব
{
  "outcome": enum (Outcome),
  "output": string
}

ফলাফল

কোড সম্পাদনের সম্ভাব্য ফলাফলের গণনা।

এনামস
OUTCOME_UNSPECIFIED অনির্দিষ্ট অবস্থা। এই মান ব্যবহার করা উচিত নয়.
OUTCOME_OK কোড এক্সিকিউশন সফলভাবে সম্পন্ন হয়েছে।
OUTCOME_FAILED কোড এক্সিকিউশন শেষ হয়েছে কিন্তু ব্যর্থতার সাথে। stderr কারণ থাকতে হবে।
OUTCOME_DEADLINE_EXCEEDED কোড এক্সিকিউশন খুব বেশি সময় ধরে চলেছিল এবং বাতিল করা হয়েছিল৷ আংশিক আউটপুট উপস্থিত থাকতে পারে বা নাও থাকতে পারে।

ভিডিও মেটাডেটা

মেটাডেটা ইনপুট ভিডিও বিষয়বস্তু বর্ণনা করে।

ক্ষেত্র
startOffset string ( Duration format)

ঐচ্ছিক। ভিডিওর শুরু অফসেট.

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

endOffset string ( Duration format)

ঐচ্ছিক। ভিডিওর শেষ অফসেট।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

fps number

ঐচ্ছিক। ভিডিওটির ফ্রেম রেট মডেলে পাঠানো হয়েছে। নির্দিষ্ট না থাকলে, ডিফল্ট মান 1.0 হবে। fps পরিসর হল (0.0, 24.0]।

JSON প্রতিনিধিত্ব
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

টুল

টুলের বিবরণ যা মডেল প্রতিক্রিয়া তৈরি করতে ব্যবহার করতে পারে।

একটি Tool হল কোডের একটি অংশ যা মডেলের জ্ঞান এবং সুযোগের বাইরে একটি ক্রিয়া সম্পাদন করতে বা ক্রিয়াগুলির সেট করার জন্য সিস্টেমটিকে বহিরাগত সিস্টেমের সাথে যোগাযোগ করতে সক্ষম করে।

ক্ষেত্র
functionDeclarations[] object ( FunctionDeclaration )

ঐচ্ছিক। মডেলের কাছে উপলব্ধ FunctionDeclarations একটি তালিকা যা ফাংশন কলিংয়ের জন্য ব্যবহার করা যেতে পারে।

মডেল বা সিস্টেম ফাংশন চালায় না। পরিবর্তে সংজ্ঞায়িত ফাংশন কার্যকর করার জন্য ক্লায়েন্ট পক্ষের আর্গুমেন্ট সহ একটি FunctionCall হিসাবে ফেরত দেওয়া হতে পারে। মডেলটি প্রতিক্রিয়াতে FunctionCall পপুলেট করে এই ফাংশনগুলির একটি উপসেট কল করার সিদ্ধান্ত নিতে পারে। পরবর্তী কথোপকথনের পালাটিতে পরবর্তী মডেল টার্নের জন্য Content.role "ফাংশন" প্রজন্মের প্রসঙ্গ সহ একটি FunctionResponse থাকতে পারে।

googleSearchRetrieval object ( GoogleSearchRetrieval )

ঐচ্ছিক। পুনরুদ্ধার সরঞ্জাম যা Google অনুসন্ধান দ্বারা চালিত হয়।

codeExecution object ( CodeExecution )

ঐচ্ছিক। প্রজন্মের অংশ হিসাবে কোড চালানোর জন্য মডেলকে সক্ষম করে।

urlContext object ( UrlContext )

ঐচ্ছিক। URL প্রসঙ্গ পুনরুদ্ধার সমর্থন করার জন্য টুল।

JSON প্রতিনিধিত্ব
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "urlContext": {
    object (UrlContext)
  }
}

ফাংশন ঘোষণা

OpenAPI 3.03 স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত একটি ফাংশন ঘোষণার কাঠামোগত উপস্থাপনা। এই ঘোষণার মধ্যে ফাংশনের নাম এবং পরামিতি অন্তর্ভুক্ত রয়েছে। এই ফাংশন ডিক্লারেশন হল কোডের একটি ব্লকের একটি উপস্থাপনা যা মডেল দ্বারা একটি Tool হিসাবে ব্যবহার করা যেতে পারে এবং ক্লায়েন্ট দ্বারা কার্যকর করা যেতে পারে।

ক্ষেত্র
name string

প্রয়োজন। ফাংশনের নাম। az, AZ, 0-9 হতে হবে অথবা আন্ডারস্কোর এবং ড্যাশ থাকতে হবে, যার সর্বোচ্চ দৈর্ঘ্য 63।

description string

প্রয়োজন। ফাংশন একটি সংক্ষিপ্ত বিবরণ.

behavior enum ( Behavior )

ঐচ্ছিক। ফাংশন আচরণ নির্দিষ্ট করে। বর্তমানে শুধুমাত্র BidiGenerateContent পদ্ধতি দ্বারা সমর্থিত।

parameters object ( Schema )

ঐচ্ছিক। এই ফাংশনের পরামিতি বর্ণনা করে। Open API 3.03 প্যারামিটার অবজেক্ট স্ট্রিং কী প্রতিফলিত করে: প্যারামিটারের নাম। প্যারামিটারের নামগুলি কেস সংবেদনশীল৷ স্কিমা মান: প্যারামিটারের জন্য ব্যবহৃত টাইপ সংজ্ঞায়িত করে।

response object ( Schema )

ঐচ্ছিক। JSON স্কিমা বিন্যাসে এই ফাংশন থেকে আউটপুট বর্ণনা করে। Open API 3.03 রেসপন্স অবজেক্ট প্রতিফলিত করে। স্কিমা ফাংশনের প্রতিক্রিয়া মানের জন্য ব্যবহৃত প্রকারকে সংজ্ঞায়িত করে।

JSON প্রতিনিধিত্ব
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "response": {
    object (Schema)
  }
}

স্কিমা

Schema অবজেক্ট ইনপুট এবং আউটপুট ডেটা প্রকারের সংজ্ঞা অনুমোদন করে। এই ধরনের বস্তু হতে পারে, কিন্তু আদিম এবং অ্যারেও হতে পারে। একটি OpenAPI 3.0 স্কিমা অবজেক্টের একটি নির্বাচিত উপসেট প্রতিনিধিত্ব করে।

ক্ষেত্র
type enum ( Type )

প্রয়োজন। ডেটা টাইপ।

format string

ঐচ্ছিক। তথ্য বিন্যাস. এটি শুধুমাত্র আদিম ডেটাটাইপের জন্য ব্যবহৃত হয়। সমর্থিত ফর্ম্যাট: NUMBER প্রকারের জন্য: ফ্লোট, INTEGEER প্রকারের জন্য দ্বিগুণ: int32, STRING প্রকারের জন্য int64: enum, তারিখ-সময়

title string

ঐচ্ছিক। স্কিমার শিরোনাম।

description string

ঐচ্ছিক। পরামিতি একটি সংক্ষিপ্ত বিবরণ. এটি ব্যবহারের উদাহরণ থাকতে পারে। প্যারামিটারের বিবরণ মার্কডাউন হিসাবে ফর্ম্যাট করা যেতে পারে।

nullable boolean

ঐচ্ছিক। মান শূন্য হতে পারে কিনা তা নির্দেশ করে।

enum[] string

ঐচ্ছিক। Enum বিন্যাস সহ Type.STRING এর উপাদানের সম্ভাব্য মান। উদাহরণ স্বরূপ আমরা একটি Enum দিক নির্দেশ করতে পারি: {type:STRING, format:enum, enum:["East", NORTH", "SOUTH", "WEST"]}

maxItems string ( int64 format)

ঐচ্ছিক। Type.ARRAY-এর জন্য উপাদানের সর্বাধিক সংখ্যা।

minItems string ( int64 format)

ঐচ্ছিক। Type.ARRAY-এর জন্য উপাদানের ন্যূনতম সংখ্যা।

properties map (key: string, value: object ( Schema ))

ঐচ্ছিক। প্রকারের বৈশিষ্ট্য।OBJECT।

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

required[] string

ঐচ্ছিক। Type.OBJECT এর প্রয়োজনীয় বৈশিষ্ট্য।

minProperties string ( int64 format)

ঐচ্ছিক। Type.OBJECT-এর জন্য বৈশিষ্ট্যের ন্যূনতম সংখ্যা।

maxProperties string ( int64 format)

ঐচ্ছিক। Type.OBJECT-এর জন্য সর্বাধিক সংখ্যা।

minLength string ( int64 format)

ঐচ্ছিক। টাইপ স্ট্রিং এর জন্য স্কিমা ফিল্ড টাইপ.STRING এর ন্যূনতম দৈর্ঘ্য

maxLength string ( int64 format)

ঐচ্ছিক। প্রকারের সর্বোচ্চ দৈর্ঘ্য।STRING

pattern string

ঐচ্ছিক। একটি রেগুলার এক্সপ্রেশনে একটি স্ট্রিংকে সীমাবদ্ধ করতে Type.STRING এর প্যাটার্ন।

example value ( Value format)

ঐচ্ছিক। বস্তুর উদাহরণ। বস্তুটি মূল হলেই কেবল পপুলেট হবে।

anyOf[] object ( Schema )

ঐচ্ছিক। তালিকার যেকোনও (এক বা একাধিক) সাবস্কেমার বিরুদ্ধে মানটি যাচাই করা উচিত।

propertyOrdering[] string

ঐচ্ছিক। সম্পত্তির ক্রম। ওপেন এপিআই স্পেকের একটি আদর্শ ক্ষেত্র নয়। প্রতিক্রিয়ায় বৈশিষ্ট্যের ক্রম নির্ধারণ করতে ব্যবহৃত হয়।

default value ( Value format)

ঐচ্ছিক। ক্ষেত্রের ডিফল্ট মান। JSON স্কিমা অনুসারে, এই ক্ষেত্রটি ডকুমেন্টেশন জেনারেটরের জন্য তৈরি এবং বৈধতাকে প্রভাবিত করে না। এইভাবে এটি এখানে অন্তর্ভুক্ত করা হয়েছে এবং উপেক্ষা করা হয়েছে যাতে বিকাশকারীরা যারা একটি default ক্ষেত্রের সাথে স্কিমা পাঠায় তারা অজানা-ক্ষেত্র ত্রুটি না পায়।

items object ( Schema )

ঐচ্ছিক। Type.ARRAY এর উপাদানগুলির স্কিমা।

minimum number

ঐচ্ছিক। Type.INTEGER এবং Type.NUMBER-এর সর্বনিম্ন মানের টাইপ পূর্ণসংখ্যা এবং NUMBER এর জন্য স্কিমা ক্ষেত্র

maximum number

ঐচ্ছিক। Type.INTEGER এবং Type.NUMBER-এর সর্বোচ্চ মান

JSON প্রতিনিধিত্ব
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

টাইপ

টাইপে https://spec.openapis.org/oas/v3.0.3#data-types দ্বারা সংজ্ঞায়িত OpenAPI ডেটা প্রকারের তালিকা রয়েছে

এনামস
TYPE_UNSPECIFIED নির্দিষ্ট করা নেই, ব্যবহার করা উচিত নয়।
STRING স্ট্রিং টাইপ।
NUMBER সংখ্যার ধরন।
INTEGER পূর্ণসংখ্যার ধরন।
BOOLEAN বুলিয়ান টাইপ।
ARRAY অ্যারে টাইপ।
OBJECT বস্তুর ধরন।
NULL নাল টাইপ।

আচরণ

ফাংশন আচরণ সংজ্ঞায়িত করে। BLOCKING ডিফল্ট।

এনামস
UNSPECIFIED এই মান অব্যবহৃত.
BLOCKING সেট করা থাকলে, কথোপকথন চালিয়ে যাওয়ার আগে সিস্টেমটি ফাংশন প্রতিক্রিয়া পাওয়ার জন্য অপেক্ষা করবে।
NON_BLOCKING সেট করা হলে, সিস্টেম ফাংশন প্রতিক্রিয়া পাওয়ার জন্য অপেক্ষা করবে না। পরিবর্তে, ব্যবহারকারী এবং মডেলের মধ্যে কথোপকথন বজায় রাখার সময় এটি উপলব্ধ হওয়ার সাথে সাথে ফাংশন প্রতিক্রিয়াগুলি পরিচালনা করার চেষ্টা করবে।

GoogleSearch Retrieval

গ্রাউন্ডিংয়ের জন্য সর্বজনীন ওয়েব ডেটা পুনরুদ্ধার করার টুল, Google দ্বারা চালিত।

ক্ষেত্র
dynamicRetrievalConfig object ( DynamicRetrievalConfig )

প্রদত্ত উত্সের জন্য গতিশীল পুনরুদ্ধার কনফিগারেশন নির্দিষ্ট করে।

JSON প্রতিনিধিত্ব
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

গতিশীল পুনরুদ্ধার কাস্টমাইজ করার বিকল্পগুলি বর্ণনা করে।

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

গতিশীল পুনরুদ্ধারের জন্য ভবিষ্যদ্বাণীকারীর মোড ব্যবহার করা হবে।

dynamicThreshold number

গতিশীল পুনরুদ্ধারের জন্য থ্রেশহোল্ড ব্যবহার করা হবে। যদি সেট না করা হয়, একটি সিস্টেম ডিফল্ট মান ব্যবহার করা হয়।

JSON প্রতিনিধিত্ব
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

মোড

গতিশীল পুনরুদ্ধারের জন্য ভবিষ্যদ্বাণীকারীর মোড ব্যবহার করা হবে।

এনামস
MODE_UNSPECIFIED সর্বদা পুনরুদ্ধার ট্রিগার.
MODE_DYNAMIC সিস্টেম যখন সিদ্ধান্ত নেয় তখনই পুনরুদ্ধার চালান এটি প্রয়োজনীয়।

কোড এক্সিকিউশন

এই ধরনের কোন ক্ষেত্র নেই.

টুল যেটি মডেল দ্বারা জেনারেট করা কোড এক্সিকিউট করে এবং স্বয়ংক্রিয়ভাবে মডেলে ফলাফল ফেরত দেয়।

এছাড়াও ExecutableCode এবং CodeExecutionResult দেখুন যা শুধুমাত্র এই টুল ব্যবহার করার সময় তৈরি হয়।

গুগল সার্চ

গুগল সার্চ টুল টাইপ। মডেলে Google অনুসন্ধান সমর্থন করার টুল। গুগল দ্বারা চালিত.

ক্ষেত্র
timeRangeFilter object ( Interval )

ঐচ্ছিক। একটি নির্দিষ্ট সময় পরিসরে অনুসন্ধান ফলাফল ফিল্টার করুন। গ্রাহকরা যদি একটি শুরুর সময় সেট করে, তাহলে তাদের অবশ্যই শেষ সময় সেট করতে হবে (এবং এর বিপরীতে)।

JSON প্রতিনিধিত্ব
{
  "timeRangeFilter": {
    object (Interval)
  }
}

ব্যবধান

একটি টাইমস্ট্যাম্প শুরু (অন্তর্ভুক্ত) এবং একটি টাইমস্ট্যাম্প শেষ (একচেটিয়া) হিসাবে এনকোড করা একটি সময়ের ব্যবধানের প্রতিনিধিত্ব করে।

শুরু অবশ্যই শেষের চেয়ে কম বা সমান হতে হবে। যখন শুরু শেষের সমান হয়, তখন ব্যবধান খালি থাকে (সময়ের সাথে মেলে না)। যখন শুরু এবং শেষ উভয়ই অনির্দিষ্ট থাকে, তখন ব্যবধান যেকোনো সময় মেলে।

ক্ষেত্র
startTime string ( Timestamp format)

ঐচ্ছিক। ব্যবধানের অন্তর্ভুক্তিমূলক শুরু।

নির্দিষ্ট করা হলে, এই ব্যবধানের সাথে মিলে যাওয়া একটি টাইমস্ট্যাম্প একই হতে হবে বা শুরু হওয়ার পরে।

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

endTime string ( Timestamp format)

ঐচ্ছিক। ব্যবধানের একচেটিয়া শেষ।

নির্দিষ্ট করা থাকলে, এই ব্যবধানের সাথে মিলে যাওয়া একটি টাইমস্ট্যাম্প শেষ হওয়ার আগে হতে হবে।

RFC 3339 ব্যবহার করে, যেখানে উৎপন্ন আউটপুট সর্বদা Z-সাধারণ করা হবে এবং 0, 3, 6 বা 9 ভগ্নাংশ সংখ্যা ব্যবহার করে। "Z" ব্যতীত অন্যান্য অফসেটগুলিও গ্রহণ করা হয়। উদাহরণ: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" বা "2014-10-02T15:01:23+05:30"

JSON প্রতিনিধিত্ব
{
  "startTime": string,
  "endTime": string
}

UrlContext

এই ধরনের কোন ক্ষেত্র নেই.

URL প্রসঙ্গ পুনরুদ্ধার সমর্থন করার জন্য টুল।

টুল কনফিগারেশন

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

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

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

JSON প্রতিনিধিত্ব
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

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

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

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

allowedFunctionNames[] string

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

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

JSON প্রতিনিধিত্ব
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

মোড

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

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

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

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

ক্ষেত্র
totalTokenCount integer

ক্যাশ করা সামগ্রী ব্যবহার করে মোট টোকেনের সংখ্যা৷

JSON প্রতিনিধিত্ব
{
  "totalTokenCount": integer
}