Generating content

Gemini API, इमेज, ऑडियो, कोड, टूल वगैरह की मदद से कॉन्टेंट जनरेट करने की सुविधा देता है. इनमें से हर सुविधा के बारे में ज़्यादा जानने के लिए, आगे पढ़ें और टास्क पर फ़ोकस करने वाला सैंपल कोड देखें या पूरी जानकारी वाली गाइड पढ़ें.

तरीका: models.generateContent

इनपुट GenerateContentRequest के आधार पर, मॉडल से जवाब जनरेट करता है. इस्तेमाल से जुड़ी ज़्यादा जानकारी के लिए, टेक्स्ट जनरेट करने की गाइड देखें. ट्यून किए गए मॉडल के साथ-साथ अन्य मॉडल के लिए, इनपुट की क्षमताएं अलग-अलग होती हैं. ज़्यादा जानकारी के लिए, मॉडल गाइड और ट्यूनिंग गाइड देखें.

एंडपॉइंट

पोस्ट https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

पाथ पैरामीटर

model string

ज़रूरी है. उस Model का नाम जिसका इस्तेमाल करके, टेक्स्ट जनरेट करना है.

फ़ॉर्मैट: models/{model}. यह models/{model} के फ़ॉर्म में होता है.

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

अनुरोध के मुख्य हिस्से में, इस स्ट्रक्चर का डेटा शामिल होता है:

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

ज़रूरी है. मॉडल के साथ मौजूदा बातचीत का कॉन्टेंट.

एक बार में जवाब देने वाली क्वेरी के लिए, यह एक इंस्टेंस है. चैट जैसी मल्टी-टर्न क्वेरी के लिए, यह एक दोहराया गया फ़ील्ड है. इसमें बातचीत का इतिहास और सबसे हाल ही का अनुरोध शामिल होता है.

tools[] object (Tool)

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

Tool, कोड का एक हिस्सा होता है. इसकी मदद से, सिस्टम बाहरी सिस्टम के साथ इंटरैक्ट करके कोई कार्रवाई या कार्रवाइयों का सेट पूरा कर सकता है. यह कार्रवाई या कार्रवाइयों का सेट, Model की जानकारी और दायरे से बाहर होता है. Function और codeExecution को Tool के तौर पर इस्तेमाल किया जा सकता है. ज़्यादा जानने के लिए, फ़ंक्शन कॉलिंग और कोड एक्ज़ीक्यूशन की गाइड देखें.

toolConfig object (ToolConfig)

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

safetySettings[] object (SafetySetting)

ज़रूरी नहीं. असुरक्षित कॉन्टेंट को ब्लॉक करने के लिए, यूनीक SafetySetting इंस्टेंस की सूची.

यह नीति GenerateContentRequest.contents और GenerateContentResponse.candidates से लागू होगी. हर तरह के SafetyCategory के लिए, एक से ज़्यादा सेटिंग नहीं होनी चाहिए. एपीआई, ऐसे किसी भी कॉन्टेंट और जवाब को ब्लॉक कर देगा जो इन सेटिंग से तय की गई थ्रेशोल्ड को पूरा नहीं करता. यह सूची, safetySettings में बताए गए हर SafetyCategory के लिए डिफ़ॉल्ट सेटिंग को बदल देती है. अगर सूची में दी गई किसी SafetyCategory के लिए कोई SafetySetting नहीं है, तो एपीआई उस कैटगरी के लिए डिफ़ॉल्ट सुरक्षा सेटिंग का इस्तेमाल करेगा. नुकसान पहुंचाने वाले कॉन्टेंट की ये कैटगरी इस्तेमाल की जा सकती हैं: HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. उपलब्ध सुरक्षा सेटिंग के बारे में ज़्यादा जानकारी के लिए, गाइड देखें. अपने एआई ऐप्लिकेशन में सुरक्षा से जुड़ी ज़रूरी बातों को शामिल करने का तरीका जानने के लिए, सुरक्षा से जुड़े दिशा-निर्देश भी देखें.

continuationToken string (bytes format)

ज़रूरी नहीं. एक ओपेक कॉन्टिन्यूएशन टोकन, जिसका इस्तेमाल पिछले models.generateContent या models.streamGenerateContent रिस्पॉन्स से जनरेशन को फिर से शुरू करने के लिए किया जाता है. यह रिस्पॉन्स, finishReason को CONTINUATION पर सेट करने की वजह से रुक गया था. ध्यान दें कि contents ज़रूरी है. साथ ही, जब किसी अनुरोध में continuation token दिया जाता है, तो उसे शुरुआती अनुरोध के प्रॉम्प्ट और बातचीत के इतिहास को हूबहू दोहराना चाहिए.

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

labels map (key: string, value: string)

ज़रूरी नहीं. अनुरोध के लिए, उपयोगकर्ता के तय किए गए मेटाडेटा वाले लेबल.

ज़रूरी नहीं. लेबल, यूनिफ़ाइड क्लाउड लेबल की ज़रूरी शर्तों के मुताबिक होने चाहिए: - लेबल कुंजियों की शुरुआत किसी अक्षर से होनी चाहिए. - लेबल कुंजी और वैल्यू में 63 से ज़्यादा वर्ण (यूनिकोड कोडपॉइंट) नहीं हो सकते. साथ ही, इनमें सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, अंडरस्कोर, और डैश इस्तेमाल किए जा सकते हैं. - इंटरनैशनल कैरेक्टर के इस्तेमाल की अनुमति है.

इस्तेमाल: - एग्रीगेटर से मिले सुरक्षा आइडेंटिफ़ायर: कुंजी safety_identifier का इस्तेमाल करें (उदाहरण के लिए, {"safety_identifier": "user_session_123"})

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

systemInstruction object (Content)

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

generationConfig object (GenerationConfig)

ज़रूरी नहीं. मॉडल जनरेशन और आउटपुट के लिए कॉन्फ़िगरेशन के विकल्प.

cachedContent string

ज़रूरी नहीं. कैश मेमोरी में सेव किए गए कॉन्टेंट का नाम, जिसका इस्तेमाल अनुमान लगाने के लिए कॉन्टेक्स्ट के तौर पर किया जाता है. फ़ॉर्मैट: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

ज़रूरी नहीं. अनुरोध का सेवा स्तर.

store boolean

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

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

टेक्स्ट

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Write a story about a magic backpack.",
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Write a story about a magic backpack.',
});
console.log(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)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

Java

Client client = new Client();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash", "Write a story about a magic backpack.", null);

System.out.println(response.text());

