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)

यूटीसी के मुताबिक, इस संसाधन के खत्म होने का टाइमस्टैंप. यह आउटपुट में हमेशा दिया जाता है. भले ही, इनपुट में कुछ भी भेजा गया हो.

आरएफ़सी 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)

सिर्फ़ इनपुट के लिए. इस संसाधन के लिए नया टीटीएल, सिर्फ़ इनपुट.

सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि 's' पर खत्म होती है. उदाहरण: "3.5s".

name string

ज़रूरी नहीं. आइडेंटिफ़ायर. कैश मेमोरी में सेव किए गए कॉन्टेंट का नाम. फ़ॉर्मैट: cachedContents/{id}

displayName string

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

model string

ज़रूरी है. इम्यूटेबल. कैश मेमोरी में सेव किए गए कॉन्टेंट के फ़ॉर्मैट के लिए इस्तेमाल किए जाने वाले Model का नाम: models/{model}

systemInstruction object (Content)

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

toolConfig object (ToolConfig)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. टूल का कॉन्फ़िगरेशन. यह कॉन्फ़िगरेशन सभी टूल के लिए शेयर किया जाता है.

अनुरोध का उदाहरण

सामान्य

Python

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});

console.log(cacheResult);

const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(cacheResult);
const result = await model.generateContent(
  "Please summarize this transcript.",
);
console.log(result.response.text());

शुरू करें

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
prompt := "Please summarize this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

शेल

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=$GOOGLE_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=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
      "contents": [
        {
          "parts":[{
            "text": "Please summarize this transcript"
          }],
          "role": "user"
        },
      ],
      "cachedContent": "'$CACHE_NAME'"
    }'

नाम

Python

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
// import { GoogleGenerativeAI } from "@google/generative-ai";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheName = cacheResult.name; // Save the name for later.

// Later
const getCacheResult = await cacheManager.get(cacheName);
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModelFromCachedContent(getCacheResult);
model.generateContent("Please summarize this transcript.");

शुरू करें

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

चैट से

Python

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash-001" });
const chat = model.startChat();

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

let result = await chat.sendMessage([
  "Hi, could you summarize this transcript?",
  {
    fileData: {
      fileUri: uploadResult.file.uri,
      mimeType: uploadResult.file.mimeType,
    },
  },
]);
console.log(`\n\nmodel: ${result.response.text()}`);
result = await chat.sendMessage(
  "Okay, could you tell me more about the trans-lunar injection",
);
console.log(`\n\nmodel: ${result.response.text()}`);

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: await chat.getHistory(),
});

const newModel = genAI.getGenerativeModelFromCachedContent(cacheResult);

const newChat = newModel.startChat();
result = await newChat.sendMessage(
  "I didn't understand that last part, could you explain it in simpler language?",
);
console.log(`\n\nmodel: ${result.response.text()}`);

शुरू करें

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

modelName := "gemini-1.5-flash-001"
model := client.GenerativeModel(modelName)
model.SystemInstruction = genai.NewUserContent(genai.Text("You are an expert analyzing transcripts."))

cs := model.StartChat()
resp, err := cs.SendMessage(ctx, genai.Text("Hi, could you summarize this transcript?"), fd)
if err != nil {
	log.Fatal(err)
}

resp, err = cs.SendMessage(ctx, genai.Text("Okay, could you tell me more about the trans-lunar injection"))
if err != nil {
	log.Fatal(err)
}

// To cache the conversation so far, pass the chat history as the list of
// contents.

argcc := &genai.CachedContent{
	Model:             modelName,
	SystemInstruction: model.SystemInstruction,
	Contents:          cs.History,
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

modelWithCache := client.GenerativeModelFromCachedContent(cc)
cs = modelWithCache.StartChat()
resp, err = cs.SendMessage(ctx, genai.Text("I didn't understand that last part, could you please explain it in simpler language?"))
if err != nil {
	log.Fatal(err)
}
printResponse(resp)

जवाब का मुख्य भाग

कामयाब रहने पर, जवाब के मुख्य हिस्से में CachedContent का नया इंस्टेंस शामिल किया जाता है.

तरीका: cachedContents.list

CachedContents की सूची बनाता है.

एंडपॉइंट

get https://generativelanguage.googleapis.com/v1beta/cachedContents

क्वेरी पैरामीटर

pageSize integer

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

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} फ़ॉर्मैट में होता है.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

