Caching

तरीका: cacheContents.create

कैश मेमोरी में सेव किए गए कॉन्टेंट का संसाधन बनाता है.

एंडपॉइंट

पोस्ट https://generativelanguage.googleapis.com/v1beta/cachedContents

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

अनुरोध के मुख्य भाग में CachedContent का उदाहरण है.

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

सामान्य

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(cache)

model = genai.GenerativeModel.from_cached_content(cache)
response = model.generate_content("Please summarize this transcript")
print(response.text)

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());

नाम से

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache_name = cache.name  # Save the name for later

# Later
cache = genai.caching.CachedContent.get(cache_name)
apollo_model = genai.GenerativeModel.from_cached_content(cache)
response = apollo_model.generate_content("Find a lighthearted moment from this transcript")
print(response.text)

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.");

चैट से

Python

model_name = "gemini-1.5-flash-001"
system_instruction = "You are an expert analyzing transcripts."

model = genai.GenerativeModel(model_name=model_name, system_instruction=system_instruction)
chat = model.start_chat()
document = genai.upload_file(path=media / "a11.txt")
response = chat.send_message(["Hi, could you summarize this transcript?", document])
print("\n\nmodel:  ", response.text)
response = chat.send_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 = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction=system_instruction,
    contents=chat.history,
)
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Continue the chat where you left off.
chat = model.start_chat()
response = chat.send_message(
    "I didn't understand that last part, could you explain it in simpler language?"
)
print("\n\nmodel:  ", response.text)

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()}`);

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

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

तरीका: cacheContents.list

यह कैश मेमोरी में सेव किए गए कॉन्टेंट की सूची दिखाता है.

एंडपॉइंट

पाएं https://generativelanguage.googleapis.com/v1beta/cachedContents

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

pageSize integer

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

pageToken string

ज़रूरी नहीं. पिछले cachedContents.list कॉल से मिला पेज टोकन. अगले पेज को वापस पाने के लिए, यह जानकारी दें.

पेजों पर नंबर डालते समय, cachedContents.list को दिए गए अन्य सभी पैरामीटर, पेज टोकन देने वाले कॉल से मैच होने चाहिए.

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

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

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

कैश मेमोरी में सेव की गई कॉन्टेंट की सूची की मदद से जवाब दें.

अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.

फ़ील्ड
cachedContents[] object (CachedContent)

कैश मेमोरी में सेव किए गए कॉन्टेंट की सूची.

nextPageToken string

एक टोकन, जिसे अगला पेज फिर से पाने के लिए pageToken के तौर पर भेजा जा सकता है. अगर इस फ़ील्ड को हटा दिया जाता है, तो इसके बाद कोई पेज नहीं होता.

JSON के काेड में दिखाना
{
  "cachedContents": [
    {
      object (CachedContent)
    }
  ],
  "nextPageToken": string
}

तरीका: cacheContents.get

कैश मेमोरी में सेव किए गए कॉन्टेंट के संसाधन को पढ़ता है.

एंडपॉइंट

पाएं https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

पाथ पैरामीटर

name string

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

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

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

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

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
print(genai.caching.CachedContent.get(name=cache.name))

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

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

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

तरीका: cacheContents.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 का उदाहरण है.

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

Python

import datetime

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)

# You can update the ttl
cache.update(ttl=datetime.timedelta(hours=2))
print(f"After update:\n {cache}")

# Or you can update the expire_time
cache.update(expire_time=datetime.datetime.now() + datetime.timedelta(minutes=15))

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

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

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

तरीका: cacheContents.delete

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

एंडपॉइंट

मिटाएं https://generativelanguage.googleapis.com/v1beta/{name=cachedContents/*}

पाथ पैरामीटर

name string

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

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

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

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

Python

document = genai.upload_file(path=media / "a11.txt")
model_name = "gemini-1.5-flash-001"
cache = genai.caching.CachedContent.create(
    model=model_name,
    system_instruction="You are an expert analyzing transcripts.",
    contents=[document],
)
cache.delete()

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

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

जवाब सही होने पर, जवाब का मुख्य हिस्सा खाली होता है.

REST रिसॉर्स: कैश मेमोरी में सेव किया गया कॉन्टेंट

संसाधन: कैश मेमोरी में सेव किया गया कॉन्टेंट

ऐसा कॉन्टेंट जिसे पहले से प्रोसेस किया जा चुका है और जिसका इस्तेमाल GenerativeService को अनुरोध भेजने के लिए किया जा सकता है.

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

JSON के काेड में दिखाना
{
  "contents": [
    {
      object (Content)
    }
  ],
  "tools": [
    {
      object (Tool)
    }
  ],
  "createTime": string,
  "updateTime": string,
  "usageMetadata": {
    object (UsageMetadata)
  },

  // Union field expiration can be only one of the following:
  "expireTime": string,
  "ttl": string
  // End of list of possible types for union field expiration.
  "name": string,
  "displayName": string,
  "model": string,
  "systemInstruction": {
    object (Content)
  },
  "toolConfig": {
    object (ToolConfig)
  }
}
फ़ील्ड
contents[] object (Content)

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

tools[] object (Tool)

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

createTime string (Timestamp format)

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

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

updateTime string (Timestamp format)

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

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

usageMetadata object (UsageMetadata)

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

यूनियन फ़ील्ड expiration. बताता है कि इस संसाधन की समयसीमा कब खत्म होगी. expiration इनमें से सिर्फ़ एक हो सकता है:
expireTime string (Timestamp format)

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

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

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)

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

सामग्री

बुनियादी स्ट्रक्चर्ड डेटा टाइप, जिसमें मैसेज के कई हिस्सों का कॉन्टेंट होता है.

Content में एक role फ़ील्ड होता है, जो Content के प्रोड्यूसर के बारे में बताता है. साथ ही, parts फ़ील्ड के कई हिस्सों का डेटा होता है, जिसमें मैसेज टर्न का कॉन्टेंट होता है.

JSON के काेड में दिखाना
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}
फ़ील्ड
parts[] object (Part)

Parts को ऑर्डर किया गया, जो एक मैसेज है. कुछ हिस्सों में अलग-अलग MIME टाइप हो सकते हैं.

role string

ज़रूरी नहीं. कॉन्टेंट का प्रोड्यूसर. 'उपयोगकर्ता' में से कोई एक होना चाहिए या 'मॉडल'.

यह एक से ज़्यादा बार होने वाली बातचीत के लिए मददगार है. अगर ऐसा नहीं है, तो इसे खाली छोड़ा जा सकता है या सेट नहीं किया जा सकता.

भाग

ऐसा डेटाटाइप जिसमें मीडिया शामिल है, जो कई हिस्सों वाले Content मैसेज का हिस्सा है.

Part में ऐसा डेटा होता है जिसमें उससे जुड़ा डेटा टाइप होता है. Part में, Part.data के लिए स्वीकार किए गए टाइप में से सिर्फ़ एक टाइप हो सकता है.

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

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

  // Union field data can be only one of the following:
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  }
  // End of list of possible types for union field data.
}
फ़ील्ड

यूनियन फ़ील्ड data.

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 के काेड में दिखाना
{
  "mimeType": string,
  "data": string
}
फ़ील्ड
mimeType string

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

data string (bytes format)

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

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

FunctionCall

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

JSON के काेड में दिखाना
{
  "name": string,
  "args": {
    object
  }
}
फ़ील्ड
name string

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

args object (Struct format)

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

FunctionResponse

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

JSON के काेड में दिखाना
{
  "name": string,
  "response": {
    object
  }
}
फ़ील्ड
name string

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

response object (Struct format)

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

FileData

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

JSON के काेड में दिखाना
{
  "mimeType": string,
  "fileUri": string
}
फ़ील्ड
mimeType string

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

fileUri string

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

ExecutableCode

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

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

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

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

code string

ज़रूरी है. एक्ज़ीक्यूट किया जाने वाला कोड.

भाषा

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

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

CodeExecutionResult

ExecutableCode को चलाने का नतीजा.

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

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

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

output string

ज़रूरी नहीं. कोड एक्ज़िक्यूशन पूरा होने पर stdout शामिल होता है. साथ ही, stderr या अन्य जानकारी को भी शामिल किया जाता है.

नतीजा

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

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

टूल

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

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

JSON के काेड में दिखाना
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "codeExecution": {
    object (CodeExecution)
  }
}
फ़ील्ड
functionDeclarations[] object (FunctionDeclaration)

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

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

codeExecution object (CodeExecution)

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

FunctionDeclaration

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

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

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

description string

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

parameters object (Schema)

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

स्कीमा

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

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

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

format string

ज़रूरी नहीं. डेटा का फ़ॉर्मैट. इसका इस्तेमाल सिर्फ़ शुरुआती डेटा टाइप के लिए किया जाता है. काम करने वाले फ़ॉर्मैट: NUMBER टाइप के लिए: float, INTEGER के लिए डबल टाइप: int32, स्ट्रिंग के लिए int64 टाइप: enum

description string

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

nullable boolean

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

enum[] string

ज़रूरी नहीं. enum फ़ॉर्मैट के साथ Type.STRING के एलिमेंट की संभावित वैल्यू. उदाहरण के लिए, हम Enum डायरेक्शन को इस तरह परिभाषित कर सकते हैं : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

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

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

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

required[] string

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

items object (Schema)

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

टाइप

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

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

CodeExecution

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

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

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

ToolConfig

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

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

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

FunctionCallingConfig

फ़ंक्शन कॉलिंग व्यवहार तय करने के लिए कॉन्फ़िगरेशन.

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

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

allowedFunctionNames[] string

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

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

मोड

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

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

UsageMetadata

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

JSON के काेड में दिखाना
{
  "totalTokenCount": integer
}
फ़ील्ड
totalTokenCount integer

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