इमेज

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Tell me about this instrument", organ],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const organ = await ai.files.upload({
  file: path.join(media, 'organ.jpg'),
});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Tell me about this instrument',
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(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)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "organ.jpg"),
	&genai.UploadFileConfig{
		MIMEType: "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
    Content.fromParts(
        Part.fromText("Tell me about this instrument."),
        Part.fromBytes(imageData, "image/jpeg"));

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", content, null);

System.out.println(response.text());

ऑडियो

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const audio = await ai.files.upload({
  file: path.join(media, 'sample.mp3'),
});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Give me a summary of this audio file.',
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(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)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "sample.mp3"),
	&genai.UploadFileConfig{
		MIMEType: "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

वीडियो

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
  print("Processing video...")
  print("File state:", myfile.state)
  time.sleep(5)
  myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-3.8-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Describe this video clip',
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(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)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
	&genai.UploadFileConfig{
		MIMEType: "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{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)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "test.pdf"),
	&genai.UploadFileConfig{
		MIMEType: "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

Chat

Python

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-3.8-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const chat = ai.chats.create({
  model: 'gemini-3.8-flash',
  history: [
    {
      role: 'user',
      parts: [{text: 'Hello'}],
    },
    {
      role: 'model',
      parts: [{text: 'Great to meet you. What would you like to know?'}],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: 'I have 2 dogs in my house.',
});
console.log('Chat response 1:', response1.text);

const response2 = await chat.sendMessage({
  message: 'How many paws are in my house?',
});
console.log('Chat response 2:', response2.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)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-3.8-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

शेल

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Java

Client client = new Client();

Content userContent = Content.fromParts(Part.fromText("Hello"));
Content modelContent =
    Content.builder()
        .role("model")
        .parts(
            Collections.singletonList(
                Part.fromText("Great to meet you. What would you like to know?")))
        .build();

Chat chat =
    client.chats.create(
        "gemini-3.8-flash",
        GenerateContentConfig.builder()
            .systemInstruction(userContent)
            .systemInstruction(modelContent)
            .build());

GenerateContentResponse response1 = chat.sendMessage("I have 2 dogs in my house.");
System.out.println(response1.text());

GenerateContentResponse response2 = chat.sendMessage("How many paws are in my house?");
System.out.println(response2.text());

कैश मेमोरी

Python

from google import genai
from google.genai import types

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

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

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

Node.js

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

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

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

const response = await ai.models.generateContent({
  model: modelName,
  contents: 'Please summarize this transcript',
  config: {cachedContent: cache.name},
});
console.log('Response text:', response.text);

ऐप पर जाएं

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

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

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

ट्यून किया गया मॉडल

Python

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

JSON मोड

Python

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
  recipe_name: str
  ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'List a few popular cookie recipes.',
  config: {
    responseMimeType: 'application/json',
    responseSchema: {
      type: 'array',
      items: {
        type: 'object',
        properties: {
          recipeName: {type: 'string'},
          ingredients: {type: 'array', items: {type: 'string'}},
        },
        required: ['recipeName', 'ingredients'],
      },
    },
  },
});
console.log(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)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.8-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

Java

Client client = new Client();

Schema recipeSchema =
    Schema.builder()
        .type(Array.class.getSimpleName())
        .items(
            Schema.builder()
                .type(Object.class.getSimpleName())
                .properties(
                    Map.of(
                        "recipe_name",
                        Schema.builder().type(String.class.getSimpleName()).build(),
                        "ingredients",
                        Schema.builder()
                            .type(Array.class.getSimpleName())
                            .items(Schema.builder().type(String.class.getSimpleName()).build())
                            .build()))
                .required(List.of("recipe_name", "ingredients"))
                .build())
        .build();

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .responseMimeType("application/json")
        .responseSchema(recipeSchema)
        .build();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash", "List a few popular cookie recipes.", config);

System.out.println(response.text());

कोड एक्ज़ीक्यूशन

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50"
        " prime numbers. Ensure that only the executable code and its"
        " resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
  print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", 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)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.8-flash",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

Java

Client client = new Client();

String prompt =
    """
    Write and execute code that calculates the sum of the first 50 prime numbers.
    Ensure that only the executable code and its resulting output are generated.
    """;

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", prompt, null);

for (Part part : response.candidates().get().getFirst().content().get().parts().get()) {
  System.out.println(part + "\n");
}

System.out.println("-".repeat(80));
System.out.println(response.text());

फ़ंक्शन कॉलिंग

Python

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
  """returns a + b."""
  return a + b

def subtract(a: float, b: float) -> float:
  """returns a - b."""
  return a - b

def multiply(a: float, b: float) -> float:
  """returns a * b."""
  return a * b

def divide(a: float, b: float) -> float:
  """returns a / b."""
  return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-3.8-flash",
    config=types.GenerateContentConfig(
        tools=[add, subtract, multiply, divide]
    ),
)
response = chat.send_message(
    message=(
        "I have 57 cats, each owns 44 mittens, how many mittens is that in"
        " total?"
    )
)
print(response.text)

ऐप पर जाएं

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

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
case "addNumbers":
	result = add(args.FirstParam, args.SecondParam)
case "subtractNumbers":
	result = subtract(args.FirstParam, args.SecondParam)
case "multiplyNumbers":
	result = multiply(args.FirstParam, args.SecondParam)
case "divideNumbers":
	result = divide(args.FirstParam, args.SecondParam)
default:
	return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is "+fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

/**
 * The add function returns the sum of two numbers.
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function add(a, b) {
  return a + b;
}

/**
 * The subtract function returns the difference (a - b).
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function subtract(a, b) {
  return a - b;
}

/**
 * The multiply function returns the product of two numbers.
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function multiply(a, b) {
  return a * b;
}

/**
 * The divide function returns the quotient of a divided by b.
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
function divide(a, b) {
  return a / b;
}

const addDeclaration = {
  name: 'addNumbers',
  parameters: {
    type: 'object',
    description: 'Return the result of adding two numbers.',
    properties: {
      firstParam: {
        type: 'number',
        description:
            'The first parameter which can be an integer or a floating point number.',
      },
      secondParam: {
        type: 'number',
        description:
            'The second parameter which can be an integer or a floating point number.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

const subtractDeclaration = {
  name: 'subtractNumbers',
  parameters: {
    type: 'object',
    description:
        'Return the result of subtracting the second number from the first.',
    properties: {
      firstParam: {
        type: 'number',
        description: 'The first parameter.',
      },
      secondParam: {
        type: 'number',
        description: 'The second parameter.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

const multiplyDeclaration = {
  name: 'multiplyNumbers',
  parameters: {
    type: 'object',
    description: 'Return the product of two numbers.',
    properties: {
      firstParam: {
        type: 'number',
        description: 'The first parameter.',
      },
      secondParam: {
        type: 'number',
        description: 'The second parameter.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

const divideDeclaration = {
  name: 'divideNumbers',
  parameters: {
    type: 'object',
    description:
        'Return the quotient of dividing the first number by the second.',
    properties: {
      firstParam: {
        type: 'number',
        description: 'The first parameter.',
      },
      secondParam: {
        type: 'number',
        description: 'The second parameter.',
      },
    },
    required: ['firstParam', 'secondParam'],
  },
};

// Step 1: Call generateContent with function calling enabled.
const generateContentResponse = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents:
      'I have 57 cats, each owns 44 mittens, how many mittens is that in total?',
  config: {
    toolConfig: {
      functionCallingConfig: {
        mode: FunctionCallingConfigMode.ANY,
      },
    },
    tools: [
      {
        functionDeclarations: [
          addDeclaration,
          subtractDeclaration,
          multiplyDeclaration,
          divideDeclaration,
        ],
      },
    ],
  },
});

// Step 2: Extract the function call.(
// Assuming the response contains a 'functionCalls' array.
const functionCall = generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
console.log(functionCall);

// Parse the arguments.
const args = functionCall.args;
// Expected args format: { firstParam: number, secondParam: number }

// Step 3: Invoke the actual function based on the function name.
const functionMapping = {
  addNumbers: add,
  subtractNumbers: subtract,
  multiplyNumbers: multiply,
  divideNumbers: divide,
};
const func = functionMapping[functionCall.name];
if (!func) {
  console.error('Unimplemented error:', functionCall.name);
  return generateContentResponse;
}
const resultValue = func(args.firstParam, args.secondParam);
console.log('Function result:', resultValue);

// Step 4: Use the chat API to send the result as the final answer.
const chat = ai.chats.create({model: 'gemini-3.8-flash'});
const chatResponse = await chat.sendMessage({
  message: 'The final result is ' + resultValue,
});
console.log(chatResponse.text);

शेल


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

Java

Client client = new Client();

FunctionDeclaration addFunction =
    FunctionDeclaration.builder()
        .name("addNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

FunctionDeclaration subtractFunction =
    FunctionDeclaration.builder()
        .name("subtractNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

FunctionDeclaration multiplyFunction =
    FunctionDeclaration.builder()
        .name("multiplyNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

FunctionDeclaration divideFunction =
    FunctionDeclaration.builder()
        .name("divideNumbers")
        .parameters(
            Schema.builder()
                .type("object")
                .properties(
                    Map.of(
                        "firstParam",
                            Schema.builder().type("number").description("First number").build(),
                        "secondParam",
                            Schema.builder()
                                .type("number")
                                .description("Second number")
                                .build()))
                .required(Arrays.asList("firstParam", "secondParam"))
                .build())
        .build();

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .toolConfig(
            ToolConfig.builder()
                .functionCallingConfig(FunctionCallingConfig.builder().mode("ANY").build())
                .build())
        .tools(
            Collections.singletonList(
                Tool.builder()
                    .functionDeclarations(
                        Arrays.asList(
                            addFunction, subtractFunction, divideFunction, multiplyFunction))
                    .build()))
        .build();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash",
        "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
        config);

if (response.functionCalls() == null || response.functionCalls().isEmpty()) {
  System.err.println("No function call received");
  return null;
}

var functionCall = response.functionCalls().getFirst();
String functionName = functionCall.name().get();
var arguments = functionCall.args();

Map<String, BiFunction<Double, Double, Double>> functionMapping = new HashMap<>();
functionMapping.put("addNumbers", (a, b) -> a + b);
functionMapping.put("subtractNumbers", (a, b) -> a - b);
functionMapping.put("multiplyNumbers", (a, b) -> a * b);
functionMapping.put("divideNumbers", (a, b) -> b != 0 ? a / b : Double.NaN);

BiFunction<Double, Double, Double> function = functionMapping.get(functionName);

Number firstParam = (Number) arguments.get().get("firstParam");
Number secondParam = (Number) arguments.get().get("secondParam");
Double result = function.apply(firstParam.doubleValue(), secondParam.doubleValue());

System.out.println(result);

जनरेशन कॉन्फ़िगरेशन

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Tell me a story about a magic backpack.',
  config: {
    candidateCount: 1,
    stopSequences: ['x'],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(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)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.8-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

शेल

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

Java

Client client = new Client();

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .candidateCount(1)
        .stopSequences(List.of("x"))
        .maxOutputTokens(20)
        .temperature(1.0F)
        .build();

GenerateContentResponse response =
    client.models.generateContent(
        "gemini-3.8-flash", "Tell me a story about a magic backpack.", config);

System.out.println(response.text());

सुरक्षा सेटिंग

Python

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club"
    " sucks! Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT",
                threshold="BLOCK_ONLY_HIGH",
            ),
        ]
    ),
)
try:
  print(response.text)
except Exception:
  print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const unsafePrompt =
    'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.';

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: unsafePrompt,
  config: {
    safetySettings: [
      {
        category: 'HARM_CATEGORY_HATE_SPEECH',
        threshold: 'BLOCK_MEDIUM_AND_ABOVE',
      },
      {
        category: 'HARM_CATEGORY_HARASSMENT',
        threshold: 'BLOCK_ONLY_HIGH',
      },
    ],
  },
});

try {
  console.log('Generated text:', response.text);
} catch (error) {
  console.log('No information generated by the model.');
}
console.log('Safety ratings:', response.candidates[0].safetyRatings);

ऐप पर जाएं

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

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

शेल

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Java

Client client = new Client();

String unsafePrompt =
    """
     I support Martians Soccer Club and I think Jupiterians Football Club sucks!
     Write a ironic phrase about them including expletives.
    """;

GenerateContentConfig config =
    GenerateContentConfig.builder()
        .safetySettings(
            Arrays.asList(
                SafetySetting.builder()
                    .category("HARM_CATEGORY_HATE_SPEECH")
                    .threshold("BLOCK_MEDIUM_AND_ABOVE")
                    .build(),
                SafetySetting.builder()
                    .category("HARM_CATEGORY_HARASSMENT")
                    .threshold("BLOCK_ONLY_HIGH")
                    .build()))
        .build();

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", unsafePrompt, config);

try {
  System.out.println(response.text());
} catch (Exception e) {
  System.out.println("No information generated by the model");
}

System.out.println(response.candidates().get().getFirst().safetyRatings());

सिस्टम के लिए निर्देश

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Good morning! How are you?',
  config: {
    systemInstruction: 'You are a cat. Your name is Neko.',
  },
});
console.log(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)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

शेल

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Java

Client client = new Client();

Part textPart = Part.builder().text("You are a cat. Your name is Neko.").build();

Content content = Content.builder().role("system").parts(ImmutableList.of(textPart)).build();

GenerateContentConfig config =
    GenerateContentConfig.builder().systemInstruction(content).build();

GenerateContentResponse response =
    client.models.generateContent("gemini-3.8-flash", "Good morning! How are you?", config);

System.out.println(response.text());

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

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

तरीका: models.streamGenerateContent

इनपुट GenerateContentRequest के आधार पर, मॉडल से स्ट्रीम किया गया जवाब जनरेट करता है.

एंडपॉइंट

पोस्ट https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

पाथ पैरामीटर

model string

ज़रूरी है. उस Model का नाम जिसका इस्तेमाल करके, टेक्स्ट जनरेट करना है.

फ़ॉर्मैट: models/{model}. यह models/{model} के फ़ॉर्म में होता है.

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

अनुरोध के मुख्य हिस्से में, इस स्ट्रक्चर का डेटा शामिल होता है:

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

ज़रूरी है. मॉडल के साथ मौजूदा बातचीत का कॉन्टेंट.

एक बार में जवाब देने वाली क्वेरी के लिए, यह एक इंस्टेंस है. चैट जैसी मल्टी-टर्न क्वेरी के लिए, यह एक दोहराया गया फ़ील्ड है. इसमें बातचीत का इतिहास और सबसे हाल ही का अनुरोध शामिल होता है.

tools[] object (Tool)

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

Tool, कोड का एक हिस्सा होता है. इसकी मदद से, सिस्टम बाहरी सिस्टम के साथ इंटरैक्ट करके कोई कार्रवाई या कार्रवाइयों का सेट पूरा कर सकता है. यह कार्रवाई या कार्रवाइयों का सेट, Model की जानकारी और दायरे से बाहर होता है. Function और codeExecution को Tool के तौर पर इस्तेमाल किया जा सकता है. ज़्यादा जानने के लिए, फ़ंक्शन कॉलिंग और कोड एक्ज़ीक्यूशन की गाइड देखें.

toolConfig object (ToolConfig)

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

safetySettings[] object (SafetySetting)

ज़रूरी नहीं. असुरक्षित कॉन्टेंट को ब्लॉक करने के लिए, यूनीक SafetySetting इंस्टेंस की सूची.

यह नीति GenerateContentRequest.contents और GenerateContentResponse.candidates से लागू होगी. हर तरह के SafetyCategory के लिए, एक से ज़्यादा सेटिंग नहीं होनी चाहिए. एपीआई, ऐसे किसी भी कॉन्टेंट और जवाब को ब्लॉक कर देगा जो इन सेटिंग से तय की गई थ्रेशोल्ड को पूरा नहीं करता. यह सूची, safetySettings में बताए गए हर SafetyCategory के लिए डिफ़ॉल्ट सेटिंग को बदल देती है. अगर सूची में दिए गए किसी SafetyCategory के लिए कोई SafetySetting नहीं है, तो एपीआई उस कैटगरी के लिए डिफ़ॉल्ट सुरक्षा सेटिंग का इस्तेमाल करेगा. नुकसान पहुंचाने वाले कॉन्टेंट की ये कैटगरी इस्तेमाल की जा सकती हैं: HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. उपलब्ध सुरक्षा सेटिंग के बारे में ज़्यादा जानकारी के लिए, गाइड देखें. अपने एआई ऐप्लिकेशन में सुरक्षा से जुड़ी ज़रूरी बातों को शामिल करने का तरीका जानने के लिए, सुरक्षा से जुड़े दिशा-निर्देश भी देखें.

continuationToken string (bytes format)

ज़रूरी नहीं. एक ओपेक कॉन्टिन्यूएशन टोकन, जिसका इस्तेमाल पिछले models.generateContent या models.streamGenerateContent रिस्पॉन्स से जनरेशन को फिर से शुरू करने के लिए किया जाता है. यह रिस्पॉन्स, finishReason को CONTINUATION पर सेट करने की वजह से रुक गया था. ध्यान दें कि contents ज़रूरी है. साथ ही, जब किसी अनुरोध में continuation token दिया जाता है, तो उसे शुरुआती अनुरोध के प्रॉम्प्ट और बातचीत के इतिहास को हूबहू दोहराना चाहिए.

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

labels map (key: string, value: string)

ज़रूरी नहीं. अनुरोध के लिए, उपयोगकर्ता के तय किए गए मेटाडेटा वाले लेबल.

ज़रूरी नहीं. लेबल, यूनिफ़ाइड क्लाउड लेबल की ज़रूरी शर्तों के मुताबिक होने चाहिए: - लेबल कुंजियों की शुरुआत किसी अक्षर से होनी चाहिए. - लेबल कुंजी और वैल्यू में 63 से ज़्यादा वर्ण (यूनिकोड कोडपॉइंट) नहीं हो सकते. साथ ही, इनमें सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, अंडरस्कोर, और डैश इस्तेमाल किए जा सकते हैं. - इंटरनैशनल कैरेक्टर के इस्तेमाल की अनुमति है.

इस्तेमाल: - एग्रीगेटर से मिले सुरक्षा आइडेंटिफ़ायर: कुंजी safety_identifier का इस्तेमाल करें (उदाहरण के लिए, {"safety_identifier": "user_session_123"})

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

systemInstruction object (Content)

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

generationConfig object (GenerationConfig)

ज़रूरी नहीं. मॉडल जनरेशन और आउटपुट के लिए कॉन्फ़िगरेशन के विकल्प.

cachedContent string

ज़रूरी नहीं. कैश मेमोरी में सेव किए गए कॉन्टेंट का नाम, जिसका इस्तेमाल अनुमान लगाने के लिए कॉन्टेक्स्ट के तौर पर किया जाता है. फ़ॉर्मैट: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

ज़रूरी नहीं. अनुरोध का सेवा स्तर.

store boolean

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

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

टेक्स्ट

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents="Write a story about a magic backpack.",
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: 'Write a story about a magic backpack.',
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.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)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

शेल

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

Java

Client client = new Client();

ResponseStream<GenerateContentResponse> responseStream =
    client.models.generateContentStream(
        "gemini-3.8-flash", "Write a story about a magic backpack.", null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
  System.out.print(res.text());
  response.append(res.text());
}

responseStream.close();

इमेज

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=["Tell me about this instrument", organ],
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

const organ = await ai.files.upload({
  file: path.join(media, 'organ.jpg'),
});

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Tell me about this instrument',
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.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)
}
file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "organ.jpg"),
	&genai.UploadFileConfig{
		MIMEType: "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

शेल

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
    Content.fromParts(
        Part.fromText("Tell me about this instrument."),
        Part.fromBytes(imageData, "image/jpeg"));

ResponseStream<GenerateContentResponse> responseStream =
    client.models.generateContentStream("gemini-3.8-flash", content, null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
  System.out.print(res.text());
  response.append(res.text());
}

responseStream.close();

ऑडियो

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

ऐप पर जाएं

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

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "sample.mp3"),
	&genai.UploadFileConfig{
		MIMEType: "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

शेल

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

वीडियो

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
  print("Processing video...")
  print("File state:", myfile.state)
  time.sleep(5)
  myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-3.8-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Describe this video clip',
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.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)
}

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
	&genai.UploadFileConfig{
		MIMEType: "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

शेल

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-3.8-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
  print(chunk.text)
  print("_" * 80)

ऐप पर जाएं

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

file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "test.pdf"),
	&genai.UploadFileConfig{
		MIMEType: "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

शेल

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

Chat

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.8-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
  print(chunk.text)
  print("_" * 80)
response = chat.send_message_stream(
    message="How many paws are in my house?"
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({apiKey: process.env.GEMINI_API_KEY});
const chat = ai.chats.create({
  model: 'gemini-3.8-flash',
  history: [
    {
      role: 'user',
      parts: [{text: 'Hello'}],
    },
    {
      role: 'model',
      parts: [{text: 'Great to meet you. What would you like to know?'}],
    },
  ],
});

console.log('Streaming response for first message:');
const stream1 = await chat.sendMessageStream({
  message: 'I have 2 dogs in my house.',
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log('_'.repeat(80));
}

console.log('Streaming response for second message:');
const stream2 = await chat.sendMessageStream({
  message: 'How many paws are in my house?',
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log('_'.repeat(80));
}

console.log(chat.getHistory());

ऐप पर जाएं

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

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-3.8-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

शेल

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

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

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

GenerateContentResponse

मॉडल से मिला जवाब, जिसमें एक से ज़्यादा संभावित जवाब शामिल हैं.

सुरक्षा रेटिंग और कॉन्टेंट फ़िल्टर करने की सुविधा को GenerateContentResponse.prompt_feedback में प्रॉम्प्ट के लिए और finishReason और safetyRatings में हर कैंडिडेट के लिए रिपोर्ट किया जाता है. एपीआई: - अनुरोध किए गए सभी कैंडिडेट दिखाता है या उनमें से कोई भी नहीं दिखाता - सिर्फ़ तब कोई कैंडिडेट नहीं दिखाता, जब प्रॉम्प्ट में कोई गड़बड़ी हो (promptFeedback देखें) - finishReason और safetyRatings में हर कैंडिडेट के बारे में सुझाव/राय देता है.

फ़ील्ड
candidates[] object (Candidate)

मॉडल से मिले जवाब.

promptFeedback object (PromptFeedback)

कॉन्टेंट के लिए फ़िल्टर से जुड़े प्रॉम्प्ट के सुझाव, शिकायत या राय दिखाता है.

usageMetadata object (UsageMetadata)

सिर्फ़ आउटपुट के लिए. जनरेट करने के अनुरोधों में इस्तेमाल किए गए टोकन का मेटाडेटा.

modelVersion string

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

responseId string

सिर्फ़ आउटपुट के लिए. responseId का इस्तेमाल, हर जवाब की पहचान करने के लिए किया जाता है.

modelStatus object (ModelStatus)

सिर्फ़ आउटपुट के लिए. इस मॉडल का मौजूदा स्टेटस.

JSON के काेड में दिखाना
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

सुझाव/राय या शिकायत के मेटाडेटा का सेट, जिसके बारे में GenerateContentRequest.content में दिए गए प्रॉम्प्ट में बताया गया है.

फ़ील्ड
blockReason enum (BlockReason)

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

safetyRatings[] object (SafetyRating)

प्रॉम्प्ट की सुरक्षा के लिए रेटिंग. हर कैटगरी के लिए ज़्यादा से ज़्यादा एक रेटिंग होती है.

JSON के काेड में दिखाना
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

इससे पता चलता है कि प्रॉम्प्ट को क्यों ब्लॉक किया गया.

Enums
BLOCK_REASON_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
SAFETY सुरक्षा से जुड़ी वजहों से, प्रॉम्प्ट को ब्लॉक कर दिया गया है. safetyRatings की जांच करके पता लगाएं कि सुरक्षा की किस कैटगरी की वजह से इसे ब्लॉक किया गया है.
OTHER प्रॉम्प्ट को अज्ञात वजहों से ब्लॉक कर दिया गया था.
BLOCKLIST प्रॉम्प्ट को ब्लॉक कर दिया गया है, क्योंकि इसमें ब्लॉकलिस्ट में शामिल शब्दावली का इस्तेमाल किया गया है.
PROHIBITED_CONTENT पाबंदी वाले कॉन्टेंट की वजह से, प्रॉम्प्ट को ब्लॉक कर दिया गया.
IMAGE_SAFETY असुरक्षित इमेज जनरेट करने वाले कॉन्टेंट की वजह से, ब्लॉक किए गए कैंडिडेट.

UsageMetadata

जनरेट करने के अनुरोध में इस्तेमाल किए गए टोकन का मेटाडेटा.

फ़ील्ड
promptTokenCount integer

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

cachedContentTokenCount integer

प्रॉम्प्ट के कैश मेमोरी में सेव किए गए हिस्से (कैश मेमोरी में सेव किया गया कॉन्टेंट) में मौजूद टोकन की संख्या

candidatesTokenCount integer

जनरेट किए गए सभी जवाबों में मौजूद टोकन की कुल संख्या.

toolUsePromptTokenCount integer

सिर्फ़ आउटपुट के लिए. टूल के इस्तेमाल से जुड़े प्रॉम्प्ट में मौजूद टोकन की संख्या.

thoughtsTokenCount integer

सिर्फ़ आउटपुट के लिए. सूझ-बूझ वाले मॉडल के लिए, सोच-विचार वाले टोकन की संख्या.

totalTokenCount integer

जनरेट करने के अनुरोध के लिए टोकन की कुल संख्या (प्रॉम्प्ट + टूल के इस्तेमाल से जुड़ा प्रॉम्प्ट + विचार + जवाब के विकल्प).

promptTokensDetails[] object (ModalityTokenCount)

सिर्फ़ आउटपुट के लिए. अनुरोध के इनपुट में प्रोसेस किए गए मोड की सूची.

cacheTokensDetails[] object (ModalityTokenCount)

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

candidatesTokensDetails[] object (ModalityTokenCount)

सिर्फ़ आउटपुट के लिए. जवाब में दिखाए गए मोड की सूची.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

सिर्फ़ आउटपुट के लिए. टूल के इस्तेमाल से जुड़े अनुरोध के इनपुट के लिए प्रोसेस किए गए मोड की सूची.

serviceTier enum (ServiceTier)

सिर्फ़ आउटपुट के लिए. अनुरोध की सेवा का टियर.

JSON के काेड में दिखाना
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

अंडरलाइंग मॉडल की स्थिति. इसका इस्तेमाल, मॉडल की स्टेज और उसे बंद किए जाने का समय बताने के लिए किया जाता है.

फ़ील्ड
modelStage enum (ModelStage)

मौजूदा मॉडल की स्टेज.

retirementTime 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".

message string

मॉडल की स्थिति के बारे में बताने वाला मैसेज.

JSON के काेड में दिखाना
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

इससे, मौजूदा मॉडल की स्टेज के बारे में पता चलता है.

Enums
MODEL_STAGE_UNSPECIFIED मॉडल की स्टेज की जानकारी नहीं दी गई है.
UNSTABLE_EXPERIMENTAL

इस मॉडल में कई बदलाव किए जा सकते हैं.

EXPERIMENTAL इस स्टेज में मौजूद मॉडल, सिर्फ़ एक्सपेरिमेंट के लिए होते हैं.
PREVIEW इस स्टेज में मौजूद मॉडल, एक्सपेरिमेंट के तौर पर उपलब्ध मॉडल से ज़्यादा बेहतर होते हैं.
STABLE इस स्टेज में मौजूद मॉडल, स्टेबल माने जाते हैं और प्रोडक्शन के लिए तैयार होते हैं.
LEGACY अगर मॉडल इस स्टेज पर है, तो इसका मतलब है कि आने वाले समय में इस मॉडल को बंद कर दिया जाएगा. इस मॉडल का इस्तेमाल सिर्फ़ मौजूदा ग्राहक कर सकते हैं.
DEPRECATED

इस स्टेज में मौजूद मॉडल अब काम नहीं करते. इन मॉडल का इस्तेमाल नहीं किया जा सकता.

RETIRED इस स्टेज में मौजूद मॉडल को हटा दिया जाता है. इन मॉडल का इस्तेमाल नहीं किया जा सकता.

उम्मीदवार

मॉडल से जनरेट किया गया जवाब.

फ़ील्ड
content object (Content)

सिर्फ़ आउटपुट के लिए. मॉडल से जनरेट किया गया कॉन्टेंट.

finishReason enum (FinishReason)

ज़रूरी नहीं. सिर्फ़ आउटपुट के लिए. मॉडल ने टोकन जनरेट करना क्यों बंद किया.

अगर यह खाली है, तो इसका मतलब है कि मॉडल ने टोकन जनरेट करना बंद नहीं किया है.

safetyRatings[] object (SafetyRating)

संभावित जवाब की सुरक्षा के लिए रेटिंग की सूची.

हर कैटगरी के लिए ज़्यादा से ज़्यादा एक रेटिंग होती है.

citationMetadata object (CitationMetadata)

सिर्फ़ आउटपुट के लिए. मॉडल से जनरेट किए गए कैंडिडेट के लिए उद्धरण की जानकारी.

इस फ़ील्ड में, content में शामिल किसी भी टेक्स्ट के लिए, पाठ की जानकारी भरी जा सकती है. ये ऐसे पैसेज होते हैं जो फ़ाउंडेशनल एलएलएम के ट्रेनिंग डेटा में मौजूद, कॉपीराइट वाले कॉन्टेंट से "सुनाए" जाते हैं.

tokenCount integer

सिर्फ़ आउटपुट के लिए. इस उम्मीदवार के लिए टोकन की संख्या.

groundingAttributions[] object (GroundingAttribution)

सिर्फ़ आउटपुट के लिए. तथ्यों पर आधारित जवाब देने में मदद करने वाले सोर्स की एट्रिब्यूशन जानकारी.

यह फ़ील्ड, GenerateAnswer कॉल के लिए भरा गया है.

groundingMetadata object (GroundingMetadata)

सिर्फ़ आउटपुट के लिए. उम्मीदवार के लिए ग्राउंडिंग मेटाडेटा.

यह फ़ील्ड, GenerateContent कॉल के लिए भरा गया है.

avgLogprobs number

सिर्फ़ आउटपुट के लिए. उम्मीदवार का औसत लॉग प्रॉबबिलिटी स्कोर.

logprobsResult object (LogprobsResult)

सिर्फ़ आउटपुट के लिए. जवाब के टोकन और टॉप टोकन के लिए लॉग-लाइक्लीहुड स्कोर

urlContextMetadata object (UrlContextMetadata)

सिर्फ़ आउटपुट के लिए. यूआरएल कॉन्टेक्स्ट को वापस पाने वाले टूल से जुड़ा मेटाडेटा.

continuationToken string (bytes format)

finishReason के CONTINUATION होने पर, ओपेक कॉन्टिन्यूएशन टोकन मिलता है. हालांकि, यह ज़रूरी नहीं है. क्लाइंट, जनरेट करने की प्रोसेस जारी रखने के लिए, इस टोकन को बाद के GenerateContentRequest में पास कर सकते हैं.

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

index integer

सिर्फ़ आउटपुट के लिए. जवाब के लिए चुने गए उम्मीदवारों की सूची में, उम्मीदवार का इंडेक्स.

finishMessage string

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

JSON के काेड में दिखाना
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "continuationToken": string,
  "index": integer,
  "finishMessage": string
}

FinishReason

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

Enums
FINISH_REASON_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
STOP मॉडल का नैचुरल स्टॉप पॉइंट या स्टॉप सीक्वेंस.
MAX_TOKENS अनुरोध में तय किए गए टोकन की संख्या पूरी हो गई है.
SAFETY सुरक्षा से जुड़ी वजहों से, जवाब के तौर पर चुने गए कॉन्टेंट को फ़्लैग किया गया था.
RECITATION जवाब के तौर पर चुने गए कॉन्टेंट को, किसी अन्य कॉन्टेंट से हूबहू मेल खाने की वजह से फ़्लैग किया गया था.
LANGUAGE जवाब के तौर पर चुने गए कॉन्टेंट को, ऐसी भाषा का इस्तेमाल करने के लिए फ़्लैग किया गया था जो Gemini के साथ काम नहीं करती.
OTHER वजह नहीं पता.
BLOCKLIST टोकन जनरेट करने की प्रोसेस रुक गई, क्योंकि कॉन्टेंट में प्रतिबंधित शब्द शामिल हैं.
PROHIBITED_CONTENT टोकन जनरेट करने की प्रोसेस रोक दी गई है, क्योंकि इसमें पाबंदी वाला कॉन्टेंट हो सकता है.
SPII टोकन जनरेट करने की प्रोसेस रोक दी गई है, क्योंकि कॉन्टेंट में व्यक्तिगत पहचान ज़ाहिर करने वाली संवेदनशील जानकारी (एसपीआईआई) हो सकती है.
MALFORMED_FUNCTION_CALL मॉडल से जनरेट किया गया फ़ंक्शन कॉल अमान्य है.
IMAGE_SAFETY टोकन जनरेट करने की प्रोसेस रोक दी गई है, क्योंकि जनरेटिव इमेज में सुरक्षा से जुड़े उल्लंघन शामिल हैं.
IMAGE_PROHIBITED_CONTENT इमेज जनरेट करने की प्रोसेस रोक दी गई है, क्योंकि जनरेट की गई इमेज में पाबंदी वाला अन्य कॉन्टेंट मौजूद है.
IMAGE_OTHER किसी अन्य समस्या की वजह से, इमेज जनरेट करने की प्रोसेस रुक गई.
NO_IMAGE मॉडल को एक इमेज जनरेट करनी थी, लेकिन कोई इमेज जनरेट नहीं हुई.
IMAGE_RECITATION कॉन्टेंट को हूबहू दोहराने की वजह से, इमेज जनरेट करने की प्रोसेस रोक दी गई.
UNEXPECTED_TOOL_CALL मॉडल ने टूल कॉल जनरेट किया, लेकिन अनुरोध में कोई टूल चालू नहीं किया गया था.
TOO_MANY_TOOL_CALLS मॉडल ने एक के बाद एक कई टूल को कॉल किया. इस वजह से, सिस्टम ने प्रोसेस को बंद कर दिया.
MISSING_THOUGHT_SIGNATURE अनुरोध में कम से कम एक थॉट सिग्नेचर मौजूद नहीं है.
MALFORMED_RESPONSE गलत फ़ॉर्मैट वाले जवाब की वजह से यह कार्रवाई पूरी हो गई.
ESCALATION अनुरोध को एस्केलेशन नियम के हिसाब से फ़िल्टर किया गया था.
PUP_LIMITED_DISABLED इससे पता चलता है कि टोकन जनरेट करने की प्रोसेस बंद हो गई है. ऐसा इसलिए हुआ है, क्योंकि इस्तेमाल से जुड़ी पाबंदी की नीति (पीयूपी) के उल्लंघन की वजह से, उपयोगकर्ता खाते पर पाबंदी लगा दी गई है या उसे बंद कर दिया गया है.
CONTINUATION टोकन जनरेट करने की प्रोसेस रोक दी गई, क्योंकि जवाब में हर अनुरोध के लिए तय की गई टोकन की सीमा पूरी हो गई थी. हालांकि, टोकन जनरेट करने की प्रोसेस अभी पूरी नहीं हुई है. मॉडल के जवाब को, वापस किए गए continuationToken का इस्तेमाल करके, बाद के अनुरोध के ज़रिए जारी रखा जा सकता है. ध्यान दें कि maxOutputTokens, कंटिन्यूएशन हॉप के लिए कुल वैल्यू है. इसे लगातार बढ़ाया जाना चाहिए या इसे शामिल नहीं किया जाना चाहिए.

GroundingAttribution

जवाब देने में मदद करने वाले सोर्स का एट्रिब्यूशन.

फ़ील्ड
sourceId object (AttributionSourceId)

सिर्फ़ आउटपुट के लिए. इस एट्रिब्यूशन में योगदान देने वाले सोर्स का आइडेंटिफ़ायर.

content object (Content)

ग्राउंडिंग सोर्स का कॉन्टेंट, जिससे यह एट्रिब्यूशन बनता है.

JSON के काेड में दिखाना
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

इस एट्रिब्यूशन में योगदान देने वाले सोर्स का आइडेंटिफ़ायर.

फ़ील्ड
source Union type
यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
groundingPassage object (GroundingPassageId)

इनलाइन पैसेज के लिए आइडेंटिफ़ायर.

semanticRetrieverChunk object (SemanticRetrieverChunk)

सिमैंटिक रिट्रीवर की मदद से फ़ेच किए गए Chunk के लिए आइडेंटिफ़ायर.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{

  // source
  "groundingPassage": {
    object (GroundingPassageId)
  },
  "semanticRetrieverChunk": {
    object (SemanticRetrieverChunk)
  }
  // Union type
}

GroundingPassageId

GroundingPassage में मौजूद किसी हिस्से के लिए आइडेंटिफ़ायर.

फ़ील्ड
passageId string

सिर्फ़ आउटपुट के लिए. GenerateAnswerRequest के GroundingPassage.id से मैच करने वाले पैसेज का आईडी.

partIndex integer

सिर्फ़ आउटपुट के लिए. GenerateAnswerRequest के GroundingPassage.content में मौजूद हिस्से का इंडेक्स.

JSON के काेड में दिखाना
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

SemanticRetrieverConfig का इस्तेमाल करके, GenerateAnswerRequest में बताए गए सेमैंटिक रिट्रीवर से हासिल किए गए Chunk का आइडेंटिफ़ायर.

फ़ील्ड
source string

सिर्फ़ आउटपुट के लिए. अनुरोध के SemanticRetrieverConfig.source से मेल खाने वाले सोर्स का नाम. उदाहरण: corpora/123 या corpora/123/documents/abc

chunk string

सिर्फ़ आउटपुट के लिए. एट्रिब्यूट किए गए टेक्स्ट वाले Chunk का नाम. उदाहरण: corpora/123/documents/abc/chunks/xyz

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

GroundingMetadata

ग्राउंडिंग की सुविधा चालू होने पर, क्लाइंट को लौटाया गया मेटाडेटा.

फ़ील्ड
groundingChunks[] object (GroundingChunk)

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

groundingSupports[] object (GroundingSupport)

ग्राउंडिंग की सुविधा देने वाले मॉडल की सूची.

webSearchQueries[] string

फ़ॉलो-अप वेब खोज के लिए वेब सर्च क्वेरी.

imageSearchQueries[] string

इमेज सर्च क्वेरी, जिनका इस्तेमाल ग्राउंडिंग के लिए किया गया है.

searchEntryPoint object (SearchEntryPoint)

ज़रूरी नहीं. फ़ॉलो-अप वेब खोजों के लिए Google Search एंट्री.

retrievalMetadata object (RetrievalMetadata)

ग्राउंडिंग फ़्लो में डेटा वापस पाने से जुड़ा मेटाडेटा.

googleMapsWidgetContextToken string

ज़रूरी नहीं. Google Maps विजेट के कॉन्टेक्स्ट टोकन का संसाधन नाम. इसका इस्तेमाल PlacesContextElement विजेट के साथ किया जा सकता है, ताकि कॉन्टेक्स्ट के हिसाब से डेटा रेंडर किया जा सके. यह सिर्फ़ तब पॉप्युलेट होता है, जब Google Maps से जानकारी लेने की सुविधा चालू हो.

JSON के काेड में दिखाना
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Google Search का एंट्री पॉइंट.

फ़ील्ड
renderedContent string

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

sdkBlob string (bytes format)

ज़रूरी नहीं. Base64 कोड में बदला गया JSON, जो <खोज के लिए शब्द, search url> ट्यूपल के कलेक्शन को दिखाता है.

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

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

GroundingChunk

GroundingChunk, सबूत के तौर पर दी गई जानकारी के उस सेगमेंट को दिखाता है जिस पर मॉडल का जवाब आधारित होता है. यह वेब से लिया गया कोई हिस्सा, किसी फ़ाइल से वापस लाया गया कॉन्टेक्स्ट या Google Maps से मिली जानकारी हो सकती है.

फ़ील्ड
chunk_type Union type
चंक टाइप. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
web object (Web)

वेब से लिया गया ग्राउंडिंग चंक.

image object (Image)

ज़रूरी नहीं. इमेज सर्च से ग्राउंडिंग चंक.

retrievedContext object (RetrievedContext)

ज़रूरी नहीं. फ़ाइल सर्च टूल से मिले कॉन्टेक्स्ट से ग्राउंडिंग चंक.

maps object (Maps)

ज़रूरी नहीं. Google Maps से लिया गया ग्राउंडिंग चंक.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{

  // chunk_type
  "web": {
    object (Web)
  },
  "image": {
    object (Image)
  },
  "retrievedContext": {
    object (RetrievedContext)
  },
  "maps": {
    object (Maps)
  }
  // Union type
}

वेब

वेब से मिला कॉन्टेंट.

फ़ील्ड
uri string

सिर्फ़ आउटपुट के लिए. चंक का यूआरआई रेफ़रंस.

title string

सिर्फ़ आउटपुट के लिए. चंक का टाइटल.

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

इमेज

इमेज सर्च से मिला चंक.

फ़ील्ड
sourceUri string

एट्रिब्यूशन के लिए वेब पेज का यूआरआई.

imageUri string

इमेज ऐसेट का यूआरएल.

title string

उस वेब पेज का टाइटल जिस पर इमेज मौजूद है.

domain string

उस वेब पेज का रूट डोमेन जहां से इमेज ली गई है. जैसे, "example.com".

JSON के काेड में दिखाना
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

फ़ाइल खोजने वाले टूल से मिले कॉन्टेक्स्ट का हिस्सा.

फ़ील्ड
customMetadata[] object (CustomMetadata)

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

uri string

ज़रूरी नहीं. सिमैंटिक रिट्रीवल दस्तावेज़ का यूआरआई रेफ़रंस.

title string

ज़रूरी नहीं. दस्तावेज़ का टाइटल.

text string

ज़रूरी नहीं. चंक का टेक्स्ट.

fileSearchStore string

ज़रूरी नहीं. दस्तावेज़ वाले FileSearchStore का नाम. उदाहरण: fileSearchStores/123

pageNumber integer

ज़रूरी नहीं. अगर लागू हो, तो वापस लाए गए कॉन्टेक्स्ट का पेज नंबर.

mediaId string

ज़रूरी नहीं. मल्टीमॉडल फ़ाइल के खोज के नतीजों के लिए, मीडिया ब्लॉब संसाधन का नाम. फ़ॉर्मैट: fileSearchStores/{file_search_store_id}/media/{blobId}

JSON के काेड में दिखाना
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

उपयोगकर्ता ने GroundingFact के बारे में मेटाडेटा दिया है.

फ़ील्ड
key string

मेटाडेटा की कुंजी.

value Union type
मेटाडेटा की वैल्यू. यह कोई स्ट्रिंग, स्ट्रिंग की सूची या कोई संख्या हो सकती है. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
stringValue string

ज़रूरी नहीं. मेटाडेटा की स्ट्रिंग वैल्यू.

stringListValue object (StringList)

ज़रूरी नहीं. मेटाडेटा के लिए स्ट्रिंग वैल्यू की सूची.

numericValue number

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

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{
  "key": string,

  // value
  "stringValue": string,
  "stringListValue": {
    object (StringList)
  },
  "numericValue": number
  // Union type
}

StringList

स्ट्रिंग वैल्यू की सूची.

फ़ील्ड
values[] string

सूची की स्ट्रिंग वैल्यू.

JSON के काेड में दिखाना
{
  "values": [
    string
  ]
}

Maps

Google Maps से लिया गया ग्राउंडिंग चंक. Maps का एक चंक, किसी एक जगह को दिखाता है.

फ़ील्ड
uri string

जगह का यूआरआई रेफ़रंस.

title string

जगह का नाम.

text string

जगह के बारे में जवाब देने वाला टेक्स्ट.

placeId string

जगह का आईडी, places/{placeId} फ़ॉर्मैट में. कोई उपयोगकर्ता इस आईडी का इस्तेमाल करके, उस जगह को खोज सकता है.

placeAnswerSources object (PlaceAnswerSources)

Google Maps पर किसी जगह की सुविधाओं के बारे में जवाब देने वाले सोर्स.

JSON के काेड में दिखाना
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Google Maps पर किसी जगह की सुविधाओं के बारे में जवाब देने वाले सोर्स का कलेक्शन. हर PlaceAnswerSources मैसेज, Google Maps में किसी खास जगह से जुड़ा होता है. Google Maps टूल ने इन सोर्स का इस्तेमाल, किसी जगह की सुविधाओं के बारे में पूछे गए सवालों के जवाब देने के लिए किया.जैसे, "क्या बार फ़ू में वाई-फ़ाई की सुविधा है" या "क्या फ़ू बार में व्हीलचेयर ले जाने की सुविधा है?". फ़िलहाल, हम सोर्स के तौर पर सिर्फ़ समीक्षा की झलक दिखाने की सुविधा देते हैं.

फ़ील्ड
reviewSnippets[] object (ReviewSnippet)

समीक्षाओं के स्निपेट, जिनका इस्तेमाल Google Maps में किसी जगह की सुविधाओं के बारे में जवाब जनरेट करने के लिए किया जाता है.

JSON के काेड में दिखाना
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

इसमें उपयोगकर्ता की समीक्षा का एक स्निपेट शामिल होता है. इसमें Google Maps पर किसी जगह की सुविधाओं के बारे में पूछे गए सवाल का जवाब होता है.

फ़ील्ड
reviewId string

समीक्षा की झलक का आईडी.

googleMapsUri string

Google Maps पर उपयोगकर्ता की समीक्षा का लिंक.

title string

समीक्षा का टाइटल.

JSON के काेड में दिखाना
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

ग्राउंडिंग की सुविधा.

फ़ील्ड
groundingChunkIndices[] integer

ज़रूरी नहीं. response.candidate.grounding_metadata में 'grounding_chunk' के इंडेक्स की सूची, जिसमें दावे से जुड़े उद्धरणों की जानकारी दी गई है. उदाहरण के लिए, [1,3,4] का मतलब है कि grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] वह कॉन्टेंट है जो दावे के लिए एट्रिब्यूट किया गया है. अगर जवाब स्ट्रीम हो रहा है, तो groundingChunkIndices सभी जवाबों के इंडेक्स को रेफ़र करता है. यह क्लाइंट की ज़िम्मेदारी है कि वह सभी जवाबों से ग्राउंडिंग चंक इकट्ठा करे. साथ ही, उन्हें उसी क्रम में बनाए रखे.

confidenceScores[] number

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

renderedParts[] integer

सिर्फ़ आउटपुट के लिए. उम्मीदवार के कॉन्टेंट के parts फ़ील्ड में इंडेक्स. इन इंडेक्स से पता चलता है कि रेंडर किए गए कौनसे हिस्से, इस सोर्स से जुड़े हैं.

segment object (Segment)

कॉन्टेंट का वह सेगमेंट जिसके लिए यह सहायता उपलब्ध है.

JSON के काेड में दिखाना
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

सेगमेंट

कॉन्टेंट का सेगमेंट.

फ़ील्ड
partIndex integer

अपने पैरंट कॉन्टेंट ऑब्जेक्ट में, पार्ट ऑब्जेक्ट का इंडेक्स.

startIndex integer

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

endIndex integer

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

text string

जवाब के सेगमेंट से जुड़ा टेक्स्ट.

JSON के काेड में दिखाना
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

ग्राउंडिंग फ़्लो में डेटा वापस पाने से जुड़ा मेटाडेटा.

फ़ील्ड
googleSearchDynamicRetrievalScore number

ज़रूरी नहीं. यह स्कोर बताता है कि Google Search से मिली जानकारी, प्रॉम्प्ट का जवाब देने में कितनी मददगार हो सकती है. स्कोर [0, 1] की रेंज में होता है. इसमें 0 का मतलब है कि संभावना सबसे कम है और 1 का मतलब है कि संभावना सबसे ज़्यादा है. यह स्कोर सिर्फ़ तब जनरेट होता है, जब Google Search से ग्राउंडिंग और डाइनैमिक तरीके से जानकारी हासिल करने की सुविधा चालू हो. इसकी तुलना थ्रेशोल्ड से की जाएगी, ताकि यह तय किया जा सके कि Google Search को ट्रिगर करना है या नहीं.

JSON के काेड में दिखाना
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Logprobs का नतीजा

फ़ील्ड
topCandidates[] object (TopCandidates)

लंबाई = डिकोडिंग के चरणों की कुल संख्या.

chosenCandidates[] object (Candidate)

लंबाई = डिकोडिंग के चरणों की कुल संख्या. चुने गए उम्मीदवार, topCandidates में हो भी सकते हैं और नहीं भी.

logProbabilitySum number

सभी टोकन के लिए लॉग प्रॉबबिलिटी का योग.

JSON के काेड में दिखाना
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

हर डिकोडिंग चरण में, सबसे ज़्यादा लॉग प्रॉबेबिलिटी वाले कैंडिडेट.

फ़ील्ड
candidates[] object (Candidate)

लॉग प्रॉबबिलिटी के हिसाब से घटते क्रम में लगाया गया.

JSON के काेड में दिखाना
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

उम्मीदवार

Logprobs टोकन और स्कोर के लिए कैंडिडेट.

फ़ील्ड
token string

उम्मीदवार के टोकन की स्ट्रिंग वैल्यू.

tokenId integer

उम्मीदवार के टोकन आईडी की वैल्यू.

logProbability number

उम्मीदवार की लॉग प्रॉबबिलिटी.

JSON के काेड में दिखाना
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

यूआरएल कॉन्टेक्स्ट को वापस पाने वाले टूल से जुड़ा मेटाडेटा.

फ़ील्ड
urlMetadata[] object (UrlMetadata)

यूआरएल कॉन्टेक्स्ट की सूची.

JSON के काेड में दिखाना
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

किसी एक यूआरएल को वापस पाने का कॉन्टेक्स्ट.

फ़ील्ड
retrievedUrl string

टूल से यूआरएल वापस लाया गया.

urlRetrievalStatus enum (UrlRetrievalStatus)

यूआरएल वापस पाने की स्थिति.

JSON के काेड में दिखाना
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

यूआरएल वापस पाने की स्थिति.

Enums
URL_RETRIEVAL_STATUS_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
URL_RETRIEVAL_STATUS_SUCCESS यूआरएल वापस लाया गया.
URL_RETRIEVAL_STATUS_ERROR गड़बड़ी की वजह से, यूआरएल वापस नहीं पाया जा सका.
URL_RETRIEVAL_STATUS_PAYWALL यूआरएल से कॉन्टेंट नहीं लाया जा सका, क्योंकि यह पेवॉल के पीछे है.
URL_RETRIEVAL_STATUS_UNSAFE कॉन्टेंट सुरक्षित न होने की वजह से, यूआरएल को वापस नहीं लाया जा सका.

CitationMetadata

कॉन्टेंट के किसी हिस्से के लिए सोर्स एट्रिब्यूशन का कलेक्शन.

फ़ील्ड
citationSources[] object (CitationSource)

किसी जवाब के लिए सोर्स के उद्धरण.

JSON के काेड में दिखाना
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

किसी जवाब के एक हिस्से के लिए, सोर्स का उद्धरण.

फ़ील्ड
startIndex integer

ज़रूरी नहीं. जवाब के उस सेगमेंट की शुरुआत जो इस सोर्स से लिया गया है.

इंडेक्स से सेगमेंट की शुरुआत का पता चलता है. इसे बाइट में मेज़र किया जाता है.

endIndex integer

ज़रूरी नहीं. एट्रिब्यूट किए गए सेगमेंट के खत्म होने का समय (अलग से उपलब्ध).

uri string

ज़रूरी नहीं. यूआरआई, जिसे टेक्स्ट के किसी हिस्से के सोर्स के तौर पर एट्रिब्यूट किया गया है.

license string

ज़रूरी नहीं. GitHub प्रोजेक्ट का लाइसेंस, जिसे सेगमेंट के सोर्स के तौर पर एट्रिब्यूट किया गया है.

कोड के उद्धरणों के लिए, लाइसेंस की जानकारी देना ज़रूरी है.

JSON के काेड में दिखाना
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

रेटिंग की कैटगरी.

इन कैटगरी में, अलग-अलग तरह के नुकसान शामिल हैं. डेवलपर, नुकसान के हिसाब से कॉन्टेंट को अडजस्ट कर सकते हैं.

Enums
HARM_CATEGORY_UNSPECIFIED कैटगरी नहीं बताई गई है.
HARM_CATEGORY_DEROGATORY

PaLM - किसी व्यक्ति की पहचान और/या सुरक्षित एट्रिब्यूट को टारगेट करके की गई नकारात्मक या नुकसान पहुंचाने वाली टिप्पणियां. अब इस्तेमाल नहीं किया जाता: सिर्फ़ PaLM के लिए उपलब्ध कैटगरी, Gemini मॉडल के साथ काम नहीं करती.

HARM_CATEGORY_TOXICITY

PaLM - ऐसा कॉन्टेंट जो खराब, अपमानजनक या अपशब्दों वाला हो. अब इस्तेमाल नहीं किया जाता: सिर्फ़ PaLM के लिए उपलब्ध कैटगरी, Gemini मॉडल के साथ काम नहीं करती.

HARM_CATEGORY_VIOLENCE

PaLM - इसमें किसी व्यक्ति या ग्रुप के ख़िलाफ़ हिंसा दिखाने वाली स्थितियों या खून-खराबे की सामान्य जानकारी शामिल है. अब इस्तेमाल नहीं किया जाता: सिर्फ़ PaLM के लिए उपलब्ध कैटगरी, Gemini मॉडल के साथ काम नहीं करती.

HARM_CATEGORY_SEXUAL

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

HARM_CATEGORY_MEDICAL

PaLM - बिना जांचे-परखे चिकित्सा सलाह को बढ़ावा देता है. अब इस्तेमाल नहीं किया जाता: सिर्फ़ PaLM के लिए उपलब्ध कैटगरी, Gemini मॉडल के साथ काम नहीं करती.

HARM_CATEGORY_DANGEROUS

PaLM - नुकसान पहुंचाने वाला कॉन्टेंट, गैर-कानूनी गतिविधियों को बढ़ावा देता है या उनका प्रचार करता है. अब इस्तेमाल नहीं किया जाता: सिर्फ़ PaLM के लिए उपलब्ध कैटगरी, Gemini मॉडल के साथ काम नहीं करती.

HARM_CATEGORY_HARASSMENT Gemini - परेशान करने के मकसद से बनाया गया कॉन्टेंट.
HARM_CATEGORY_HATE_SPEECH Gemini - नफ़रत फैलाने वाली भाषा और कॉन्टेंट.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - साफ़ तौर पर सेक्शुअल ऐक्ट दिखाने वाला कॉन्टेंट.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - खतरनाक कॉन्टेंट.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini - ऐसा कॉन्टेंट जिसका इस्तेमाल नागरिक अखंडता को नुकसान पहुंचाने के लिए किया जा सकता है. अब इसका इस्तेमाल नहीं किया जाता: इसके बजाय, enableEnhancedCivicAnswers का इस्तेमाल करें.

HARM_CATEGORY_JAILBREAK Gemini - ऐसे प्रॉम्प्ट जो मॉडल की सुरक्षा से जुड़े दिशा-निर्देशों को बायपास करने या उन्हें गच्चा देने की कोशिश करते हैं (जेलब्रेक करने की कोशिशें).

ModalityTokenCount

यह किसी एक मोडैलिटी के लिए, टोकन की संख्या की जानकारी दिखाता है.

फ़ील्ड
modality enum (Modality)

इस टोकन की संख्या से जुड़ी मोडैलिटी.

tokenCount integer

टोकन की संख्या.

JSON के काेड में दिखाना
{
  "modality": enum (Modality),
  "tokenCount": integer
}

डेटा का टाइप

कॉन्टेंट के हिस्से का मोड

Enums
MODALITY_UNSPECIFIED मोडैलिटी की जानकारी नहीं दी गई है.
TEXT सादा टेक्स्ट.
IMAGE इमेज.
VIDEO वीडियो.
AUDIO ऑडियो.
DOCUMENT दस्तावेज़, जैसे कि PDF.

SafetyRating

कॉन्टेंट के किसी हिस्से के लिए सुरक्षा रेटिंग.

सुरक्षा रेटिंग में, नुकसान की कैटगरी और उस कैटगरी में नुकसान की संभावना का लेवल शामिल होता है. सुरक्षा के लिहाज़ से, कॉन्टेंट को नुकसान पहुंचाने वाली कई कैटगरी में बांटा जाता है. साथ ही, नुकसान पहुंचाने वाली कैटगरी की संभावना को यहां शामिल किया जाता है.

फ़ील्ड
category enum (HarmCategory)

ज़रूरी है. इस रेटिंग की कैटगरी.

probability enum (HarmProbability)

ज़रूरी है. इस कॉन्टेंट से नुकसान पहुंचने की संभावना.

blocked boolean

क्या इस रेटिंग की वजह से इस कॉन्टेंट को ब्लॉक किया गया था?

JSON के काेड में दिखाना
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

कॉन्टेंट के नुकसान पहुंचाने की संभावना.

कॉन्टेंट को अलग-अलग कैटगरी में बांटने वाला सिस्टम, कॉन्टेंट के असुरक्षित होने की संभावना बताता है. इससे यह पता नहीं चलता कि किसी कॉन्टेंट से कितना नुकसान हो सकता है.

Enums
HARM_PROBABILITY_UNSPECIFIED संभावना के बारे में नहीं बताया गया है.
NEGLIGIBLE कॉन्टेंट के असुरक्षित होने की संभावना न के बराबर है.
LOW कॉन्टेंट के असुरक्षित होने की संभावना कम है.
MEDIUM कॉन्टेंट के असुरक्षित होने की संभावना सामान्य है.
HIGH कॉन्टेंट के असुरक्षित होने की संभावना ज़्यादा है.

SafetySetting

सुरक्षा सेटिंग, जो सुरक्षा से जुड़ी पाबंदी लगाने के तरीके पर असर डालती है.

किसी कैटगरी के लिए सुरक्षा सेटिंग पास करने से, कॉन्टेंट को ब्लॉक किए जाने की संभावना बदल जाती है.

फ़ील्ड
category enum (HarmCategory)

ज़रूरी है. इस सेटिंग की कैटगरी.

threshold enum (HarmBlockThreshold)

ज़रूरी है. इससे, नुकसान पहुंचाने वाले कॉन्टेंट को ब्लॉक करने के लिए, संभावना की थ्रेशोल्ड को कंट्रोल किया जाता है.

JSON के काेड में दिखाना
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

नुकसान पहुंचाने की तय की गई संभावना के आधार पर, कॉन्टेंट को ब्लॉक करें.

Enums
HARM_BLOCK_THRESHOLD_UNSPECIFIED थ्रेशोल्ड की जानकारी नहीं दी गई है.
BLOCK_LOW_AND_ABOVE NEGLIGIBLE के तौर पर लेबल किया गया कॉन्टेंट दिखाया जा सकेगा.
BLOCK_MEDIUM_AND_ABOVE 'बहुत कम' और 'कम' रेटिंग वाले कॉन्टेंट को अनुमति दी जाएगी.
BLOCK_ONLY_HIGH न के बराबर, कम, और मध्यम जोखिम वाले कॉन्टेंट को अनुमति दी जाएगी.
BLOCK_NONE हर रेटिंग वाला कॉन्टेंट दिखाने की अनुमति दी जाएगी.
OFF सुरक्षा फ़िल्टर बंद करें.

ServiceTier

अनुरोध की सेवा का टियर.

Enums
unspecified डिफ़ॉल्ट सेवा टियर, जो स्टैंडर्ड है.
standard स्टैंडर्ड सर्विस टियर.
flex Flex सेवा का टियर.
priority सेवा का प्राथमिकता वाला टियर.

सामग्री

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

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

फ़ील्ड
parts[] object (Part)

क्रम से लगाए गए Parts, जो एक मैसेज बनाते हैं. अलग-अलग हिस्सों के एमआईएमई टाइप अलग-अलग हो सकते हैं.

role string

ज़रूरी नहीं. कॉन्टेंट का प्रोड्यूसर. यह 'user' या 'model' होना चाहिए.

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

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

भाग

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

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

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

फ़ील्ड
thought boolean

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

thoughtSignature string (bytes format)

ज़रूरी नहीं. विचार के लिए एक अपारदर्शी हस्ताक्षर, ताकि इसे बाद के अनुरोधों में फिर से इस्तेमाल किया जा सके.

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

partMetadata object (Struct format)

पार्ट से जुड़ा कस्टम मेटाडेटा. कॉन्टेंट को दिखाने के लिए genai.Part का इस्तेमाल करने वाले एजेंट को, अतिरिक्त जानकारी का ट्रैक रखना पड़ सकता है. उदाहरण के लिए, यह उस फ़ाइल/सोर्स का नाम हो सकता है जिससे पार्ट की शुरुआत होती है या कई पार्ट स्ट्रीम को मल्टीप्लेक्स करने का तरीका हो सकता है.

mediaResolution object (MediaResolution)

ज़रूरी नहीं. इनपुट मीडिया के लिए मीडिया रिज़ॉल्यूशन.

mediaProcessing enum (MediaProcessing)

ज़रूरी नहीं. मॉडल, इस हिस्से के मीडिया को समझने के लिए कैसे प्रोसेस करता है. यह सिर्फ़ वीडियो के हिस्सों (inlineData या वीडियो माइम वाले fileData) के लिए काम का है. वीडियो के अलावा अन्य हिस्सों में इस फ़ील्ड को अनदेखा कर दिया जाता है.

audioTranscription object (AudioTranscription)

ज़रूरी नहीं. ऑडियो (इनपुट या आउटपुट) ट्रांसक्रिप्शन. यह सिर्फ़ तब सेट होता है, जब इस पार्ट में ऑडियो डेटा शामिल हो.

speechMetadata object (SpeechMetadata)

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

data Union type
यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
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 को एक्ज़ीक्यूट करने का नतीजा.

toolCall object (ToolCall)

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

toolResponse object (ToolResponse)

सर्वर साइड ToolCall एक्ज़ीक्यूशन से मिला आउटपुट. इस फ़ील्ड को क्लाइंट, उससे जुड़े ToolCall को लागू करने के नतीजों से भरता है.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
metadata Union type
डेटा की अतिरिक्त प्रीप्रोसेसिंग को कंट्रोल करता है. हर हिस्से के स्टैटिक मीडिया की प्रीप्रोसेसिंग को कॉन्फ़िगर करने के लिए, inline_data या file_data मौजूद होने पर इसे सेट करें. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
videoMetadata object (VideoMetadata)

ज़रूरी नहीं. वीडियो का मेटाडेटा. मेटाडेटा सिर्फ़ तब दिया जाना चाहिए, जब वीडियो डेटा को inlineData या fileData में दिखाया गया हो.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),
  "audioTranscription": {
    object (AudioTranscription)
  },
  "speechMetadata": {
    object (SpeechMetadata)
  },

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

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

ब्लॉब

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

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

फ़ील्ड
mimeType string

सोर्स डेटा का आईएएनए स्टैंडर्ड एमआईएमई टाइप. इस्तेमाल किए जा सकने वाले फ़ाइल टाइप के उदाहरण: - इमेज: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - ऑडियो: audio/*, video/audio/s16le, video/audio/wav - वीडियो: video/* - टेक्स्ट: text/plain, text/html, text/css, text/javascript, text/x-typescript, text/csv, text/markdown, text/x-python, text/xml, text/rtf, video/text/timestamp - ऐप्लिकेशन: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf ज़्यादा जानकारी के लिए, इस्तेमाल किए जा सकने वाले फ़ाइल फ़ॉर्मैट देखें. //

data string (bytes format)

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

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

displayName string

ज़रूरी नहीं. इससे उस नाम के बारे में पता चलता है जिसका इस्तेमाल, मॉडल को इस ब्लॉब के बारे में बताने के लिए किया जाता है. जैसे, "my_blob.png". verbalizationMode को REFERENCE_ONLY पर सेट करने पर, इसका इस्तेमाल ब्लॉब रेफ़रंस आइडेंटिफ़ायर के तौर पर किया जाता है.

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

FunctionCall

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

फ़ील्ड
id string

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

name string

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

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 या अंडरस्कोर और डैश शामिल होने चाहिए. साथ ही, इसमें ज़्यादा से ज़्यादा 128 वर्ण होने चाहिए.

response object (Struct format)

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

मल्टीमीडिया को शामिल करने के लिए, एक सबऑब्जेक्ट का इस्तेमाल किया जा सकता है. इसमें एक "$ref" कुंजी होती है, जिसकी वैल्यू मल्टीमीडिया वाले FunctionResponsePart का inlineData.display_name होती है. https://ai.google.dev/gemini-api/docs/function-calling#multimodal देखें.

parts[] object (FunctionResponsePart)

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

willContinue boolean

ज़रूरी नहीं. यह सिग्नल देता है कि फ़ंक्शन कॉल जारी है और ज़्यादा जवाब मिलेंगे. इससे फ़ंक्शन कॉल, जनरेटर में बदल जाता है. यह सिर्फ़ NON_BLOCKING फ़ंक्शन कॉल पर लागू होता है. ऐसा न होने पर, इसे अनदेखा कर दिया जाता है. अगर इसे 'गलत है' पर सेट किया जाता है, तो आने वाले समय में मिलने वाले जवाबों पर विचार नहीं किया जाएगा. willContinue=False के साथ खाली response दिखाया जा सकता है. इससे यह सिग्नल मिलता है कि फ़ंक्शन कॉल पूरा हो गया है. इससे भी मॉडल जनरेट हो सकता है. फ़ंक्शन कॉल को पूरा करने और जनरेशन को ट्रिगर होने से रोकने के लिए, scheduling को SILENT पर सेट करें.

scheduling enum (Scheduling)

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

JSON के काेड में दिखाना
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

एक डेटा टाइप, जिसमें FunctionResponse मैसेज का हिस्सा बनने वाला मीडिया शामिल होता है.

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

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

फ़ील्ड
data Union type
फ़ंक्शन के रिस्पॉन्स वाले हिस्से का डेटा. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
inlineData object (FunctionResponseBlob)

इनलाइन मीडिया बाइट.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

फ़ंक्शन के रिस्पॉन्स के लिए रॉ मीडिया बाइट.

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

फ़ील्ड
mimeType string

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

data string (bytes format)

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

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

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

शेड्यूलिंग

इससे यह तय होता है कि बातचीत में जवाब को कैसे शेड्यूल किया जाना चाहिए.

Enums
SCHEDULING_UNSPECIFIED इस वैल्यू का इस्तेमाल नहीं किया गया है.
SILENT नतीजे को सिर्फ़ बातचीत के कॉन्टेक्स्ट में जोड़ें. जनरेशन को न तो रोकें और न ही ट्रिगर करें.
WHEN_IDLE नतीजे को बातचीत के कॉन्टेक्स्ट में जोड़ें और मौजूदा जनरेशन में रुकावट डाले बिना आउटपुट जनरेट करने के लिए प्रॉम्प्ट दें.
INTERRUPT नतीजे को बातचीत के कॉन्टेक्स्ट में जोड़ना, मौजूदा जनरेशन को रोकना, और आउटपुट जनरेट करने के लिए प्रॉम्प्ट देना.

FileData

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

फ़ील्ड
mimeType string

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

fileUri string

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

displayName string

ज़रूरी नहीं. इससे उस नाम का पता चलता है जिसका इस्तेमाल करके, मॉडल को इस फ़ाइल के बारे में बताया जाता है. जैसे, "my_file.pdf". verbalizationMode को REFERENCE_ONLY पर सेट करने पर, फ़ाइल रेफ़रंस आइडेंटिफ़ायर के तौर पर इस्तेमाल किया जाता है.

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

ExecutableCode

मॉडल से जनरेट किया गया कोड, जिसे एक्ज़ीक्यूट किया जाना है. साथ ही, मॉडल को मिला नतीजा.

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

फ़ील्ड
id string

ज़रूरी नहीं. ExecutableCode पार्ट का यूनीक आइडेंटिफ़ायर. सर्वर, मैच होने वाले id के साथ CodeExecutionResult दिखाता है.

language enum (Language)

ज़रूरी है. code की प्रोग्रामिंग लैंग्वेज.

code string

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

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

भाषा

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

Enums
LANGUAGE_UNSPECIFIED इस भाषा के बारे में जानकारी उपलब्ध नहीं है. इस वैल्यू का इस्तेमाल नहीं किया जाना चाहिए.
PYTHON Python >= 3.10, जिसमें numpy और simpy उपलब्ध हों. Python, डिफ़ॉल्ट भाषा है.

CodeExecutionResult

ExecutableCode को एक्ज़ीक्यूट करने का नतीजा.

यह सिर्फ़ तब जनरेट होता है, जब CodeExecution टूल का इस्तेमाल किया जाता है.

फ़ील्ड
id string

ज़रूरी नहीं. ExecutableCode के उस हिस्से का आइडेंटिफ़ायर जिसके लिए यह नतीजा है. यह जानकारी सिर्फ़ तब भरी जाती है, जब उससे जुड़े ExecutableCode का कोई आईडी हो.

outcome enum (Outcome)

ज़रूरी है. कोड एक्ज़ीक्यूशन का नतीजा.

output string

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

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

नतीजा

कोड एक्ज़ीक्यूशन के संभावित नतीजों की सूची.

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

ToolCall

मॉडल से मिला, सर्वर-साइड ToolCall का अनुमान. इस मैसेज में उस टूल के बारे में जानकारी होती है जिसे मॉडल इस्तेमाल करना चाहता है. क्लाइंट को इस ToolCall को लागू नहीं करना चाहिए. इसके बजाय, क्लाइंट को इस ToolCall को Content मैसेज में, उससे जुड़े ToolResponse के साथ, अगले टर्न में एपीआई को वापस भेजना चाहिए.

फ़ील्ड
id string

ज़रूरी नहीं. टूल कॉल का यूनीक आइडेंटिफ़ायर. सर्वर, मैच होने वाले id के साथ टूल का रिस्पॉन्स दिखाता है.

toolName string

ज़रूरी नहीं. कॉल किए गए टूल का नाम.

toolType enum (ToolType)

ज़रूरी है. कॉल किए गए टूल का टाइप.

args object (Struct format)

ज़रूरी नहीं. टूल कॉल के आर्ग्युमेंट. उदाहरण: {"arg1" : "value1", "arg2" : "value2" , ...}

JSON के काेड में दिखाना
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

फ़ंक्शन कॉल में टूल का टाइप.

Enums
TOOL_TYPE_UNSPECIFIED टूल के टाइप की जानकारी नहीं है.
GOOGLE_SEARCH_WEB Google Search टूल, Tool.google_search.search_types.web_search पर मैप करता है.
GOOGLE_SEARCH_IMAGE इमेज खोजने वाला टूल, Tool.google_search.search_types.image_search पर मैप करता है.
URL_CONTEXT यूआरएल कॉन्टेक्स्ट टूल, Tool.url_context पर मैप होता है.
GOOGLE_MAPS Google Maps टूल, Tool.google_maps पर मैप करता है.

ToolResponse

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

फ़ील्ड
id string

ज़रूरी नहीं. टूल कॉल का आइडेंटिफ़ायर, जिसके लिए यह जवाब है.

toolType enum (ToolType)

ज़रूरी है. कॉल किए गए टूल का टाइप, जो उससे जुड़े ToolCall में मौजूद toolType से मैच करता है.

response object (Struct format)

ज़रूरी नहीं. टूल से मिला जवाब.

JSON के काेड में दिखाना
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

मेटाडेटा से, इनपुट वीडियो के कॉन्टेंट के बारे में जानकारी मिलती है. जब inlineData या fileData में वीडियो शामिल हो, तो इसे Part.video_metadata या FunctionResponsePart.video_metadata में सेट करें. इससे स्टैटिक वीडियो की प्रीप्रोसेसिंग को कॉन्फ़िगर किया जा सकता है. जैसे, टाइम क्लिपिंग, फ़्रेम रेट, फ़्रेम की ज़्यादा से ज़्यादा संख्या या एक्सट्रैक्ट की गई कॉन्टेंट लेयर.

फ़ील्ड
startOffset string (Duration format)

ज़रूरी नहीं. वीडियो का शुरुआती ऑफ़सेट.

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

endOffset string (Duration format)

ज़रूरी नहीं. वीडियो का आखिरी ऑफ़सेट.

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

fps number

ज़रूरी नहीं. मॉडल को भेजे गए वीडियो का फ़्रेम रेट. अगर कोई वैल्यू तय नहीं की गई है, तो डिफ़ॉल्ट वैल्यू 1.0 होगी. एफ़पीएस की रेंज (0.0, 24.0] है.

JSON के काेड में दिखाना
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

टोकनाइज़ेशन के लिए मीडिया रिज़ॉल्यूशन.

फ़ील्ड
value Union type
मीडिया रिज़ॉल्यूशन का लेवल. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
level enum (Level)

दिए गए मीडिया के लिए इस्तेमाल की गई टोकनाइज़ेशन क्वालिटी. Gemini API से जुड़ी सहायता पाने के लिए .

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{

  // value
  "level": enum (Level)
  // Union type
}

लेवल

मीडिया रिज़ॉल्यूशन का लेवल.

Enums
MEDIA_RESOLUTION_UNSPECIFIED मीडिया का रिज़ॉल्यूशन सेट नहीं किया गया है.
MEDIA_RESOLUTION_LOW मीडिया का रिज़ॉल्यूशन कम पर सेट है.
MEDIA_RESOLUTION_MEDIUM मीडिया का रिज़ॉल्यूशन, मीडियम पर सेट किया गया.
MEDIA_RESOLUTION_HIGH मीडिया का रिज़ॉल्यूशन, हाई पर सेट किया गया.
MEDIA_RESOLUTION_ULTRA_HIGH मीडिया रिज़ॉल्यूशन को अल्ट्रा हाई पर सेट किया गया.

MediaProcessing

मॉडल, इनपुट मीडिया को समझने के लिए उसे कैसे प्रोसेस करता है.

Enums
MEDIA_PROCESSING_UNSPECIFIED डिफ़ॉल्ट रूप से, मॉडल के हिसाब से प्रोसेसिंग की जाती है.
STATIC तय दर पर फ़्रेम एक्सट्रैक्ट करना. सभी फ़्रेम, कॉन्टेक्स्ट में रखे गए हैं.
AGENTIC मॉडल के हिसाब से डाइनैमिक नेविगेशन. ज़्यादातर मामलों में इसका इस्तेमाल करने का सुझाव दिया जाता है.

AudioTranscription

ऑडियो के किसी हिस्से की ट्रांसक्रिप्ट. एक से ज़्यादा स्पीकर वाले ऑडियो के लिए, हर स्पीकर का सेगमेंट एक अलग हिस्सा होता है. इसमें AudioTranscription होता है, जिसमें speakerLabel होता है.

फ़ील्ड
text string

ज़रूरी है. इस ऑडियो सेगमेंट का ट्रांसक्रिप्शन टेक्स्ट.

speakerLabel string

ज़रूरी नहीं. इस ऑडियो सेगमेंट के स्पीकर की पहचान करने वाला लेबल (जैसे, "spk_1", "spk_2"). यह तब मौजूद होता है, जब डायराइज़ेशन सेट किया गया हो.

words[] object (WordInfo)

ज़रूरी नहीं. शब्द के लेवल पर पूरी जानकारी देने वाले ट्रांसक्रिप्ट और समय की जानकारी. यह तब मौजूद होता है, जब wordTimestamp सेट हो.

JSON के काेड में दिखाना
{
  "text": string,
  "speakerLabel": string,
  "words": [
    {
      object (WordInfo)
    }
  ]
}

WordInfo

पहचाने गए किसी एक शब्द के बारे में जानकारी.

फ़ील्ड
word string

ज़रूरी है. शब्द की ट्रांसक्रिप्ट.

startOffset string (Duration format)

ज़रूरी नहीं. ऑडियो की शुरुआत के हिसाब से, शब्द का स्टार्ट ऑफ़सेट.

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

endOffset string (Duration format)

ज़रूरी नहीं. ऑडियो के शुरू होने के समय के हिसाब से, शब्द के खत्म होने का ऑफ़सेट.

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

JSON के काेड में दिखाना
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

text हिस्सों के लिए, बोली का मेटाडेटा.

फ़ील्ड
speaker string

ज़रूरी नहीं. एक से ज़्यादा स्पीकर के लिए, स्पीकर का वैकल्पिक नाम.

style string

ज़रूरी नहीं. स्पीच सिंथेसिस के लिए स्टाइल से जुड़ा निर्देश. यह ज़रूरी नहीं है.

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

परिवेश

एजेंट के लिए एक्ज़ीक्यूशन एनवायरमेंट.

फ़ील्ड
id string

ज़रूरी है. सिर्फ़ आउटपुट के लिए. एनवायरमेंट का आईडी.

sources[] object (Source)

एनवायरमेंट में माउंट किए जाने वाले सोर्स.

created string

सिर्फ़ आउटपुट के लिए. आईएसओ 8601 फ़ॉर्मैट (YYYY-MM-DDThh:mm:ssZ) में, एनवायरमेंट बनाने का समय.

updated string

सिर्फ़ आउटपुट के लिए. वह समय जब एनवायरमेंट को पिछली बार ISO 8601 फ़ॉर्मैट (YYYY-MM-DDThh:mm:ssZ) में अपडेट किया गया था.

lastAccessed string

सिर्फ़ आउटपुट के लिए. आईएसओ 8601 फ़ॉर्मैट (YYYY-MM-DDThh:mm:ssZ) में वह समय जब एनवायरमेंट को पिछली बार ऐक्सेस किया गया था.

status enum (Status)

सिर्फ़ आउटपुट के लिए. एनवायरमेंट कंटेनर की स्थिति.

fileCount string (int64 format)

सिर्फ़ आउटपुट के लिए. एनवायरमेंट में मौजूद फ़ाइलों की संख्या. यह सिर्फ़ आउटपुट के लिए है.

sizeBytes string (int64 format)

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

network Union type
एनवायरमेंट के लिए नेटवर्क कॉन्फ़िगरेशन. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

सिर्फ़ चुनिंदा डोमेन को अनुमति दें.

networkMode enum (NetworkMode)

नेटवर्क इग्रेस मोड.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

  // network
  "networkAllowlist": {
    object (EnvironmentNetworkEgressAllowlist)
  },
  "networkMode": enum (NetworkMode)
  // Union type
}

स्थिति

एनवायरमेंट की स्थिति.

Enums
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

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

Enums
NETWORK_MODE_UNSPECIFIED डिफ़ॉल्ट मान. इस्तेमाल नहीं किया गया.
DISABLED सभी नेटवर्क इग्रेस को ब्लॉक कर दिया गया है.

स्कीमा

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

फ़ील्ड
type enum (Type)

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

format string

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

title string

ज़रूरी नहीं. स्कीमा का टाइटल.

description string

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

nullable boolean

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

enum[] string

ज़रूरी नहीं. enum फ़ॉर्मैट के साथ Type.STRING के एलिमेंट की संभावित वैल्यू. उदाहरण के लिए, हम 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 की ज़रूरी प्रॉपर्टी.

minProperties string (int64 format)

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

maxProperties string (int64 format)

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

minLength string (int64 format)

ज़रूरी नहीं. SCHEMA FIELDS FOR TYPE STRING Minimum length of the Type.STRING

maxLength string (int64 format)

ज़रूरी नहीं. Type.STRING की ज़्यादा से ज़्यादा लंबाई

pattern string

ज़रूरी नहीं. Type.STRING का पैटर्न, ताकि स्ट्रिंग को रेगुलर एक्सप्रेशन तक सीमित किया जा सके.

example value (Value format)

ज़रूरी नहीं. ऑब्जेक्ट का उदाहरण. यह जानकारी सिर्फ़ तब भरी जाएगी, जब ऑब्जेक्ट रूट होगा.

anyOf[] object (Schema)

ज़रूरी नहीं. वैल्यू की पुष्टि, सूची में मौजूद किसी भी (एक या उससे ज़्यादा) सबस्कीमा के हिसाब से की जानी चाहिए.

propertyOrdering[] string

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

default value (Value format)

ज़रूरी नहीं. फ़ील्ड की डिफ़ॉल्ट वैल्यू. JSON स्कीमा के मुताबिक, यह फ़ील्ड दस्तावेज़ जनरेटर के लिए है. इससे पुष्टि करने की प्रोसेस पर कोई असर नहीं पड़ता. इसलिए, इसे यहां शामिल किया गया है और अनदेखा किया गया है, ताकि default फ़ील्ड के साथ स्कीमा भेजने वाले डेवलपर को अनजान फ़ील्ड की गड़बड़ियां न मिलें.

items object (Schema)

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

minimum number

ज़रूरी नहीं. टाइप INTEGER और NUMBER के लिए स्कीमा फ़ील्ड. Type.INTEGER और Type.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
}

टाइप

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

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

टूल

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

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

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

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

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

googleSearchRetrieval object (GoogleSearchRetrieval)

ज़रूरी नहीं. जानकारी हासिल करने वाला टूल, जिसे Google Search की मदद से बनाया गया है.

codeExecution object (CodeExecution)

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

computerUse object (ComputerUse)

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

urlContext object (UrlContext)

ज़रूरी नहीं. यूआरएल कॉन्टेक्स्ट को वापस पाने में मदद करने वाला टूल.

mcpServers[] object (McpServer)

ज़रूरी नहीं. कनेक्ट करने के लिए एमसीपी सर्वर.

googleMaps object (GoogleMaps)

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

JSON के काेड में दिखाना
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

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

फ़ील्ड
name string

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

description string

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

behavior enum (Behavior)

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

parameters object (Schema)

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

parametersJsonSchema value (Value format)

ज़रूरी नहीं. JSON स्कीमा फ़ॉर्मैट में, फ़ंक्शन के पैरामीटर के बारे में बताता है. स्कीमा में किसी ऐसे ऑब्जेक्ट के बारे में बताया जाना चाहिए जिसकी प्रॉपर्टी, फ़ंक्शन के पैरामीटर हों. उदाहरण के लिए:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "additionalProperties": false,
  "required": ["name", "age"],
  "propertyOrdering": ["name", "age"]
}

यह फ़ील्ड, parameters के साथ इस्तेमाल नहीं किया जा सकता.

response object (Schema)

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

responseJsonSchema value (Value format)

ज़रूरी नहीं. यह JSON स्कीमा फ़ॉर्मैट में, इस फ़ंक्शन से मिलने वाले आउटपुट के बारे में बताता है. स्कीमा में बताई गई वैल्यू, फ़ंक्शन की रिस्पॉन्स वैल्यू होती है.

यह फ़ील्ड, response के साथ काम नहीं करता.

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

व्यवहार

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

Enums
UNSPECIFIED इस वैल्यू का इस्तेमाल नहीं किया गया है.
BLOCKING अगर इसे सेट किया जाता है, तो सिस्टम बातचीत जारी रखने से पहले, फ़ंक्शन के रिस्पॉन्स का इंतज़ार करेगा.
NON_BLOCKING अगर इसे सेट किया जाता है, तो सिस्टम फ़ंक्शन के जवाब का इंतज़ार नहीं करेगा. इसके बजाय, यह फ़ंक्शन के रिस्पॉन्स उपलब्ध होने पर उन्हें हैंडल करने की कोशिश करेगा. साथ ही, उपयोगकर्ता और मॉडल के बीच बातचीत को जारी रखेगा.

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

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

फ़ील्ड
timeRangeFilter object (Interval)

ज़रूरी नहीं. खोज के नतीजों को किसी खास समयसीमा के हिसाब से फ़िल्टर करना. अगर ग्राहक शुरू होने का समय सेट करते हैं, तो उन्हें खत्म होने का समय भी सेट करना होगा. इसी तरह, अगर वे खत्म होने का समय सेट करते हैं, तो उन्हें शुरू होने का समय भी सेट करना होगा.

searchTypes object (SearchTypes)

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

JSON के काेड में दिखाना
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

इंटरवल

यह टाइम इंटरवल को दिखाता है. इसे टाइमस्टैंप के तौर पर कोड किया जाता है. इसमें टाइमस्टैंप के शुरू होने का समय (शामिल है) और टाइमस्टैंप के खत्म होने का समय (शामिल नहीं है) होता है.

शुरू होने की तारीख, खत्म होने की तारीख से पहले या उसके बराबर होनी चाहिए. शुरू होने और खत्म होने का समय एक जैसा होने पर, इंटरवल खाली होता है. इसका मतलब है कि यह किसी भी समय से मेल नहीं खाता. शुरू और खत्म होने का समय तय न होने पर, अंतराल किसी भी समय से मेल खाता है.

फ़ील्ड
startTime 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".

endTime 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".

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

SearchTypes

GoogleSearch टूल पर अलग-अलग तरह की खोज चालू की जा सकती हैं.

फ़ील्ड
JSON के काेड में दिखाना
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

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

ग्राउंडिंग और उससे जुड़े कॉन्फ़िगरेशन के लिए स्टैंडर्ड वेब खोज.

ImageSearch

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

ग्राउंडिंग और इससे जुड़े कॉन्फ़िगरेशन के लिए इमेज सर्च.

ComputerUse

कंप्यूटर का इस्तेमाल करने वाले टूल का टाइप.

फ़ील्ड
environment enum (Environment)

ज़रूरी है. जिस माहौल में काम किया जा रहा है.

excludedPredefinedFunctions[] string

ज़रूरी नहीं. डिफ़ॉल्ट रूप से, पहले से तय किए गए फ़ंक्शन, फ़ाइनल मॉडल कॉल में शामिल होते हैं. इनमें से कुछ को अपने-आप शामिल होने से साफ़ तौर पर रोका जा सकता है. इससे दो काम हो सकते हैं: 1. ज़्यादा पाबंदी वाले / अलग ऐक्शन स्पेस का इस्तेमाल करना. 2. पहले से तय किए गए फ़ंक्शन की परिभाषाओं / निर्देशों को बेहतर बनाना.

enablePromptInjectionDetection boolean

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

disabledSafetyPolicies[] enum (SafetyPolicy)

ज़रूरी नहीं. कंप्यूटर के इस्तेमाल के लिए, सुरक्षा से जुड़ी नीतियां बंद की गई हैं.

JSON के काेड में दिखाना
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

परिवेश

यह उस एनवायरमेंट को दिखाता है जिसमें काम किया जा रहा है. जैसे, वेब ब्राउज़र.

Enums
ENVIRONMENT_UNSPECIFIED डिफ़ॉल्ट रूप से, ब्राउज़र पर सेट होता है.
ENVIRONMENT_BROWSER यह वेब ब्राउज़र में काम करता है.
ENVIRONMENT_MOBILE यह मोबाइल एनवायरमेंट में काम करता है.
ENVIRONMENT_DESKTOP यह डेस्कटॉप एनवायरमेंट में काम करता है.

SafetyPolicy

कंप्यूटर के इस्तेमाल के लिए, सुरक्षा से जुड़ी पहले से तय नीतियां.

Enums
SAFETY_POLICY_UNSPECIFIED सुरक्षा नीति की जानकारी नहीं दी गई है.
FINANCIAL_TRANSACTIONS वित्तीय लेन-देन के लिए सुरक्षा नीति.
SENSITIVE_DATA_MODIFICATION संवेदनशील डेटा में बदलाव करने के लिए सुरक्षा नीति.
COMMUNICATION_TOOL कम्यूनिकेशन टूल (जैसे, Gmail, Chat, Meet) के लिए सुरक्षा नीति.
ACCOUNT_CREATION खाता बनाने के लिए सुरक्षा नीति.
DATA_MODIFICATION डेटा में बदलाव करने के लिए सुरक्षा नीति.
LEGAL_TERMS_AND_AGREEMENTS कानूनी शर्तों और कानूनी समझौतों के लिए सुरक्षा नीति.

UrlContext

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

यूआरएल कॉन्टेक्स्ट को वापस पाने में मदद करने वाला टूल.

FileSearch

FileSearch टूल, सिमैंटिक रिट्रीवल कॉर्पोरा से जानकारी हासिल करता है. ImportFile API का इस्तेमाल करके, फ़ाइलों को सिमैंटिक रिट्रीवल कॉर्पोरा में इंपोर्ट किया जाता है.

फ़ील्ड
fileSearchStoreNames[] string

ज़रूरी है. उन fileSearchStores के नाम जिनसे डेटा वापस पाना है. उदाहरण: fileSearchStores/my-file-search-store-123

metadataFilter string

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

topK integer

ज़रूरी नहीं. सिमैंटिक तरीके से वापस लाए जाने वाले चंक की संख्या.

JSON के काेड में दिखाना
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

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

फ़ील्ड
name string

MCPServer का नाम.

transport Union type
MCPServer से कनेक्ट करने के लिए इस्तेमाल किया जाने वाला ट्रांसपोर्ट. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
streamableHttpTransport object (StreamableHttpTransport)

ऐसा ट्रांसपोर्ट जो एचटीटीपी अनुरोधों और जवाबों को स्ट्रीम कर सकता है.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{
  "name": string,

  // transport
  "streamableHttpTransport": {
    object (StreamableHttpTransport)
  }
  // Union type
}

StreamableHttpTransport

ऐसा ट्रांसपोर्ट जो एचटीटीपी अनुरोधों और जवाबों को स्ट्रीम कर सकता है.

फ़ील्ड
url string

एमसीपी सर्वर के एंडपॉइंट का पूरा यूआरएल. उदाहरण: "https://api.example.com/mcp"

headers map (key: string, value: string)

ज़रूरी नहीं: अगर ज़रूरत हो, तो पुष्टि करने वाले हेडर, टाइम आउट वगैरह के लिए फ़ील्ड.

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

timeout string (Duration format)

सामान्य कार्रवाइयों के लिए एचटीटीपी टाइम आउट.

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

sseReadTimeout string (Duration format)

एसएसई रीड ऑपरेशन के लिए टाइम आउट.

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

terminateOnClose boolean

ट्रांसपोर्ट बंद होने पर, क्लाइंट सेशन को बंद करना है या नहीं.

JSON के काेड में दिखाना
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

GoogleMaps टूल, जो उपयोगकर्ता की क्वेरी के लिए जियोस्पेशल कॉन्टेक्स्ट उपलब्ध कराता है.

फ़ील्ड
enableWidget boolean

ज़रूरी नहीं. जवाब के GroundingMetadata में विजेट कॉन्टेक्स्ट टोकन दिखाना है या नहीं. डेवलपर, विजेट कॉन्टेक्स्ट टोकन का इस्तेमाल करके, Google Maps विजेट को रेंडर कर सकते हैं. इसमें उन जगहों से जुड़ी जियोस्पेशल जानकारी शामिल होती है जिनका रेफ़रंस मॉडल ने जवाब में दिया है.

JSON के काेड में दिखाना
{
  "enableWidget": boolean
}

REST रिसॉर्स: auth_tokens

संसाधन: AuthToken

कुछ समय के लिए मान्य पुष्टि करने वाला टोकन बनाने का अनुरोध.

फ़ील्ड
name string

सिर्फ़ आउटपुट के लिए. आइडेंटिफ़ायर. टोकन.

expireTime string (Timestamp format)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. यह एक वैकल्पिक समय है. इसके बाद, नतीजे के तौर पर मिलने वाले टोकन का इस्तेमाल करने पर, BidiGenerateContent सेशन में मैसेज अस्वीकार कर दिए जाएंगे. (इस समय के बाद, Gemini सेशन को पहले ही बंद कर सकता है.)

अगर यह नीति सेट नहीं है, तो आने वाले समय में यह डिफ़ॉल्ट रूप से 30 मिनट पर सेट हो जाएगी. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे बाद की होनी चाहिए.

यह आरएफ़सी 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".

newSessionExpireTime string (Timestamp format)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. इस अनुरोध से मिलने वाले टोकन का इस्तेमाल करके, Live API के नए सेशन शुरू करने की समयसीमा खत्म होने के बाद, नए सेशन शुरू नहीं किए जा सकेंगे.

अगर यह नीति सेट नहीं है, तो आने वाले समय में यह डिफ़ॉल्ट रूप से 60 सेकंड पर सेट हो जाएगी. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे से कम होनी चाहिए.

यह आरएफ़सी 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".

fieldMask string (FieldMask format)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. अगर fieldMask खाली है और bidiGenerateContentSetup मौजूद नहीं है, तो लागू होने वाला BidiGenerateContentSetup मैसेज, Live API कनेक्शन से लिया जाता है.

अगर fieldMask खाली है और bidiGenerateContentSetup मौजूद है, तो इस अनुरोध में BidiGenerateContentSetup मैसेज को पूरी तरह से bidiGenerateContentSetup से लिया जाता है. Live API कनेक्शन से मिले सेटअप मैसेज को अनदेखा कर दिया जाता है.

अगर fieldMask खाली नहीं है, तो bidiGenerateContentSetup के फ़ील्ड, Live API कनेक्शन में सेटअप मैसेज के फ़ील्ड को ओवरराइट कर देंगे.

यह फ़ील्ड के पूरी तरह क्वालिफ़ाइड नामों की कॉमा लगाकर अलग की गई लिस्ट है. उदाहरण: "user.displayName,photo".

config Union type
नतीजे के तौर पर मिलने वाले टोकन के लिए, तरीके के हिसाब से कॉन्फ़िगरेशन. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

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

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
uses integer

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

JSON के काेड में दिखाना
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

मैसेज, पहले (और सिर्फ़ पहले) BidiGenerateContentClientMessage में भेजा जाना चाहिए. इसमें ऐसा कॉन्फ़िगरेशन शामिल होता है जो स्ट्रीमिंग आरपीसी की अवधि के लिए लागू होगा.

क्लाइंट को कोई और मैसेज भेजने से पहले, BidiGenerateContentSetupComplete के मैसेज का इंतज़ार करना चाहिए.

फ़ील्ड
model string

ज़रूरी है. मॉडल के संसाधन का नाम. यह मॉडल के लिए एक आईडी के तौर पर काम करता है.

फ़ॉर्मैट: models/{model}

generationConfig object (GenerationConfig)

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

इन फ़ील्ड का इस्तेमाल नहीं किया जा सकता:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

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

ध्यान दें: हर पार्ट में सिर्फ़ टेक्स्ट का इस्तेमाल किया जाना चाहिए. साथ ही, हर पार्ट का कॉन्टेंट अलग पैराग्राफ़ में होना चाहिए.

tools[] object (Tool)

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

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

realtimeInputConfig object (RealtimeInputConfig)

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

sessionResumption object (SessionResumptionConfig)

ज़रूरी नहीं. सेशन को फिर से शुरू करने का तरीका कॉन्फ़िगर करता है.

अगर इसे शामिल किया जाता है, तो सर्वर SessionResumptionUpdate मैसेज भेजेगा.

contextWindowCompression object (ContextWindowCompressionConfig)

ज़रूरी नहीं. कॉन्टेक्स्ट विंडो को कंप्रेस करने का तरीका कॉन्फ़िगर करता है.

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

inputAudioTranscription object (AudioTranscriptionConfig)

ज़रूरी नहीं. अगर इसे सेट किया जाता है, तो बोलकर दिए गए इनपुट को ट्रांसक्राइब करने की सुविधा चालू हो जाती है. अगर कॉन्फ़िगर किया गया है, तो ट्रांसक्रिप्ट, इनपुट ऑडियो की भाषा के साथ अलाइन हो जाती है.

outputAudioTranscription object (AudioTranscriptionConfig)

ज़रूरी नहीं. अगर इसे सेट किया जाता है, तो मॉडल के ऑडियो आउटपुट का ट्रांसक्रिप्शन चालू हो जाता है. अगर कॉन्फ़िगर किया गया है, तो ट्रांसक्रिप्शन, आउटपुट ऑडियो के लिए तय किए गए भाषा कोड के मुताबिक होता है.

historyConfig object (HistoryConfig)

ज़रूरी नहीं. क्लाइंट और सर्वर के बीच इतिहास के एक्सचेंज को कॉन्फ़िगर करता है.

labels map (key: string, value: string)

ज़रूरी नहीं. अनुरोध के लिए, उपयोगकर्ता के तय किए गए मेटाडेटा वाले लेबल.

ज़रूरी नहीं. लेबल, यूनिफ़ाइड क्लाउड लेबल की ज़रूरी शर्तों के मुताबिक होने चाहिए: - लेबल कुंजियों की शुरुआत किसी अक्षर से होनी चाहिए. - लेबल कुंजी और वैल्यू में 63 से ज़्यादा वर्ण (यूनिकोड कोडपॉइंट) नहीं हो सकते. साथ ही, इनमें सिर्फ़ अंग्रेज़ी के छोटे अक्षर, संख्याएं, अंडरस्कोर, और डैश इस्तेमाल किए जा सकते हैं. - इंटरनैशनल कैरेक्टर के इस्तेमाल की अनुमति है.

इस्तेमाल: - एग्रीगेटर से मिले सुरक्षा आइडेंटिफ़ायर: कुंजी safety_identifier का इस्तेमाल करें (उदाहरण के लिए, {"safety_identifier": "user_session_123"})

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

JSON के काेड में दिखाना
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  },
  "labels": {
    string: string,
    ...
  }
}

GenerationConfig

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

फ़ील्ड
stopSequences[] string

ज़रूरी नहीं. वर्णों के क्रम का सेट (ज़्यादा से ज़्यादा पांच), जो आउटपुट जनरेट होने से रोकेगा. अगर जानकारी दी गई है, तो एपीआई stop_sequence के पहली बार दिखने पर रुक जाएगा. स्टॉप सीक्वेंस को जवाब में शामिल नहीं किया जाएगा.

responseMimeType string

ज़रूरी नहीं. जनरेट किए गए टेक्स्ट का एमआईएमई टाइप. इस्तेमाल किए जा सकने वाले एमआईएमई टाइप: text/plain: (डिफ़ॉल्ट) टेक्स्ट आउटपुट. application/json: जवाब के तौर पर दिए गए कैंडिडेट में JSON रिस्पॉन्स. text/x.enum: जवाब के तौर पर दिए गए विकल्पों में, स्ट्रिंग रिस्पॉन्स के तौर पर ENUM. इस्तेमाल किए जा सकने वाले सभी टेक्स्ट एमआईएमई टाइप की सूची के लिए, दस्तावेज़ देखें.

responseSchema
(deprecated)
object (Schema)

ज़रूरी नहीं. जनरेट किए गए कैंडिडेट टेक्स्ट का आउटपुट स्कीमा. स्कीमा, OpenAPI स्कीमा का सबसेट होना चाहिए. साथ ही, यह ऑब्जेक्ट, प्रिमिटिव या अरे हो सकता है.

अगर इसे सेट किया जाता है, तो इसके साथ काम करने वाला responseMimeType भी सेट करना ज़रूरी है. साथ काम करने वाले एमआईएमई टाइप: application/json: JSON रिस्पॉन्स के लिए स्कीमा. ज़्यादा जानकारी के लिए, JSON टेक्स्ट जनरेट करने की गाइड देखें.

समर्थन नहीं होना या रुकना. इसके बजाय, responseFormat का इस्तेमाल करें.

_responseJsonSchema
(deprecated)
value (Value format)

ज़रूरी नहीं. जनरेट किए गए जवाब का आउटपुट स्कीमा. यह responseSchema का विकल्प है, जो JSON स्कीमा को स्वीकार करता है.

अगर इसे सेट किया गया है, तो responseSchema को शामिल नहीं करना चाहिए. हालांकि, responseMimeType को शामिल करना ज़रूरी है.

भले ही, पूरा JSON स्कीमा भेजा जा सकता है, लेकिन सभी सुविधाएं काम नहीं करतीं. खास तौर पर, सिर्फ़ ये प्रॉपर्टी इस्तेमाल की जा सकती हैं:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (स्ट्रिंग और संख्याओं के लिए)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (इसे anyOf की तरह ही समझा जाता है)
  • properties
  • additionalProperties
  • required

नॉन-स्टैंडर्ड propertyOrdering प्रॉपर्टी भी सेट की जा सकती है.

साइक्लिक रेफ़रंस को सीमित तौर पर अनरोल किया जाता है. इसलिए, इनका इस्तेमाल सिर्फ़ उन प्रॉपर्टी में किया जा सकता है जो ज़रूरी नहीं हैं. (शून्य वैल्यू वाली प्रॉपर्टी काफ़ी नहीं हैं.) अगर किसी सब-स्कीमा पर $ref सेट है, तो $ से शुरू होने वाली प्रॉपर्टी के अलावा, कोई दूसरी प्रॉपर्टी सेट नहीं की जा सकती.

समर्थन नहीं होना या रुकना. इसके बजाय, responseFormat का इस्तेमाल करें.

responseJsonSchema value (Value format)

ज़रूरी नहीं. अंदरूनी हिस्से की जानकारी. इस फ़ील्ड के बजाय, responseJsonSchema का इस्तेमाल करें.

responseModalities[] enum (Modality)

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

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

खाली सूची का मतलब है कि सिर्फ़ टेक्स्ट का अनुरोध किया गया है.

candidateCount integer

ज़रूरी नहीं. जनरेट किए गए जवाबों की संख्या. अगर इसे सेट नहीं किया जाता है, तो यह डिफ़ॉल्ट रूप से 1 पर सेट हो जाएगा. कृपया ध्यान दें कि यह सुविधा, पिछली जनरेशन के मॉडल (Gemini 1.0 फ़ैमिली) के लिए काम नहीं करती

maxOutputTokens integer

ज़रूरी नहीं. जवाब के तौर पर दिए गए किसी विकल्प में शामिल किए जाने वाले टोकन की ज़्यादा से ज़्यादा संख्या.

ध्यान दें: डिफ़ॉल्ट वैल्यू, मॉडल के हिसाब से अलग-अलग होती है. getModel फ़ंक्शन से मिले Model का Model.output_token_limit एट्रिब्यूट देखें.

temperature number

ज़रूरी नहीं. इससे आउटपुट के रैंडम होने की संभावना को कंट्रोल किया जाता है.

ध्यान दें: डिफ़ॉल्ट वैल्यू, मॉडल के हिसाब से अलग-अलग होती है. getModel फ़ंक्शन से मिले Model का Model.temperature एट्रिब्यूट देखें.

वैल्यू [0.0, 2.0] के बीच हो सकती हैं.

इस फ़ील्ड का इस्तेमाल अब नहीं किया जा सकता. Gemini 3.6 Flash और इसके बाद के मॉडल में, इस फ़ील्ड को अनदेखा कर दिया जाता है.

topP number

ज़रूरी नहीं. सैंपलिंग के दौरान, टोकन की ज़्यादा से ज़्यादा कुल संभावना.

यह मॉडल, टॉप-k और टॉप-p (न्यूक्लियस) सैंपलिंग के कॉम्बिनेशन का इस्तेमाल करता है.

टोकन को उनकी असाइन की गई संभावनाओं के आधार पर क्रम में लगाया जाता है, ताकि सिर्फ़ सबसे संभावित टोकन पर विचार किया जाए. टॉप-के सैंपलिंग, सीधे तौर पर उन टोकन की ज़्यादा से ज़्यादा संख्या को सीमित करती है जिन पर विचार किया जाना है. वहीं, न्यूक्लियस सैंपलिंग, कुल संभावना के आधार पर टोकन की संख्या को सीमित करती है.

ध्यान दें: डिफ़ॉल्ट वैल्यू, Model के हिसाब से अलग-अलग होती है. साथ ही, इसे getModel फ़ंक्शन से मिलने वाले Model.top_p एट्रिब्यूट से तय किया जाता है. topK एट्रिब्यूट की वैल्यू खाली होने का मतलब है कि मॉडल, टॉप-के सैंपलिंग का इस्तेमाल नहीं करता. साथ ही, अनुरोधों पर topK सेट करने की अनुमति नहीं देता.

इस फ़ील्ड का इस्तेमाल अब नहीं किया जा सकता. Gemini 3.6 Flash और इसके बाद के मॉडल में, इस फ़ील्ड को अनदेखा कर दिया जाता है.

topK integer

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

Gemini मॉडल, टॉप-पी (न्यूक्लियस) सैंपलिंग या टॉप-के और न्यूक्लियस सैंपलिंग के कॉम्बिनेशन का इस्तेमाल करते हैं. टॉप-k सैंपलिंग, सबसे ज़्यादा संभावित topK टोकन के सेट को ध्यान में रखती है. न्यूक्लियस सैंपलिंग के साथ काम करने वाले मॉडल, topK सेटिंग की अनुमति नहीं देते.

ध्यान दें: डिफ़ॉल्ट वैल्यू, Model के हिसाब से अलग-अलग होती है. साथ ही, इसे getModel फ़ंक्शन से मिलने वाले Model.top_p एट्रिब्यूट से तय किया जाता है. topK एट्रिब्यूट की वैल्यू खाली होने का मतलब है कि मॉडल, टॉप-के सैंपलिंग का इस्तेमाल नहीं करता. साथ ही, अनुरोधों पर topK सेट करने की अनुमति नहीं देता.

इस फ़ील्ड का इस्तेमाल अब नहीं किया जा सकता. Gemini 3.6 Flash और इसके बाद के मॉडल में, इस फ़ील्ड को अनदेखा कर दिया जाता है.

seed integer

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

presencePenalty number

ज़रूरी नहीं. अगर टोकन पहले ही जवाब में दिख चुका है, तो अगले टोकन के logprobs पर प्रेज़ेंस पेनल्टी लागू की जाती है.

यह पेनल्टी बाइनरी ऑन/ऑफ़ है. यह इस बात पर निर्भर नहीं करती कि टोकन का इस्तेमाल कितनी बार किया गया है. हालांकि, पहली बार इस्तेमाल करने के बाद ही यह पेनल्टी लागू होती है. frequencyPenalty का इस्तेमाल ऐसी पेनल्टी के लिए करें जो हर बार इस्तेमाल करने पर बढ़ती है.

पॉज़िटिव पेनल्टी से, जवाब में पहले से इस्तेमाल किए गए टोकन के इस्तेमाल को कम किया जा सकेगा. इससे, जवाब में इस्तेमाल होने वाले शब्दों की संख्या बढ़ेगी.

नेगेटिव पेनल्टी से, उन टोकन के इस्तेमाल को बढ़ावा मिलेगा जो जवाब में पहले ही इस्तेमाल किए जा चुके हैं. इससे शब्दावली कम हो जाएगी.

frequencyPenalty number

ज़रूरी नहीं. अगले टोकन के logprobs पर फ़्रीक्वेंसी पेनल्टी लागू की गई. इसे जवाब में अब तक हर टोकन के दिखने की संख्या से गुणा किया गया.

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

चेतावनी: नेगेटिव पेनल्टी से, मॉडल को टोकन का फिर से इस्तेमाल करने के लिए बढ़ावा मिलेगा. यह इस बात पर निर्भर करेगा कि टोकन का इस्तेमाल कितनी बार किया गया है. छोटी नेगेटिव वैल्यू से, जवाब में इस्तेमाल होने वाली शब्दावली कम हो जाएगी. ज़्यादा बड़ी नेगेटिव वैल्यू की वजह से, मॉडल किसी सामान्य टोकन को तब तक दोहराता रहेगा, जब तक कि वह maxOutputTokens की सीमा तक नहीं पहुंच जाता.

responseLogprobs boolean

ज़रूरी नहीं. अगर इसकी वैल्यू true पर सेट है, तो जवाब में logprobs के नतीजे एक्सपोर्ट करें.

logprobs integer

ज़रूरी नहीं. यह सिर्फ़ तब मान्य है, जब responseLogprobs=True. इससे, Candidate.logprobs_result में हर डिकोडिंग चरण पर दिखाए जाने वाले टॉप logprobs की संख्या सेट होती है. इसमें चुना गया कैंडिडेट भी शामिल होता है. नंबर, [0, 20] की रेंज में होना चाहिए.

enableEnhancedCivicAnswers boolean

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

speechConfig object (SpeechConfig)

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

thinkingConfig object (ThinkingConfig)

ज़रूरी नहीं. सूझ-बूझ वाले मॉडल की सुविधाओं के लिए कॉन्फ़िगरेशन. अगर इस फ़ील्ड को उन मॉडल के लिए सेट किया जाता है जिनमें सोचने की क्षमता नहीं है, तो गड़बड़ी का मैसेज दिखेगा.

imageConfig object (ImageConfig)

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

mediaResolution enum (MediaResolution)

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

enableAffectiveDialog boolean

ज़रूरी नहीं. अगर यह सुविधा चालू है, तो मॉडल भावनाओं का पता लगाएगा और उनके हिसाब से जवाब देगा.

responseFormat object (ResponseFormatConfig)

ज़रूरी नहीं. जवाब के आउटपुट फ़ॉर्मैट के लिए कॉन्फ़िगरेशन. इससे हर मोडैलिटी (टेक्स्ट, ऑडियो, इमेज) के लिए, आउटपुट कॉन्फ़िगरेशन को फ़्लैट स्ट्रक्चर में तय किया जा सकता है.

translationConfig object (TranslationConfig)

ज़रूरी नहीं. अनुवाद के लिए कॉन्फ़िगरेशन.

audioTranscriptionConfig object (AudioTranscriptionConfig)

ज़रूरी नहीं. ऑडियो को टेक्स्ट में बदलने (बोली पहचानने) के लिए कॉन्फ़िगरेशन.

JSON के काेड में दिखाना
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

डेटा का टाइप

जवाब के लिए इस्तेमाल किए जा सकने वाले मोड.

Enums
MODALITY_UNSPECIFIED डिफ़ॉल्ट मान.
TEXT इससे पता चलता है कि मॉडल को टेक्स्ट दिखाना चाहिए.
IMAGE इससे पता चलता है कि मॉडल को इमेज दिखानी चाहिए.
AUDIO इससे पता चलता है कि मॉडल को ऑडियो आउटपुट देना चाहिए.

SpeechConfig

स्पीच जनरेट करने और ट्रांसक्राइब करने के लिए कॉन्फ़िगरेशन.

फ़ील्ड
voiceConfig object (VoiceConfig)

एक आवाज़ वाले आउटपुट के लिए कॉन्फ़िगरेशन.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

ज़रूरी नहीं. मल्टी-स्पीकर सेटअप का कॉन्फ़िगरेशन. यह voiceConfig फ़ील्ड के साथ म्यूचुअली एक्सक्लूसिव है.

languageCode string

ज़रूरी नहीं. IETF BCP-47 भाषा कोड, जिसे उपयोगकर्ता ने ऐप्लिकेशन इस्तेमाल करने के लिए कॉन्फ़िगर किया है. इसका इस्तेमाल, बोली की पहचान करने और लेख को बोली में बदलने के लिए किया जाता है.

मान्य वैल्यू ये हैं: de-DE, en-AU, en-GB, en-IN, en-US, es-US, fr-FR, hi-IN, pt-BR, ar-XA, es-ES, fr-CA, id-ID, it-IT, ja-JP, tr-TR, vi-VN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, ta-IN, te-IN, nl-NL, ko-KR, cmn-CN, pl-PL, ru-RU, और th-TH.

JSON के काेड में दिखाना
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

इस्तेमाल की जाने वाली आवाज़ का कॉन्फ़िगरेशन.

फ़ील्ड
voice_config Union type
स्पीकर के लिए इस्तेमाल किया जाने वाला कॉन्फ़िगरेशन. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

पहले से तैयार की गई आवाज़ का इस्तेमाल करने के लिए कॉन्फ़िगरेशन.

voice string

ज़रूरी नहीं. सिंथेसिस के लिए स्पीकर का आइडेंटिफ़ायर. इस्तेमाल किए जा सकने वाले फ़ॉर्मैट:

  • पहले से तैयार आवाज़ों के लिए स्पीकर का नाम. उदाहरण के लिए, Orus या Kore.
  • सेव की गई आवाज़ों के लिए वॉइस आईडी (उदाहरण के लिए, voice_xxx).
  • वॉइस रेप्लिकेशन की कुंजी (उदाहरण के लिए, voicekey_xxx).
एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  },
  "voice": string
  // Union type
}

PrebuiltVoiceConfig

पहले से मौजूद स्पीकर का कॉन्फ़िगरेशन.

फ़ील्ड
voiceName string

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

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

MultiSpeakerVoiceConfig

एक से ज़्यादा स्पीकर वाले सेटअप का कॉन्फ़िगरेशन.

फ़ील्ड
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

ज़रूरी है. स्पीकर की चालू की गई सभी आवाज़ें.

JSON के काेड में दिखाना
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

एक से ज़्यादा स्पीकर वाले सेटअप में, किसी एक स्पीकर का कॉन्फ़िगरेशन.

फ़ील्ड
speaker string

ज़रूरी है. इस्तेमाल किए जाने वाले स्पीकर का नाम. यह प्रॉम्प्ट में दी गई जानकारी से मेल खाना चाहिए.

voiceConfig object (VoiceConfig)

ज़रूरी है. इस्तेमाल की जाने वाली आवाज़ का कॉन्फ़िगरेशन.

JSON के काेड में दिखाना
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

सूझ-बूझ वाले मॉडल की सुविधाओं के लिए कॉन्फ़िगरेशन.

फ़ील्ड
includeThoughts boolean

इससे पता चलता है कि जवाब में थॉट प्रोसेस को शामिल करना है या नहीं. अगर इसकी वैल्यू true पर सेट है, तो थॉट सिर्फ़ तब दिखेंगे, जब वे उपलब्ध होंगे.

thinkingBudget integer

मॉडल को कितने थॉट टोकन जनरेट करने चाहिए.

thinkingLevel enum (ThinkingLevel)

ज़रूरी नहीं. इससे यह कंट्रोल किया जाता है कि जवाब देने से पहले, मॉडल की इंटरनल रीज़निंग प्रोसेस कितनी गहराई तक जा सकती है. डिफ़ॉल्ट वैल्यू, मॉडल पर निर्भर करती है. ज़्यादा जानकारी के लिए, सोचने के लेवल की गाइड देखें. Gemini 3 या इसके बाद के मॉडल के लिए सुझाया गया है. पुराने मॉडल के साथ इस्तेमाल करने पर गड़बड़ी होती है.

JSON के काेड में दिखाना
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

उपयोगकर्ता को यह तय करने की अनुमति दें कि इंटीजर बजट के बजाय, enum का इस्तेमाल करके कितना सोचना है.

Enums
THINKING_LEVEL_UNSPECIFIED डिफ़ॉल्ट मान.
MINIMAL कम या बिलकुल भी नहीं.
LOW कम गहराई से विचार करने वाला मोड.
MEDIUM सोच-विचार करके नपे-तुले जवाब देने का लेवल.
HIGH सोच-विचार करके गहराई से जवाब देने का लेवल.

ImageConfig

इमेज जनरेट करने की सुविधाओं के लिए कॉन्फ़िगरेशन.

फ़ील्ड
aspectRatio string

ज़रूरी नहीं. जनरेट की जाने वाली इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात). इन आसपेक्ट रेशियो का इस्तेमाल किया जा सकता है: 1:1, 1:4, 4:1, 1:8, 8:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 या 21:9.

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

imageSize string

ज़रूरी नहीं. इससे जनरेट की गई इमेज का साइज़ तय होता है. इस्तेमाल की जा सकने वाली वैल्यू 512, 1K, 2K, 4K हैं. अगर कोई वैल्यू नहीं दी जाती है, तो मॉडल डिफ़ॉल्ट वैल्यू 1K का इस्तेमाल करेगा.

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

MediaResolution

इनपुट मीडिया के लिए मीडिया रिज़ॉल्यूशन.

Enums
MEDIA_RESOLUTION_UNSPECIFIED मीडिया का रिज़ॉल्यूशन सेट नहीं किया गया है.
MEDIA_RESOLUTION_LOW मीडिया रिज़ॉल्यूशन को कम (64 टोकन) पर सेट किया गया है.
MEDIA_RESOLUTION_MEDIUM मीडिया रिज़ॉल्यूशन को मीडियम (256 टोकन) पर सेट किया गया.
MEDIA_RESOLUTION_HIGH मीडिया रिज़ॉल्यूशन को हाई पर सेट किया गया है. इसमें 256 टोकन के साथ ज़ूम करके रीफ़्रेम किया गया है.

ResponseFormatConfig

जवाब के आउटपुट फ़ॉर्मैट के लिए कॉन्फ़िगरेशन. यह एक फ़्लैट ऑब्जेक्ट है, जिसमें हर वैकल्पिक सब-फ़ील्ड, आउटपुट के लिए एक खास मोडैलिटी को कॉन्फ़िगर करता है.

फ़ील्ड
text object (TextResponseFormat)

ज़रूरी नहीं. टेक्स्ट आउटपुट फ़ॉर्मैट का कॉन्फ़िगरेशन.

audio object (AudioResponseFormat)

ज़रूरी नहीं. ऑडियो आउटपुट फ़ॉर्मैट का कॉन्फ़िगरेशन.

image object (ImageResponseFormat)

ज़रूरी नहीं. इमेज के आउटपुट फ़ॉर्मैट का कॉन्फ़िगरेशन.

JSON के काेड में दिखाना
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

टेक्स्ट आउटपुट फ़ॉर्मैट के लिए कॉन्फ़िगरेशन.

फ़ील्ड
mimeType enum (MimeType)

ज़रूरी नहीं. टेक्स्ट आउटपुट का एमआईएमई टाइप.

schema value (Value format)

ज़रूरी नहीं. वह JSON स्कीमा जिसके मुताबिक आउटपुट होना चाहिए. यह सिर्फ़ तब लागू होता है, जब mimeType, APPLICATION_JSON हो.

JSON के काेड में दिखाना
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

टेक्स्ट आउटपुट के लिए इस्तेमाल किए जा सकने वाले एमआईएमई टाइप.

Enums
MIME_TYPE_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
APPLICATION_JSON JSON आउटपुट फ़ॉर्मैट.
TEXT_PLAIN सादे टेक्स्ट का आउटपुट फ़ॉर्मैट.

AudioResponseFormat

ऑडियो आउटपुट फ़ॉर्मैट के लिए कॉन्फ़िगरेशन.

फ़ील्ड
mimeType enum (MimeType)

ज़रूरी नहीं. ऑडियो आउटपुट का एमआईएमई टाइप.

delivery enum (Delivery)

ज़रूरी नहीं. ऑडियो आउटपुट के लिए डिलीवरी मोड.

sampleRate integer

ज़रूरी नहीं. हर्ट्ज़ में सैंपल रेट.

bitRate integer

ज़रूरी नहीं. बिट रेट, बिट प्रति सेकंड (बीपीएस) में. यह सिर्फ़ कंप्रेस किए गए फ़ॉर्मैट (MP3, Opus) के लिए लागू होता है.

JSON के काेड में दिखाना
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

ऑडियो आउटपुट के लिए इस्तेमाल किए जा सकने वाले एमआईएमई टाइप.

Enums
MIME_TYPE_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
AUDIO_MP3 MP3 ऑडियो फ़ॉर्मैट.
AUDIO_OGG_OPUS OGG Opus ऑडियो फ़ॉर्मैट.
AUDIO_L16 रॉ पीसीएम (L16) ऑडियो फ़ॉर्मैट.
AUDIO_WAV WAV ऑडियो फ़ॉर्मैट.
AUDIO_ALAW A-law ऑडियो फ़ॉर्मैट.
AUDIO_MULAW Mu-law ऑडियो फ़ॉर्मैट.

डिलीवरी

ऑडियो आउटपुट के लिए डिलीवरी मोड.

Enums
DELIVERY_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
INLINE ऑडियो डेटा, जवाब में इनलाइन दिखता है.
URI ऑडियो डेटा, यूआरआई के तौर पर दिखाया जाता है.

ImageResponseFormat

इमेज के आउटपुट फ़ॉर्मैट के लिए कॉन्फ़िगरेशन.

फ़ील्ड
mimeType enum (MimeType)

ज़रूरी नहीं. इमेज आउटपुट का एमआईएमई टाइप.

delivery enum (Delivery)

ज़रूरी नहीं. इमेज आउटपुट के लिए डिलीवरी मोड.

aspectRatio enum (AspectRatio)

ज़रूरी नहीं. इमेज आउटपुट के लिए आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).

imageSize enum (ImageSize)

ज़रूरी नहीं. इमेज आउटपुट का साइज़.

JSON के काेड में दिखाना
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

इमेज आउटपुट के लिए, इस्तेमाल किए जा सकने वाले एमआईएमई टाइप.

Enums
MIME_TYPE_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
IMAGE_JPEG JPEG इमेज फ़ॉर्मैट.

डिलीवरी

इमेज आउटपुट के लिए डिलीवरी मोड.

Enums
DELIVERY_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
INLINE इमेज का डेटा, जवाब में इनलाइन दिखाया जाता है.
URI इमेज का डेटा, यूआरआई के तौर पर दिखाया जाता है.

AspectRatio

इमेज आउटपुट के लिए काम करने वाले आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).

Enums
ASPECT_RATIO_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
ASPECT_RATIO_ONE_BY_ONE 1:1 का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_TWO_BY_THREE 2:3 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_THREE_BY_TWO 3:2 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_THREE_BY_FOUR 3:4 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_FOUR_BY_THREE 4:3 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_FOUR_BY_FIVE 4:5 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_FIVE_BY_FOUR 5:4 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_NINE_BY_SIXTEEN 9:16 का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_SIXTEEN_BY_NINE 16:9 का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_TWENTY_ONE_BY_NINE 21:9 का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_ONE_BY_EIGHT 1:8 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_EIGHT_BY_ONE 8:1 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_ONE_BY_FOUR 1:4 आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात).
ASPECT_RATIO_FOUR_BY_ONE आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) 4:1 होना चाहिए.

ImageSize

इमेज आउटपुट के लिए, इमेज के साइज़.

Enums
IMAGE_SIZE_UNSPECIFIED डिफ़ॉल्ट मान. इस वैल्यू का इस्तेमाल नहीं किया गया है.
IMAGE_SIZE_FIVE_TWELVE इमेज का साइज़ 512 पिक्सल होना चाहिए.
IMAGE_SIZE_ONE_K इमेज का साइज़ 1K होना चाहिए.
IMAGE_SIZE_TWO_K इमेज का साइज़ 2K होना चाहिए.
IMAGE_SIZE_FOUR_K इमेज का साइज़ 4K होना चाहिए.

TranslationConfig

अनुवाद की सुविधाओं के लिए कॉन्फ़िगरेशन.

फ़ील्ड
targetLanguageCode string

ज़रूरी है. अनुवाद के लिए टारगेट वाली भाषा. इस्तेमाल की जा सकने वाली वैल्यू BCP-47 भाषा कोड हैं (जैसे, "en", "es", "fr").

echoTargetLanguage boolean

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

JSON के काेड में दिखाना
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

ऑडियो को टेक्स्ट में बदलने की सुविधा का कॉन्फ़िगरेशन.

फ़ील्ड
languageCodes[] string

ज़रूरी नहीं. ऑडियो में मौजूद भाषाओं के बारे में जानकारी देने वाले BCP-47 भाषा कोड. अगर इस पैरामीटर को शामिल नहीं किया जाता है या इसकी वैल्यू खाली छोड़ी जाती है, तो भाषा की अपने-आप पहचान होने की सुविधा डिफ़ॉल्ट रूप से चालू हो जाती है.

adaptationPhrases[]
(deprecated)
string

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

customVocabulary[] string

ज़रूरी नहीं. कस्टम शब्दावली वाले वाक्यांशों की सूची, ताकि बोली पहचानने वाला मॉडल, खास शब्दों (प्रॉडक्ट के नाम, व्यक्तिवाचक संज्ञा, और जारगन) को पहचान सके.

wordTimestamp boolean

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

diarization boolean

ज़रूरी नहीं. स्पीकर डायराइज़ेशन की सुविधा को कॉन्फ़िगर करता है.

mode enum (Mode)

ज़रूरी नहीं. इससे, ट्रांसक्रिप्शन मोड को कॉन्फ़िगर किया जा सकता है. इस्तेमाल की जा सकने वाली वैल्यू: VERBATIM, SMART. अगर कोई वैल्यू नहीं दी जाती है, तो डिफ़ॉल्ट रूप से इसकी वैल्यू VERBATIM ट्रांसक्रिप्शन होती है. SMART मोड में, मॉडल बोलते समय होने वाली रुकावटों को पहचानने और हटाने की सुविधा का इस्तेमाल करता है. जैसे, फ़िलर शब्दों, दोहराव, और गलत शुरुआत को हटाना. साथ ही, व्याकरण से जुड़ी छोटी-मोटी गलतियों को ठीक करना, अपने-आप फ़ॉर्मैटिंग करना (पैराग्राफ़, बुलेट पॉइंट, नंबर वाली सूचियां), और उपयोगकर्ता के छोटे-मोटे बदलावों (इनलाइन सेल्फ़-करेक्शन) को लागू करना. टाइमस्टैंप और डायराइज़ेशन की सुविधा, SMART मोड के साथ काम नहीं करती.

language_config Union type
अब इसका इस्तेमाल नहीं किया जाता: इसके बजाय, टॉप-लेवल language_codes का इस्तेमाल करें. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
languageAuto
(deprecated)
object (LanguageAuto)

ज़रूरी नहीं. मॉडल, भाषा का पता अपने-आप लगा लेगा.

languageHints
(deprecated)
object (LanguageHints)

ज़रूरी नहीं. इससे ऑडियो में मौजूद एक या उससे ज़्यादा भाषाओं की जानकारी मिलती है.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
JSON के काेड में दिखाना
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,
  "mode": enum (Mode),

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

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

इससे पता चलता है कि ऑडियो की भाषा का पता अपने-आप लग जाना चाहिए.

LanguageHints

यह मॉडल को ऑडियो में मौजूद संभावित भाषाओं के बारे में संकेत देता है.

फ़ील्ड
languageCodes[]
(deprecated)
string

ज़रूरी है. BCP-47 भाषा कोड.

JSON के काेड में दिखाना
{
  "languageCodes": [
    string
  ]
}

मोड

ट्रांसक्रिप्शन मोड.

Enums
MODE_UNSPECIFIED बोले जा रहे शब्दों को टेक्स्ट में बदलने के मोड की जानकारी नहीं दी गई है.
VERBATIM शब्दशः ट्रांसक्रिप्शन मोड.
SMART बोले जा रहे शब्दों को टेक्स्ट में बदलने का स्मार्ट मोड.

RealtimeInputConfig

यह नीति, BidiGenerateContent में रीयलटाइम इनपुट के व्यवहार को कॉन्फ़िगर करती है.

फ़ील्ड
automaticActivityDetection object (AutomaticActivityDetection)

ज़रूरी नहीं. अगर आपने इसे सेट नहीं किया है, तो गतिविधि का अपने-आप पता लगाने वाली सुविधा डिफ़ॉल्ट रूप से चालू रहती है. अगर आवाज़ का अपने-आप पता लगाने की सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे.

activityHandling enum (ActivityHandling)

ज़रूरी नहीं. इससे पता चलता है कि गतिविधि का क्या असर होता है.

turnCoverage enum (TurnCoverage)

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

interimTranscriptTimestampEnabled boolean

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

JSON के काेड में दिखाना
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage),
  "interimTranscriptTimestampEnabled": boolean
}

AutomaticActivityDetection

गतिविधि का अपने-आप पता लगाने की सुविधा को कॉन्फ़िगर करता है.

फ़ील्ड
disabled boolean

ज़रूरी नहीं. अगर यह सेटिंग चालू है (डिफ़ॉल्ट रूप से चालू रहती है), तो आवाज़ और टेक्स्ट इनपुट का पता चलने पर, उसे गतिविधि माना जाता है. अगर यह सुविधा बंद है, तो क्लाइंट को गतिविधि के सिग्नल भेजने होंगे.

startOfSpeechSensitivity enum (StartSensitivity)

ज़रूरी नहीं. इससे यह तय होता है कि बोली का पता चलने की संभावना कितनी है.

prefixPaddingMs integer

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

endOfSpeechSensitivity enum (EndSensitivity)

ज़रूरी नहीं. इससे यह तय होता है कि बोली के खत्म होने की संभावना कितनी है.

silenceDurationMs integer

ज़रूरी नहीं. स्पीच खत्म होने से पहले, स्पीच के अलावा अन्य आवाज़ों (जैसे, चुप्पी) की ज़रूरी अवधि. यह वैल्यू जितनी ज़्यादा होगी, उपयोगकर्ता की गतिविधि में रुकावट डाले बिना, बोलने के बीच में उतना ही ज़्यादा गैप हो सकता है. हालांकि, इससे मॉडल की इंतज़ार का समय बढ़ जाएगा.

JSON के काेड में दिखाना
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

इससे यह तय होता है कि बोली की शुरुआत का पता कैसे लगाया जाए.

Enums
START_SENSITIVITY_UNSPECIFIED डिफ़ॉल्ट रूप से, यह START_SENSITIVITY_HIGH पर सेट होता है.
START_SENSITIVITY_HIGH अपने-आप पहचान होने की सुविधा, बोली की शुरुआत का पता ज़्यादा बार लगाएगी.
START_SENSITIVITY_LOW अपने-आप पहचान करने की सुविधा, बोली की शुरुआत का पता कम बार लगाएगी.

EndSensitivity

इससे यह तय होता है कि बोली के खत्म होने का पता कैसे लगाया जाए.

Enums
END_SENSITIVITY_UNSPECIFIED डिफ़ॉल्ट रूप से, यह END_SENSITIVITY_HIGH पर सेट होता है.
END_SENSITIVITY_HIGH भाषा की अपने-आप पहचान होने की सुविधा, बोली को ज़्यादा बार खत्म करती है.
END_SENSITIVITY_LOW अपने-आप पहचान करने की सुविधा, बोली को कम बार खत्म करती है.

ActivityHandling

उपयोगकर्ता गतिविधि को मैनेज करने के अलग-अलग तरीके.

Enums
ACTIVITY_HANDLING_UNSPECIFIED अगर कोई वैल्यू नहीं दी गई है, तो डिफ़ॉल्ट तौर पर START_OF_ACTIVITY_INTERRUPTS लागू होगा.
START_OF_ACTIVITY_INTERRUPTS अगर यह वैल्यू true पर सेट है, तो गतिविधि शुरू होने पर मॉडल के जवाब में रुकावट आएगी. इसे "बार्ज इन" भी कहा जाता है. मॉडल का मौजूदा जवाब, रुकावट के समय ही बंद हो जाएगा. यह डिफ़ॉल्ट ऐक्शन और सेटिंग है.
NO_INTERRUPTION मॉडल के जवाब में कोई रुकावट नहीं आएगी.

TurnCoverage

उपयोगकर्ता की बारी में कौनसा इनपुट शामिल किया जाए, इसके विकल्प.

Enums
TURN_COVERAGE_UNSPECIFIED अगर कोई विकल्प नहीं चुना जाता है, तो मॉडल के आधार पर डिफ़ॉल्ट ऐक्शन और सेटिंग चुना जाता है. उदाहरण के लिए, Gemini 2.5 के लिए डिफ़ॉल्ट रूप से TURN_INCLUDES_ONLY_ACTIVITY सेट होता है. वहीं, Gemini 3.1 और इसके बाद के वर्शन के लिए, यह TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO पर सेट होता है.
TURN_INCLUDES_ONLY_ACTIVITY इसमें पिछली बार से लेकर अब तक की गतिविधि शामिल होती है.इसमें कोई गतिविधि न होने की जानकारी शामिल नहीं होती. जैसे, ऑडियो स्ट्रीम में आवाज़ न होना.
TURN_INCLUDES_ALL_INPUT इसमें पिछली बार के बाद से रीयल-टाइम में मिले सभी इनपुट शामिल होते हैं.इनमें कोई गतिविधि न होने की जानकारी भी शामिल है. जैसे, ऑडियो स्ट्रीम में आवाज़ न होना.
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO इसमें ऑडियो गतिविधि और पिछली बार चालू किए जाने के बाद से रिकॉर्ड किया गया पूरा वीडियो शामिल होता है. गतिविधि का अपने-आप पता लगाने की सुविधा चालू होने पर, ऑडियो गतिविधि का मतलब बोली से होता है. इसमें चुप्पी शामिल नहीं होती.

SessionResumptionConfig

सेशन को फिर से शुरू करने का कॉन्फ़िगरेशन.

यह मैसेज, सेशन कॉन्फ़िगरेशन में BidiGenerateContentSetup.session_resumption के तौर पर शामिल किया गया है. कॉन्फ़िगर किए जाने पर, सर्वर SessionResumptionUpdate मैसेज भेजेगा.

फ़ील्ड
handle string

पिछले सेशन का हैंडल. अगर ऐसा नहीं है, तो एक नया सेशन बनाया जाता है.

सेशन हैंडल, पिछले कनेक्शन में मौजूद SessionResumptionUpdate.token वैल्यू से आते हैं.

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

ContextWindowCompressionConfig

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

फ़ील्ड
compression_mechanism Union type
कॉन्टेक्स्ट विंडो को कंप्रेस करने के लिए इस्तेमाल किया गया तरीका. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
slidingWindow object (SlidingWindow)

स्लाइडिंग-विंडो मैकेनिज़्म.

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
triggerTokens string (int64 format)

कॉन्टेक्स्ट विंडो को कंप्रेस करने के लिए, ज़रूरी टोकन की संख्या (टर्न चलाने से पहले).

इसका इस्तेमाल, क्वालिटी और इंतज़ार के समय के बीच संतुलन बनाने के लिए किया जा सकता है. ऐसा इसलिए, क्योंकि छोटी कॉन्टेक्स्ट विंडो की वजह से मॉडल के जवाब तेज़ी से मिल सकते हैं. हालांकि, कंप्रेस करने की किसी भी प्रोसेस की वजह से, इंतज़ार का समय कुछ समय के लिए बढ़ जाएगा. इसलिए, उन्हें बार-बार ट्रिगर नहीं किया जाना चाहिए.

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

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

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

SlidingWindow तरीका, कॉन्टेक्स्ट विंडो की शुरुआत में मौजूद कॉन्टेंट को खारिज करके काम करता है. नतीजे के तौर पर मिलने वाला कॉन्टेक्स्ट, हमेशा USER रोल के टर्न की शुरुआत से शुरू होगा. सिस्टम के निर्देश और कोई भी BidiGenerateContentSetup.prefix_turns, हमेशा नतीजे की शुरुआत में रहेगा.

फ़ील्ड
targetTokens string (int64 format)

सेव किए जाने वाले टोकन की टारगेट संख्या. डिफ़ॉल्ट वैल्यू triggerTokens/2 होती है.

कॉन्टेक्स्ट विंडो के कुछ हिस्सों को खारिज करने से, इंतज़ार का समय कुछ समय के लिए बढ़ जाता है. इसलिए, इस वैल्यू को कैलिब्रेट किया जाना चाहिए, ताकि बार-बार कंप्रेस करने की प्रोसेस से बचा जा सके.

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

HistoryConfig

इतिहास का कॉन्फ़िगरेशन.

यह मैसेज, सेशन कॉन्फ़िगरेशन में BidiGenerateContentSetup.history_config के तौर पर शामिल किया गया है. यह नीति, इतिहास में मौजूद मैसेज के एक्सचेंज को कॉन्फ़िगर करती है.

फ़ील्ड
initialHistoryInClientContent boolean

ज़रूरी नहीं. अगर यह सही है, तो setupComplete भेजने के बाद, सर्वर इंतज़ार करेगा और पहले clientContent मैसेज प्रोसेस करेगा. ऐसा तब तक होगा, जब तक turnComplete, true न हो जाए. इस शुरुआती इतिहास से, मॉडल कॉल ट्रिगर नहीं होगा. साथ ही, यह MODEL भूमिका के साथ खत्म हो सकता है. turnComplete के true होने के बाद, क्लाइंट realtimeInput के ज़रिए रीयलटाइम बातचीत शुरू कर सकता है.

JSON के काेड में दिखाना
{
  "initialHistoryInClientContent": boolean
}

तरीका: auth_tokens.create

यह एक टोकन बनाता है. इसका इस्तेमाल, BidiGenerateContent सेशन के व्यवहार को सीमित करने के लिए किया जा सकता है.

एंडपॉइंट

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

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

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

फ़ील्ड
expireTime string (Timestamp format)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. यह एक वैकल्पिक समय है. इसके बाद, नतीजे के तौर पर मिलने वाले टोकन का इस्तेमाल करने पर, BidiGenerateContent सेशन में मैसेज अस्वीकार कर दिए जाएंगे. (इस समय के बाद, Gemini सेशन को पहले ही बंद कर सकता है.)

अगर यह नीति सेट नहीं है, तो आने वाले समय में यह डिफ़ॉल्ट रूप से 30 मिनट पर सेट हो जाएगी. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे बाद की होनी चाहिए.

यह आरएफ़सी 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".

newSessionExpireTime string (Timestamp format)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. इस अनुरोध से मिलने वाले टोकन का इस्तेमाल करके, Live API के नए सेशन शुरू करने की समयसीमा खत्म होने के बाद, नए सेशन शुरू नहीं किए जा सकेंगे.

अगर यह नीति सेट नहीं है, तो आने वाले समय में यह डिफ़ॉल्ट रूप से 60 सेकंड पर सेट हो जाएगी. अगर यह वैल्यू सेट की जाती है, तो यह मौजूदा समय से 20 घंटे से कम होनी चाहिए.

यह आरएफ़सी 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".

fieldMask string (FieldMask format)

ज़रूरी नहीं. सिर्फ़ इनपुट के लिए. इम्यूटेबल. अगर fieldMask खाली है और bidiGenerateContentSetup मौजूद नहीं है, तो लागू होने वाला BidiGenerateContentSetup मैसेज, Live API कनेक्शन से लिया जाता है.

अगर fieldMask खाली है और bidiGenerateContentSetup मौजूद है, तो इस अनुरोध में BidiGenerateContentSetup मैसेज को पूरी तरह से bidiGenerateContentSetup से लिया जाता है. Live API कनेक्शन से मिले सेटअप मैसेज को अनदेखा कर दिया जाता है.

अगर fieldMask खाली नहीं है, तो bidiGenerateContentSetup के फ़ील्ड, Live API कनेक्शन में सेटअप मैसेज के फ़ील्ड को ओवरराइट कर देंगे.

यह फ़ील्ड के पूरी तरह क्वालिफ़ाइड नामों की कॉमा लगाकर अलग की गई लिस्ट है. उदाहरण: "user.displayName,photo".

config Union type
नतीजे के तौर पर मिलने वाले टोकन के लिए, तरीके के हिसाब से कॉन्फ़िगरेशन. यहां उन फ़ील्ड की सूची दी गई है जिन्हें एक साथ इस्तेमाल नहीं किया जा सकता. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

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

एक-दूसरे से अलग फ़ील्ड का आखिरी हिस्सा.
uses integer

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

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

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