अनुरोध का उदाहरण

Python

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
const cacheGetResult = await cacheManager.get(cacheResult.name);
console.log(cacheGetResult);

शुरू करें

file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "a11.txt"), nil)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)
fd := genai.FileData{URI: file.URI}

argcc := &genai.CachedContent{
	Model:             "gemini-1.5-flash-001",
	SystemInstruction: genai.NewUserContent(genai.Text("You are an expert analyzing transcripts.")),
	Contents:          []*genai.Content{genai.NewUserContent(fd)},
}
cc, err := client.CreateCachedContent(ctx, argcc)
if err != nil {
	log.Fatal(err)
}
defer client.DeleteCachedContent(ctx, cc.Name)

// Save the name for later
cacheName := cc.Name

// ... Later
cc2, err := client.GetCachedContent(ctx, cacheName)
if err != nil {
	log.Fatal(err)
}
modelWithCache := client.GenerativeModelFromCachedContent(cc2)
prompt := "Find a lighthearted moment from this transcript"
resp, err := modelWithCache.GenerateContent(ctx, genai.Text(prompt))
if err != nil {
	log.Fatal(err)
}

printResponse(resp)

शेल

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

जवाब का मुख्य भाग

कामयाब रहने पर, जवाब के मुख्य हिस्से में CachedContent का एक इंस्टेंस शामिल किया जाता है.

तरीका: cachedContents.patch

CachedContent रिसॉर्स को अपडेट करता है. हालांकि, सिर्फ़ समयसीमा को अपडेट किया जा सकता है.

एंडपॉइंट

पैच 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)

यूटीसी के मुताबिक, इस संसाधन के खत्म होने का टाइमस्टैंप. यह आउटपुट में हमेशा दिया जाता है. भले ही, इनपुट में कुछ भी भेजा गया हो.

आरएफ़सी 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)

सिर्फ़ इनपुट के लिए. इस संसाधन के लिए नया टीटीएल, सिर्फ़ इनपुट.

सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि 's' पर खत्म होती है. उदाहरण: "3.5s".

name string

ज़रूरी नहीं. आइडेंटिफ़ायर. कैश मेमोरी में सेव किए गए कॉन्टेंट का नाम. फ़ॉर्मैट: cachedContents/{id}

अनुरोध का उदाहरण

Python

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
console.log("initial cache data:", cacheResult);
const cacheUpdateResult = await cacheManager.update(cacheResult.name, {
  cachedContent: {
    // 2 hours
    ttlSeconds: 60 * 60 * 2,
  },
});
console.log("updated cache data:", cacheUpdateResult);

शुरू करें

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

शेल

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

जवाब का मुख्य भाग

कामयाब रहने पर, जवाब के मुख्य हिस्से में CachedContent का एक इंस्टेंस शामिल किया जाता है.

तरीका: cachedContents.delete

CachedContent रिसॉर्स मिटाता है.

एंडपॉइंट

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

पाथ पैरामीटर

name string

ज़रूरी है. कॉन्टेंट कैश मेमोरी एंट्री का रेफ़रंस देने वाले संसाधन का नाम. फ़ॉर्मैट: cachedContents/{id} यह cachedContents/{cachedcontent} फ़ॉर्मैट में होता है.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

अनुरोध का उदाहरण

Python

# With Gemini-2 we're launching a new SDK, see this doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

Node.js

// Make sure to include these imports:
// import { GoogleAICacheManager, GoogleAIFileManager } from "@google/generative-ai/server";
const cacheManager = new GoogleAICacheManager(process.env.API_KEY);
const fileManager = new GoogleAIFileManager(process.env.API_KEY);

const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
  mimeType: "text/plain",
});

const cacheResult = await cacheManager.create({
  model: "models/gemini-1.5-flash-001",
  contents: [
    {
      role: "user",
      parts: [
        {
          fileData: {
            fileUri: uploadResult.file.uri,
            mimeType: uploadResult.file.mimeType,
          },
        },
      ],
    },
  ],
});
await cacheManager.delete(cacheResult.name);

शुरू करें

file, err := client.UploadFileFromPath(ctx,
	filepath.Join(testDataDir, "a11.txt"),
	&genai.UploadFileOptions{MIMEType: "text/plain"})
if err != nil {
	log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

शेल

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

जवाब का मुख्य भाग

अगर एपीआई सही से जुड़ जाता है, तो रिस्पॉन्स बॉडी में खाली JSON ऑब्जेक्ट होता है.

REST रिसॉर्स: cachedContents

रिसॉर्स: CachedContent

पहले से प्रोसेस किया गया कॉन्टेंट, जिसका इस्तेमाल GenerativeService के अगले अनुरोध में किया जा सकता है.

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

फ़ील्ड
contents[] object (Content)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. कैश मेमोरी में सेव किया जाने वाला कॉन्टेंट.

tools[] object (Tool)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. Tools की सूची, जिसका इस्तेमाल मॉडल अगला जवाब जनरेट करने के लिए कर सकता है

createTime string (Timestamp format)

सिर्फ़ आउटपुट के लिए. कैश मेमोरी एंट्री बनाने का समय.

आरएफ़सी 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)

सिर्फ़ आउटपुट के लिए. कैश मेमोरी में मौजूद एंट्री को आखिरी बार यूटीसी टाइम में कब अपडेट किया गया था.

आरएफ़सी 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)

यूटीसी के मुताबिक, इस संसाधन के खत्म होने का टाइमस्टैंप. यह आउटपुट में हमेशा दिया जाता है. भले ही, इनपुट में कुछ भी भेजा गया हो.

आरएफ़सी 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)

सिर्फ़ इनपुट के लिए. इस संसाधन के लिए नया टीटीएल, सिर्फ़ इनपुट.

सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि '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 में स्वीकार किए गए टाइप में से सिर्फ़ एक टाइप शामिल हो सकता है.

अगर inlineData फ़ील्ड को रॉ बाइट से भरा गया है, तो Part में IANA का ऐसा MIME टाइप होना चाहिए जो मीडिया के टाइप और सब-टाइप की पहचान करता हो.

फ़ील्ड
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)

यूआरआई पर आधारित डेटा.

executableCode object (ExecutableCode)

मॉडल से जनरेट किया गया कोड, जिसे लागू करना है.

codeExecutionResult object (CodeExecutionResult)

ExecutableCode को लागू करने का नतीजा.

JSON के काेड में दिखाना
{

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

ब्लॉब

रॉ मीडिया बाइट.

टेक्स्ट को रॉ बाइट के तौर पर नहीं भेजा जाना चाहिए. इसके लिए, 'टेक्स्ट' फ़ील्ड का इस्तेमाल करें.

फ़ील्ड
mimeType string

सोर्स डेटा का IANA स्टैंडर्ड एमआईएमई टाइप. उदाहरण: - image/png - image/jpeg अगर कोई ऐसा MIME टाइप दिया जाता है जो काम नहीं करता, तो गड़बड़ी का मैसेज दिखेगा. इस्तेमाल किए जा सकने वाले फ़ॉर्मैट की पूरी सूची देखने के लिए, इस्तेमाल किए जा सकने वाले फ़ाइल फ़ॉर्मैट लेख पढ़ें.

data string (bytes format)

मीडिया फ़ॉर्मैट के लिए रॉ बाइट.

base64 कोड में बदली गई स्ट्रिंग.

JSON के काेड में दिखाना
{
  "mimeType": string,
  "data": string
}

FunctionCall

मॉडल से मिला अनुमानित FunctionCall, जिसमें FunctionDeclaration.name को दिखाने वाली स्ट्रिंग होती है. इसमें आर्ग्युमेंट और उनकी वैल्यू भी शामिल होती हैं.

फ़ील्ड
id string

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

name string

ज़रूरी है. कॉल किए जाने वाले फ़ंक्शन का नाम. इसमें a-z, A-Z, 0-9 या अंडरस्कोर और डैश शामिल होने चाहिए. साथ ही, यह ज़्यादा से ज़्यादा 63 वर्णों का होना चाहिए.

args object (Struct format)

ज़रूरी नहीं. JSON ऑब्जेक्ट फ़ॉर्मैट में फ़ंक्शन पैरामीटर और वैल्यू.

JSON के काेड में दिखाना
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

FunctionCall के नतीजे के आउटपुट में, FunctionDeclaration.name की जानकारी देने वाली स्ट्रिंग और फ़ंक्शन का कोई भी आउटपुट शामिल होता है. इस स्ट्रक्चर्ड JSON ऑब्जेक्ट का इस्तेमाल, मॉडल के संदर्भ के तौर पर किया जाता है. इसमें मॉडल के अनुमान के आधार पर किए गए FunctionCall का नतीजा शामिल होना चाहिए.

फ़ील्ड
id string

ज़रूरी नहीं. इस रिस्पॉन्स के लिए फ़ंक्शन कॉल का आईडी. क्लाइंट से अपने-आप पॉप्युलेट होता है, ताकि वह फ़ंक्शन कॉल id से मैच कर सके.

name string

ज़रूरी है. कॉल किए जाने वाले फ़ंक्शन का नाम. इसमें a-z, A-Z, 0-9 या अंडरस्कोर और डैश शामिल होने चाहिए. साथ ही, यह ज़्यादा से ज़्यादा 63 वर्णों का होना चाहिए.

response object (Struct format)

ज़रूरी है. फ़ंक्शन का रिस्पॉन्स, JSON ऑब्जेक्ट फ़ॉर्मैट में.

JSON के काेड में दिखाना
{
  "id": string,
  "name": string,
  "response": {
    object
  }
}

FileData

यूआरआई पर आधारित डेटा.

फ़ील्ड
mimeType string

ज़रूरी नहीं. सोर्स डेटा का IANA स्टैंडर्ड एमआईएमई टाइप.

fileUri string

ज़रूरी है. यूआरआई.

JSON के काेड में दिखाना
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

मॉडल से जनरेट किया गया कोड, जिसे चलाया जाना है और मॉडल को मिला नतीजा.

यह सिर्फ़ CodeExecution टूल का इस्तेमाल करने पर जनरेट होता है. इसमें कोड अपने-आप लागू हो जाएगा और उससे जुड़ा CodeExecutionResult भी जनरेट हो जाएगा.

फ़ील्ड
language enum (Language)

ज़रूरी है. code की प्रोग्रामिंग भाषा.

code string

ज़रूरी है. वह कोड जिसे लागू करना है.

JSON के काेड में दिखाना
{
  "language": enum (Language),
  "code": string
}

भाषा

जनरेट किए गए कोड के लिए इस्तेमाल की जा सकने वाली प्रोग्रामिंग भाषाएं.

Enums
LANGUAGE_UNSPECIFIED भाषा की जानकारी नहीं दी गई है. इस वैल्यू का इस्तेमाल नहीं किया जाना चाहिए.
PYTHON Python 3.10 या इसके बाद का वर्शन, जिसमें numpy और simpy उपलब्ध हों.

CodeExecutionResult

ExecutableCode को लागू करने का नतीजा.

यह सिर्फ़ CodeExecution का इस्तेमाल करने पर जनरेट होता है. साथ ही, यह हमेशा part के बाद आता है, जिसमें ExecutableCode होता है.

फ़ील्ड
outcome enum (Outcome)

ज़रूरी है. कोड चलाने का नतीजा.

output string

ज़रूरी नहीं. कोड लागू होने पर, इसमें स्टर्डआउट होता है. इसके अलावा, कोड लागू न होने पर इसमें स्टर्डआउट या कोई अन्य जानकारी होती है.

JSON के काेड में दिखाना
{
  "outcome": enum (Outcome),
  "output": string
}

नतीजा

कोड को लागू करने के संभावित नतीजों की सूची.

Enums
OUTCOME_UNSPECIFIED स्थिति की जानकारी नहीं है. इस वैल्यू का इस्तेमाल नहीं किया जाना चाहिए.
OUTCOME_OK कोड लागू हो गया.
OUTCOME_FAILED कोड का इस्तेमाल पूरा हो गया, लेकिन कोई गड़बड़ी हुई. stderr में वजह शामिल होनी चाहिए.
OUTCOME_DEADLINE_EXCEEDED कोड को लागू करने में बहुत ज़्यादा समय लगा और उसे रद्द कर दिया गया. हो सकता है कि कुछ आउटपुट मौजूद हो या नहीं.

टूल

टूल की जानकारी, जिसका इस्तेमाल मॉडल जवाब जनरेट करने के लिए कर सकता है.

Tool एक कोड का हिस्सा है, जो सिस्टम को बाहरी सिस्टम के साथ इंटरैक्ट करने की सुविधा देता है. इससे सिस्टम, मॉडल के नॉलेज और स्कोप से बाहर की कोई कार्रवाई या कार्रवाइयों का सेट कर सकता है.

फ़ील्ड
functionDeclarations[] object (FunctionDeclaration)

ज़रूरी नहीं. मॉडल के लिए उपलब्ध FunctionDeclarations की सूची, जिसका इस्तेमाल फ़ंक्शन कॉल करने के लिए किया जा सकता है.

मॉडल या सिस्टम, फ़ंक्शन को लागू नहीं करता. इसके बजाय, तय किए गए फ़ंक्शन को FunctionCall के तौर पर दिखाया जा सकता है. साथ ही, इसे क्लाइंट साइड पर आर्ग्युमेंट के साथ चलाया जा सकता है. मॉडल, रिस्पॉन्स में FunctionCall को पॉप्युलेट करके, इन फ़ंक्शन के सबसेट को कॉल करने का फ़ैसला ले सकता है. बातचीत के अगले चरण में, मॉडल के अगले चरण के लिए Content.role "फ़ंक्शन" जनरेशन कॉन्टेक्स्ट के साथ FunctionResponse हो सकता है.

googleSearchRetrieval object (GoogleSearchRetrieval)

ज़रूरी नहीं. Google Search की मदद से काम करने वाला, डेटा वापस पाने वाला टूल.

codeExecution object (CodeExecution)

ज़रूरी नहीं. इससे मॉडल को जनरेशन के हिस्से के तौर पर कोड को लागू करने में मदद मिलती है.

JSON के काेड में दिखाना
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  }
}

FunctionDeclaration

OpenAPI 3.03 स्पेसिफ़िकेशन के मुताबिक, फ़ंक्शन के एलान को स्ट्रक्चर्ड तरीके से दिखाना. इस एलान में, फ़ंक्शन का नाम और पैरामीटर शामिल होते हैं. यह FunctionDeclaration, कोड के उस ब्लॉक को दिखाता है जिसका इस्तेमाल मॉडल, Tool के तौर पर कर सकता है और क्लाइंट उसे लागू कर सकता है.

फ़ील्ड
name string

ज़रूरी है. फ़ंक्शन का नाम. इसमें a-z, A-Z, 0-9 या अंडरस्कोर और डैश शामिल होने चाहिए. साथ ही, यह ज़्यादा से ज़्यादा 63 वर्णों का होना चाहिए.

description string

ज़रूरी है. फ़ंक्शन के बारे में कम शब्दों में जानकारी.

parameters object (Schema)

ज़रूरी नहीं. इस फ़ंक्शन के पैरामीटर के बारे में बताता है. Open API 3.03 पैरामीटर ऑब्जेक्ट की स्ट्रिंग की कोड: पैरामीटर का नाम दिखाता है. पैरामीटर के नाम केस-सेंसिटिव होते हैं. स्कीमा वैल्यू: यह स्कीमा, पैरामीटर के लिए इस्तेमाल किए गए टाइप की जानकारी देता है.

response object (Schema)

ज़रूरी नहीं. इस फ़ंक्शन के आउटपुट के बारे में JSON स्कीमा फ़ॉर्मैट में जानकारी देता है. Open API 3.03 रिस्पॉन्स ऑब्जेक्ट दिखाता है. स्कीमा, फ़ंक्शन की रिस्पॉन्स वैल्यू के लिए इस्तेमाल किए जाने वाले टाइप की जानकारी देता है.

JSON के काेड में दिखाना
{
  "name": string,
  "description": string,
  "parameters": {
    object (Schema)
  },
  "response": {
    object (Schema)
  }
}

स्कीमा

Schema ऑब्जेक्ट की मदद से, इनपुट और आउटपुट डेटा टाइप तय किए जा सकते हैं. ये टाइप, ऑब्जेक्ट के साथ-साथ प्राइमिटिव और ऐरे भी हो सकते हैं. OpenAPI 3.0 स्कीमा ऑब्जेक्ट के चुनिंदा सबसेट को दिखाता है.

फ़ील्ड
type enum (Type)

ज़रूरी है. डेटा टाइप.

format string

ज़रूरी नहीं. डेटा का फ़ॉर्मैट. इसका इस्तेमाल सिर्फ़ प्राइमिटिव डेटाटाइप के लिए किया जाता है. इस्तेमाल किए जा सकने वाले फ़ॉर्मैट: NUMBER टाइप के लिए: float, double INTEGER टाइप के लिए: int32, int64 STRING टाइप के लिए: enum, date-time

description string

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

nullable boolean

ज़रूरी नहीं. यह बताता है कि वैल्यू शून्य हो सकती है या नहीं.

enum[] string

ज़रूरी नहीं. टाइप.स्ट्रिंग एलिमेंट की संभावित वैल्यू, जो enum फ़ॉर्मैट में हैं. उदाहरण के लिए, हम Enum Direction को इस तरह से तय कर सकते हैं : {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))

ज़रूरी नहीं. Type.OBJECT की प्रॉपर्टी.

ऐसा ऑब्जेक्ट जिसमें "key": value पेयर की सूची होती है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

ज़रूरी नहीं. Type.OBJECT की ज़रूरी प्रॉपर्टी.

propertyOrdering[] string

ज़रूरी नहीं. प्रॉपर्टी का क्रम. यह ओपन एपीआई स्पेसिफ़िकेशन में स्टैंडर्ड फ़ील्ड नहीं है. इसका इस्तेमाल, रिस्पॉन्स में प्रॉपर्टी के क्रम को तय करने के लिए किया जाता है.

items object (Schema)

ज़रूरी नहीं. Type.ARRAY एलिमेंट का स्कीमा.

JSON के काेड में दिखाना
{
  "type": enum (Type),
  "format": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "propertyOrdering": [
    string
  ],
  "items": {
    object (Schema)
  }
}

टाइप

टाइप में, OpenAPI डेटा टाइप की सूची होती है. इस सूची को https://spec.openapis.org/oas/v3.0.3#data-types में बताया गया है

Enums
TYPE_UNSPECIFIED इसकी वैल्यू नहीं दी गई है. इसका इस्तेमाल नहीं किया जाना चाहिए.
STRING स्ट्रिंग टाइप.
NUMBER नंबर का टाइप.
INTEGER इंटिजर टाइप.
BOOLEAN बूलियन टाइप.
ARRAY ऐरे का टाइप.
OBJECT ऑब्जेक्ट का टाइप.

GoogleSearchRetrieval

Google का यह टूल, सार्वजनिक वेब डेटा को वापस लाने में मदद करता है.

फ़ील्ड
dynamicRetrievalConfig object (DynamicRetrievalConfig)

दिए गए सोर्स के लिए, डाइनैमिक रीट्रीवल कॉन्फ़िगरेशन की जानकारी देता है.

JSON के काेड में दिखाना
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

डाइनैमिक रीट्रीवल को पसंद के मुताबिक बनाने के विकल्पों के बारे में बताता है.

फ़ील्ड
mode enum (Mode)

डाइनैमिक रीट्रिवल में इस्तेमाल किए जाने वाले प्रिडिक्टर का मोड.

dynamicThreshold number

डाइनैमिक रीट्रिवल में इस्तेमाल किया जाने वाला थ्रेशोल्ड. अगर यह सेट नहीं है, तो सिस्टम की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.

JSON के काेड में दिखाना
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

मोड

डाइनैमिक रीट्रिवल में इस्तेमाल किए जाने वाले प्रिडिक्टर का मोड.

Enums
MODE_UNSPECIFIED डेटा वापस पाने की प्रोसेस को हमेशा ट्रिगर करें.
MODE_DYNAMIC डेटा वापस पाने की प्रोसेस सिर्फ़ तब चलाएं, जब सिस्टम यह तय करे कि यह ज़रूरी है.

CodeExecution

इस टाइप में कोई फ़ील्ड नहीं है.

यह एक ऐसा टूल है जो मॉडल से जनरेट किए गए कोड को लागू करता है और मॉडल को नतीजा अपने-आप दिखाता है.

ExecutableCode और CodeExecutionResult भी देखें. ये सिर्फ़ इस टूल का इस्तेमाल करने पर जनरेट होते हैं.

GoogleSearch

इस टाइप में कोई फ़ील्ड नहीं है.

Google Search टूल का टाइप. मॉडल में Google Search की सुविधा देने वाला टूल. Google की ओर से उपलब्ध कराए जाते हैं.

ToolConfig

टूल कॉन्फ़िगरेशन, जिसमें अनुरोध में Tool के इस्तेमाल के बारे में बताने के लिए पैरामीटर शामिल होते हैं.

फ़ील्ड
functionCallingConfig object (FunctionCallingConfig)

ज़रूरी नहीं. फ़ंक्शन कॉल करने का कॉन्फ़िगरेशन.

JSON के काेड में दिखाना
{
  "functionCallingConfig": {
    object (FunctionCallingConfig)
  }
}

FunctionCallingConfig

फ़ंक्शन को कॉल करने के तरीके की जानकारी देने के लिए कॉन्फ़िगरेशन.

फ़ील्ड
mode enum (Mode)

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

allowedFunctionNames[] string

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

इसे सिर्फ़ तब सेट किया जाना चाहिए, जब मोड ANY हो. फ़ंक्शन के नाम, [FunctionDeclaration.name] से मेल खाने चाहिए. मोड को 'कोई भी' पर सेट करने पर, मॉडल दिए गए फ़ंक्शन के नामों के सेट से फ़ंक्शन कॉल का अनुमान लगाएगा.

JSON के काेड में दिखाना
{
  "mode": enum (Mode),
  "allowedFunctionNames": [
    string
  ]
}

मोड

फ़ंक्शन कॉल करने के लिए, फ़ंक्शन के लागू होने का तरीका तय करता है.

Enums
MODE_UNSPECIFIED फ़ंक्शन कॉलिंग मोड की जानकारी नहीं दी गई है. इस वैल्यू का इस्तेमाल नहीं किया जाना चाहिए.
AUTO मॉडल का डिफ़ॉल्ट व्यवहार, मॉडल यह तय करता है कि फ़ंक्शन कॉल या सामान्य भाषा में जवाब देने का अनुमान लगाया जाए.
ANY मॉडल को सिर्फ़ फ़ंक्शन कॉल का अनुमान लगाने के लिए बनाया गया है. अगर "allowedFunctionNames" सेट हैं, तो अनुमानित फ़ंक्शन कॉल "allowedFunctionNames" में से किसी एक तक ही सीमित होगा. अगर "allowedFunctionNames" सेट नहीं हैं, तो अनुमानित फ़ंक्शन कॉल, दिए गए "functionDeclarations" में से किसी एक होगा.
NONE मॉडल, किसी भी फ़ंक्शन कॉल का अनुमान नहीं लगाएगा. मॉडल का व्यवहार वैसा ही होता है जैसा किसी फ़ंक्शन के एलान को पास न करने पर होता है.

UsageMetadata

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

फ़ील्ड
totalTokenCount integer

कैश मेमोरी में सेव किए गए कॉन्टेंट के लिए इस्तेमाल किए गए टोकन की कुल संख्या.

JSON के काेड में दिखाना
{
  "totalTokenCount": integer
}