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 Tool ที่รองรับคือ Function และ codeExecution ดูข้อมูลเพิ่มเติมได้ที่คู่มือการเรียกใช้ฟังก์ชันและการเรียกใช้โค้ด

toolConfig object (ToolConfig)

ไม่บังคับ การกำหนดค่าเครื่องมือสำหรับ Tool ที่ระบุไว้ในคำขอ ดูตัวอย่างการใช้งานได้ที่คู่มือการเรียกใช้ฟังก์ชัน

safetySettings[] object (SafetySetting)

ไม่บังคับ รายการอินสแตนซ์ SafetySetting ที่ไม่ซ้ำกันสำหรับการบล็อกเนื้อหาที่ไม่ปลอดภัย

โดยจะบังคับใช้ในวันที่ GenerateContentRequest.contents และ GenerateContentResponse.candidates ไม่ควรมีการตั้งค่ามากกว่า 1 รายการสําหรับ SafetyCategory แต่ละประเภท API จะบล็อกเนื้อหาและการตอบกลับที่ไม่เป็นไปตามเกณฑ์ที่กำหนดไว้ในการตั้งค่าเหล่านี้ รายการนี้จะลบล้างการตั้งค่าเริ่มต้นสำหรับ SafetyCategory แต่ละรายการที่ระบุไว้ใน safetySettings หากไม่มี SafetySetting สำหรับ SafetyCategory ที่ระบุไว้ในรายการ API จะใช้การตั้งค่าความปลอดภัยเริ่มต้นสำหรับหมวดหมู่นั้น ระบบรองรับหมวดหมู่เนื้อหาที่อันตราย HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK ดูข้อมูลโดยละเอียดเกี่ยวกับการตั้งค่าความปลอดภัยที่มีให้ใช้งานได้ในคู่มือ นอกจากนี้ โปรดดูคำแนะนำด้านความปลอดภัยเพื่อดูวิธีรวมข้อควรพิจารณาด้านความปลอดภัยไว้ในแอปพลิเคชัน AI ของคุณ

continuationToken string (bytes format)

ไม่บังคับ โทเค็นความต่อเนื่องแบบทึบแสงที่ใช้เพื่อกลับมาสร้างต่อจากการตอบกลับ models.generateContent หรือ models.streamGenerateContent ก่อนหน้าที่หยุดลงโดยตั้งค่า finishReason เป็น CONTINUATION โปรดทราบว่า contents เป็นข้อมูลที่จำเป็นและต้องจำลองพรอมต์และประวัติการสนทนาจากคำขอเริ่มต้นให้เหมือนกันทุกประการเมื่อมีการระบุโทเค็นความต่อเนื่องในคำขอ

สตริงที่เข้ารหัส Base64

labels map (key: string, value: string)

ไม่บังคับ ป้ายกำกับที่มีข้อมูลเมตาที่ผู้ใช้กำหนดสำหรับคำขอ

ไม่บังคับ ป้ายกำกับต้องเป็นไปตามข้อกำหนดของป้ายกำกับ Cloud แบบรวมมาตรฐาน ดังนี้ - คีย์ป้ายกำกับต้องขึ้นต้นด้วยตัวอักษร - คีย์และค่าของป้ายกำกับต้องมีความยาวไม่เกิน 63 อักขระ (จุดโค้ด Unicode) โดยต้องมีเฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น - อนุญาตให้ใช้อักขระสากล

การใช้งาน: - ตัวระบุความปลอดภัยจากผู้รวบรวมข้อมูล: ใช้คีย์ 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);

Go

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

Go

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

Go

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

Go

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

Go

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

แชท

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

Go

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

Go

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

Go

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)

Go

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)

Go

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

Go

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

Go

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

Go

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 Tool ที่รองรับคือ Function และ codeExecution ดูข้อมูลเพิ่มเติมได้ที่คู่มือการเรียกใช้ฟังก์ชันและการเรียกใช้โค้ด

toolConfig object (ToolConfig)

ไม่บังคับ การกำหนดค่าเครื่องมือสำหรับ Tool ที่ระบุไว้ในคำขอ ดูตัวอย่างการใช้งานได้ที่คู่มือการเรียกใช้ฟังก์ชัน

safetySettings[] object (SafetySetting)

ไม่บังคับ รายการอินสแตนซ์ SafetySetting ที่ไม่ซ้ำกันสำหรับการบล็อกเนื้อหาที่ไม่ปลอดภัย

โดยจะบังคับใช้ในวันที่ GenerateContentRequest.contents และ GenerateContentResponse.candidates ไม่ควรมีการตั้งค่ามากกว่า 1 รายการสําหรับ SafetyCategory แต่ละประเภท API จะบล็อกเนื้อหาและการตอบกลับที่ไม่เป็นไปตามเกณฑ์ที่กำหนดไว้ในการตั้งค่าเหล่านี้ รายการนี้จะลบล้างการตั้งค่าเริ่มต้นสำหรับ SafetyCategory แต่ละรายการที่ระบุไว้ใน safetySettings หากไม่มี SafetySetting สำหรับ SafetyCategory ที่ระบุไว้ในรายการ API จะใช้การตั้งค่าความปลอดภัยเริ่มต้นสำหรับหมวดหมู่นั้น ระบบรองรับหมวดหมู่เนื้อหาที่อันตราย HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK ดูข้อมูลโดยละเอียดเกี่ยวกับการตั้งค่าความปลอดภัยที่มีให้ใช้งานได้ในคู่มือ นอกจากนี้ โปรดดูคำแนะนำด้านความปลอดภัยเพื่อดูวิธีรวมข้อควรพิจารณาด้านความปลอดภัยไว้ในแอปพลิเคชัน AI ของคุณ

continuationToken string (bytes format)

ไม่บังคับ โทเค็นความต่อเนื่องแบบทึบแสงที่ใช้เพื่อกลับมาสร้างต่อจากการตอบกลับ models.generateContent หรือ models.streamGenerateContent ก่อนหน้าที่หยุดลงโดยตั้งค่า finishReason เป็น CONTINUATION โปรดทราบว่า contents เป็นข้อมูลที่จำเป็นและต้องจำลองพรอมต์และประวัติการสนทนาจากคำขอเริ่มต้นให้เหมือนกันทุกประการเมื่อมีการระบุโทเค็นความต่อเนื่องในคำขอ

สตริงที่เข้ารหัส Base64

labels map (key: string, value: string)

ไม่บังคับ ป้ายกำกับที่มีข้อมูลเมตาที่ผู้ใช้กำหนดสำหรับคำขอ

ไม่บังคับ ป้ายกำกับต้องเป็นไปตามข้อกำหนดของป้ายกำกับ Cloud แบบรวมมาตรฐาน ดังนี้ - คีย์ป้ายกำกับต้องขึ้นต้นด้วยตัวอักษร - คีย์และค่าของป้ายกำกับต้องมีความยาวไม่เกิน 63 อักขระ (จุดโค้ด Unicode) โดยต้องมีเฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น - อนุญาตให้ใช้อักขระสากล

การใช้งาน: - ตัวระบุความปลอดภัยจากผู้รวบรวมข้อมูล: ใช้คีย์ 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;
}

Go

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

Go

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)

Go

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

Go

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)

Go

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

แชท

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

Go

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 API จะดำเนินการดังนี้ - แสดงผลผู้สมัครที่ขอทั้งหมดหรือไม่มีเลย - ไม่แสดงผลผู้สมัครเลยก็ต่อเมื่อมีข้อผิดพลาดเกี่ยวกับพรอมต์ (ตรวจสอบ 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)

คะแนนความปลอดภัยของพรอมต์ แต่ละหมวดหมู่มีคะแนนได้ไม่เกิน 1 รายการ

การแสดง JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

ระบุสาเหตุที่พรอมต์ถูกบล็อก

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

เวลาที่โมเดลจะเลิกใช้งาน

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

message string

ข้อความอธิบายสถานะของรูปแบบ

การแสดง JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

กำหนดระยะของโมเดลที่เกี่ยวข้อง

Enum
MODEL_STAGE_UNSPECIFIED ระยะของโมเดลที่ไม่ได้ระบุ
UNSTABLE_EXPERIMENTAL

โมเดลพื้นฐานมีการปรับแต่งหลายอย่าง

EXPERIMENTAL โมเดลในขั้นตอนนี้มีไว้เพื่อการทดสอบเท่านั้น
PREVIEW โมเดลในขั้นตอนนี้มีความสมบูรณ์มากกว่าโมเดลทดลอง
STABLE โมเดลในขั้นตอนนี้ถือว่าเสถียรและพร้อมใช้งานจริง
LEGACY หากโมเดลอยู่ในขั้นตอนนี้ หมายความว่าโมเดลกำลังจะเลิกใช้งานในอนาคตอันใกล้ เฉพาะลูกค้าเดิมเท่านั้นที่ใช้โมเดลนี้ได้
DEPRECATED

โมเดลในขั้นตอนนี้เลิกใช้งานแล้ว ใช้โมเดลเหล่านี้ไม่ได้

RETIRED โมเดลในขั้นตอนนี้จะเลิกใช้งานแล้ว ใช้โมเดลเหล่านี้ไม่ได้

ผู้สมัคร

ตัวเลือกคำตอบที่สร้างขึ้นจากโมเดล

ฟิลด์
content object (Content)

เอาต์พุตเท่านั้น เนื้อหาที่สร้างขึ้นซึ่งแสดงผลจากโมเดล

finishReason enum (FinishReason)

ไม่บังคับ เอาต์พุตเท่านั้น สาเหตุที่โมเดลหยุดสร้างโทเค็น

หากว่างเปล่า แสดงว่าโมเดลยังไม่ได้หยุดสร้างโทเค็น

safetyRatings[] object (SafetyRating)

รายการคะแนนความปลอดภัยของผู้สมัครรับเลือกตั้ง

แต่ละหมวดหมู่มีคะแนนได้ไม่เกิน 1 รายการ

citationMetadata object (CitationMetadata)

เอาต์พุตเท่านั้น ข้อมูลการอ้างอิงสำหรับคำตอบที่เป็นไปได้ซึ่งโมเดลสร้างขึ้น

ระบบอาจป้อนข้อมูลการท่องจำสำหรับข้อความที่รวมอยู่ใน content ลงในช่องนี้ ซึ่งเป็นข้อความที่ "คัดลอก" มาจากเนื้อหาที่มีลิขสิทธิ์ในข้อมูลฝึกฝนของ LLM พื้นฐาน

tokenCount integer

เอาต์พุตเท่านั้น จำนวนโทเค็นสำหรับผู้สมัครรายนี้

groundingAttributions[] object (GroundingAttribution)

เอาต์พุตเท่านั้น ข้อมูลการระบุแหล่งที่มาสำหรับแหล่งข้อมูลที่ช่วยให้ได้คำตอบที่อิงตามข้อมูลที่เชื่อถือได้

ระบบจะป้อนข้อมูลในช่องนี้สำหรับการโทร GenerateAnswer ครั้ง

groundingMetadata object (GroundingMetadata)

เอาต์พุตเท่านั้น ข้อมูลเมตาการอ้างอิงสำหรับคำตอบที่เป็นไปได้

ระบบจะป้อนข้อมูลในช่องนี้สำหรับการโทร GenerateContent ครั้ง

avgLogprobs number

เอาต์พุตเท่านั้น คะแนนความน่าจะเป็นของบันทึกโดยเฉลี่ยของผู้สมัคร

logprobsResult object (LogprobsResult)

เอาต์พุตเท่านั้น คะแนนความน่าจะเป็นแบบลอการิทึมสำหรับโทเค็นคำตอบและโทเค็นยอดนิยม

urlContextMetadata object (UrlContextMetadata)

เอาต์พุตเท่านั้น ข้อมูลเมตาที่เกี่ยวข้องกับเครื่องมือดึงข้อมูลบริบท URL

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

กำหนดเหตุผลที่โมเดลหยุดสร้างโทเค็น

Enum
FINISH_REASON_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
STOP จุดหยุดตามธรรมชาติของโมเดลหรือลำดับการหยุดที่ระบุ
MAX_TOKENS ถึงจำนวนโทเค็นสูงสุดตามที่ระบุไว้ในคำขอแล้ว
SAFETY เนื้อหาที่เป็นไปได้ของคำตอบถูกแจ้งว่าไม่เหมาะสมเนื่องจากเหตุผลด้านความปลอดภัย
RECITATION เนื้อหาที่เป็นไปได้ของคำตอบถูกแจ้งว่าไม่เหมาะสมเนื่องจากมีการท่องจำ
LANGUAGE เนื้อหาที่เป็นไปได้ของคำตอบถูกแจ้งว่าใช้ภาษาที่ไม่รองรับ
OTHER ไม่ทราบสาเหตุ
BLOCKLIST การสร้างโทเค็นหยุดลงเนื่องจากเนื้อหามีคำที่ไม่อนุญาต
PROHIBITED_CONTENT หยุดการสร้างโทเค็นเนื่องจากอาจมีเนื้อหาที่ไม่อนุญาต
SPII การสร้างโทเค็นหยุดลงเนื่องจากเนื้อหาอาจมีข้อมูลส่วนบุคคลที่ละเอียดอ่อนและระบุตัวบุคคลนั้นได้ (SPII)
MALFORMED_FUNCTION_CALL การเรียกใช้ฟังก์ชันที่โมเดลสร้างขึ้นไม่ถูกต้อง
IMAGE_SAFETY การสร้างโทเค็นหยุดลงเนื่องจากรูปภาพจาก Generative AI ที่สร้างขึ้นมีการละเมิดด้านความปลอดภัย
IMAGE_PROHIBITED_CONTENT การสร้างรูปภาพหยุดลงเนื่องจากรูปภาพที่สร้างขึ้นมีเนื้อหาอื่นๆ ที่ไม่อนุญาต
IMAGE_OTHER การสร้างรูปภาพหยุดลงเนื่องจากปัญหาเบ็ดเตล็ดอื่นๆ
NO_IMAGE โมเดลควรสร้างรูปภาพ แต่ไม่มีการสร้างรูปภาพ
IMAGE_RECITATION การสร้างรูปภาพหยุดลงเนื่องจากมีการท่องจำ
UNEXPECTED_TOOL_CALL โมเดลสร้างการเรียกใช้เครื่องมือ แต่ไม่มีการเปิดใช้เครื่องมือในคำขอ
TOO_MANY_TOOL_CALLS โมเดลเรียกใช้เครื่องมือติดต่อกันมากเกินไป ระบบจึงออกจากการดำเนินการ
MISSING_THOUGHT_SIGNATURE คำขอไม่มีลายเซ็นความคิดอย่างน้อย 1 รายการ
MALFORMED_RESPONSE เสร็จสิ้นเนื่องจากรูปแบบการตอบกลับไม่ถูกต้อง
ESCALATION คำขอถูกกรองออกโดยกฎการส่งต่อ
PUP_LIMITED_DISABLED ระบุว่าการสร้างโทเค็นหยุดลงเนื่องจากบัญชีผู้ใช้ถูกจำกัดหรือปิดใช้เนื่องจากการละเมิดนโยบายการใช้งานที่ไม่อนุญาต (PUP)
CONTINUATION การสร้างโทเค็นหยุดลงเนื่องจากคำตอบถึงขีดจำกัดโทเค็นต่อคำขอแล้ว แต่การสร้างยังไม่เสร็จสมบูรณ์ การตอบกลับของโมเดลจะดำเนินการต่อได้ผ่านคำขอที่ตามมาโดยใช้ continuationToken ที่แสดงผล โปรดทราบว่า maxOutputTokens เป็นค่าสะสมในฮ็อปต่อเนื่อง และต้องเพิ่มขึ้นแบบโมโนโทนิกหรือละเว้น

GroundingAttribution

การระบุแหล่งที่มาของแหล่งข้อมูลที่ช่วยให้ได้คำตอบ

ฟิลด์
sourceId object (AttributionSourceId)

เอาต์พุตเท่านั้น ตัวระบุแหล่งที่มาที่ทำให้เกิดการระบุแหล่งที่มานี้

content object (Content)

เนื้อหาแหล่งที่มาของการอ้างอิงข้อมูลที่ประกอบขึ้นเป็นการระบุแหล่งที่มานี้

การแสดง JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

ตัวระบุแหล่งที่มาที่ทำให้เกิดการระบุแหล่งที่มานี้

ฟิลด์
source Union type
ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
groundingPassage object (GroundingPassageId)

ตัวระบุสำหรับข้อความในบรรทัด

semanticRetrieverChunk object (SemanticRetrieverChunk)

ตัวระบุสำหรับ Chunk ที่ดึงข้อมูลผ่าน Semantic Retriever

สิ้นสุดฟิลด์ที่แยกกัน
การแสดง JSON
{

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

GroundingPassageId

ตัวระบุสำหรับส่วนภายใน GroundingPassage

ฟิลด์
passageId string

เอาต์พุตเท่านั้น รหัสของข้อความที่ตรงกับ GroundingPassage.id ของ GenerateAnswerRequest

partIndex integer

เอาต์พุตเท่านั้น ดัชนีของส่วนภายใน GroundingPassage.content ของ GenerateAnswerRequest

การแสดง JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

ตัวระบุสำหรับ Chunk ที่ดึงมาผ่าน Semantic Retriever ที่ระบุใน GenerateAnswerRequest โดยใช้ SemanticRetrieverConfig

ฟิลด์
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

ไม่บังคับ ข้อมูลโค้ดเนื้อหาเว็บที่ฝังในหน้าเว็บหรือ WebView ของแอปได้

sdkBlob string (bytes format)

ไม่บังคับ JSON ที่เข้ารหัส Base64 ซึ่งแสดงอาร์เรย์ของ Tuple <ข้อความค้นหา, URL การค้นหา>

สตริงที่เข้ารหัส Base64

การแสดง JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

GroundingChunk แสดงถึงส่วนของหลักฐานสนับสนุนที่ใช้เป็นพื้นฐานในการตอบกลับของโมเดล ซึ่งอาจเป็นข้อมูลจากเว็บ บริบทที่ดึงมาจากไฟล์ หรือข้อมูลจาก Google Maps

ฟิลด์
chunk_type Union type
ประเภทกลุ่มข้อมูล ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
web object (Web)

ข้อมูลที่อิงตามความเป็นจริงจากเว็บ

image object (Image)

ไม่บังคับ ข้อมูลที่ใช้ในการอ้างอิงจาก Google Search รูปภาพ

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

เอาต์พุตเท่านั้น การอ้างอิง URI ของกลุ่มข้อมูล

title string

เอาต์พุตเท่านั้น ชื่อของกลุ่มข้อมูล

การแสดง JSON
{
  "uri": string,
  "title": string
}

รูปภาพ

ข้อมูลที่ตัดมาจากผลการค้นหารูปภาพ

ฟิลด์
sourceUri string

URI ของหน้าเว็บสำหรับการระบุแหล่งที่มา

imageUri string

URL ของชิ้นงานรูปภาพ

title string

ชื่อของหน้าเว็บที่รูปภาพนั้นอยู่

domain string

โดเมนรากของหน้าเว็บที่รูปภาพนั้นอยู่ เช่น "example.com"

การแสดง JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

ส่วนย่อยจากบริบทที่เครื่องมือค้นหาไฟล์ดึงมา

ฟิลด์
customMetadata[] object (CustomMetadata)

ไม่บังคับ ข้อมูลเมตาที่ผู้ใช้ระบุเกี่ยวกับบริบทที่ดึงมา

uri string

ไม่บังคับ การอ้างอิง URI ของเอกสารการดึงข้อมูลเชิงความหมาย

title string

ไม่บังคับ ชื่อเอกสาร

text string

ไม่บังคับ ข้อความของกลุ่ม

fileSearchStore string

ไม่บังคับ ชื่อของ FileSearchStore ที่มีเอกสาร ตัวอย่างเช่น fileSearchStores/123

pageNumber integer

ไม่บังคับ หมายเลขหน้าของบริบทที่ดึงมา (หากมี)

mediaId string

ไม่บังคับ ชื่อทรัพยากร Media Blob สำหรับผลการค้นหาไฟล์แบบหลายโมดัล รูปแบบ: 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
ค่าของข้อมูลเมตา อาจเป็นสตริง รายการสตริง หรือตัวเลขก็ได้ ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
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 แต่ละส่วนจะสอดคล้องกับสถานที่ 1 แห่ง

ฟิลด์
uri string

ข้อมูลอ้างอิง URI ของสถานที่

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 ใช้แหล่งข้อมูลเหล่านี้เพื่อตอบคำถามเกี่ยวกับฟีเจอร์ของสถานที่ (เช่น "บาร์ Foo มี Wi-Fi ไหม" หรือ "Foo Bar รองรับเก้าอี้รถเข็นไหม") ปัจจุบันเรารองรับเฉพาะตัวอย่างรีวิวเป็นแหล่งที่มาเท่านั้น

ฟิลด์
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

ไม่บังคับ รายการดัชนี (ใน "grounding_chunk" ใน response.candidate.grounding_metadata) ที่ระบุการอ้างอิงที่เชื่อมโยงกับการอ้างสิทธิ์ เช่น [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

ดัชนีของออบเจ็กต์ Part ภายในออบเจ็กต์ Content ระดับบนสุด

startIndex integer

ดัชนีเริ่มต้นในส่วนที่ระบุ โดยวัดเป็นไบต์ ออฟเซ็ตจากจุดเริ่มต้นของส่วน (รวมจุดเริ่มต้น) โดยเริ่มที่ 0

endIndex integer

ดัชนีสิ้นสุดในส่วนที่ระบุ โดยวัดเป็นไบต์ ออฟเซ็ตจากจุดเริ่มต้นของส่วน ไม่รวมค่าเริ่มต้นที่ 0

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

ข้อมูลเมตาที่เกี่ยวข้องกับเครื่องมือดึงข้อมูลบริบท URL

ฟิลด์
urlMetadata[] object (UrlMetadata)

รายการบริบท URL

การแสดง JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

บริบทของการดึงข้อมูล URL เดียว

ฟิลด์
retrievedUrl string

URL ที่เครื่องมือดึงข้อมูลมา

urlRetrievalStatus enum (UrlRetrievalStatus)

สถานะการดึงข้อมูล URL

การแสดง JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

สถานะการดึงข้อมูล URL

Enum
URL_RETRIEVAL_STATUS_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
URL_RETRIEVAL_STATUS_SUCCESS ดึงข้อมูล URL สำเร็จแล้ว
URL_RETRIEVAL_STATUS_ERROR ดึงข้อมูล URL ไม่สำเร็จเนื่องจากเกิดข้อผิดพลาด
URL_RETRIEVAL_STATUS_PAYWALL ดึงข้อมูล URL ไม่สำเร็จเนื่องจากเนื้อหาอยู่หลังเพย์วอลล์
URL_RETRIEVAL_STATUS_UNSAFE ดึงข้อมูล URL ไม่สำเร็จเนื่องจากเนื้อหาไม่ปลอดภัย

CitationMetadata

คอลเล็กชันการระบุแหล่งที่มาของแหล่งข้อมูลสำหรับเนื้อหา

ฟิลด์
citationSources[] object (CitationSource)

การอ้างอิงแหล่งที่มาของคำตอบที่เฉพาะเจาะจง

การแสดง JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

การอ้างอิงแหล่งที่มาสำหรับส่วนหนึ่งของคำตอบที่เฉพาะเจาะจง

ฟิลด์
startIndex integer

ไม่บังคับ จุดเริ่มต้นของส่วนของคำตอบที่มาจากแหล่งที่มานี้

ดัชนีจะระบุจุดเริ่มต้นของกลุ่ม โดยวัดเป็นไบต์

endIndex integer

ไม่บังคับ จุดสิ้นสุดของกลุ่มที่ระบุแหล่งที่มา (ไม่รวมจุดสิ้นสุด)

uri string

ไม่บังคับ URI ที่ระบุว่าเป็นแหล่งที่มาของข้อความบางส่วน

license string

ไม่บังคับ ใบอนุญาตสำหรับโปรเจ็กต์ GitHub ที่ระบุว่าเป็นแหล่งที่มาของกลุ่ม

ต้องระบุข้อมูลใบอนุญาตสำหรับการอ้างอิงโค้ด

การแสดง JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

หมวดหมู่ของการจัดประเภท

หมวดหมู่เหล่านี้ครอบคลุมอันตรายประเภทต่างๆ ที่นักพัฒนาแอปอาจต้องการปรับเปลี่ยน

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

รูปแบบ

รูปแบบของส่วนเนื้อหา

Enum
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

ความน่าจะเป็นที่เนื้อหาจะเป็นอันตราย

ระบบการแยกประเภทจะระบุความน่าจะเป็นที่เนื้อหาไม่ปลอดภัย ซึ่งไม่ได้บ่งบอกถึงความรุนแรงของอันตรายในเนื้อหา

Enum
HARM_PROBABILITY_UNSPECIFIED ไม่ได้ระบุความน่าจะเป็น
NEGLIGIBLE เนื้อหามีโอกาสน้อยมากที่จะไม่ปลอดภัย
LOW เนื้อหามีโอกาสต่ำที่จะไม่ปลอดภัย
MEDIUM เนื้อหามีโอกาสปานกลางที่จะไม่ปลอดภัย
HIGH เนื้อหามีโอกาสสูงที่จะไม่ปลอดภัย

SafetySetting

การตั้งค่าความปลอดภัย ซึ่งส่งผลต่อลักษณะการบล็อกเพื่อความปลอดภัย

การส่งการตั้งค่าความปลอดภัยสำหรับหมวดหมู่จะเปลี่ยนความน่าจะเป็นที่อนุญาตให้บล็อกเนื้อหา

ฟิลด์
category enum (HarmCategory)

ต้องระบุ หมวดหมู่สำหรับการตั้งค่านี้

threshold enum (HarmBlockThreshold)

ต้องระบุ ควบคุมเกณฑ์ความน่าจะเป็นที่ระบบจะบล็อกเนื้อหาที่เป็นอันตราย

การแสดง JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

บล็อกที่ความน่าจะเป็นอันตรายที่ระบุและสูงกว่า

Enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED ไม่ได้ระบุเกณฑ์
BLOCK_LOW_AND_ABOVE ระบบจะอนุญาตเนื้อหาที่มีระดับความรุนแรงเป็น "เล็กน้อย"
BLOCK_MEDIUM_AND_ABOVE ระบบจะอนุญาตเนื้อหาที่มีระดับความรุนแรงเป็น "เล็กน้อย" และ "ต่ำ"
BLOCK_ONLY_HIGH ระบบจะอนุญาตเนื้อหาที่มีระดับความรุนแรงเป็น "เล็กน้อย" "ต่ำ" และ "ปานกลาง"
BLOCK_NONE ระบบจะอนุญาตเนื้อหาทั้งหมด
OFF ปิดตัวกรองความปลอดภัย

ServiceTier

ระดับบริการของคำขอ

Enum
unspecified ระดับบริการเริ่มต้น ซึ่งเป็นแบบมาตรฐาน
standard ระดับบริการมาตรฐาน
flex ระดับบริการ Flex
priority ระดับบริการที่มีลำดับความสำคัญสูง

เนื้อหา

ประเภทข้อมูลที่มีโครงสร้างพื้นฐานซึ่งมีเนื้อหาหลายส่วนของข้อความ

Content ประกอบด้วยช่อง role ที่ระบุผู้สร้าง Content และช่อง parts ที่มีข้อมูลหลายส่วนซึ่งมีเนื้อหาของเทิร์นข้อความ

ฟิลด์
parts[] object (Part)

Parts ที่เรียงลำดับซึ่งประกอบกันเป็นข้อความเดียว ส่วนต่างๆ อาจมีประเภท MIME ที่แตกต่างกัน

role string

ไม่บังคับ ผู้ผลิตเนื้อหา ต้องเป็น "user" หรือ "model"

มีประโยชน์ในการตั้งค่าสำหรับการสนทนาแบบหลายเทิร์น ไม่เช่นนั้นจะเว้นว่างไว้หรือไม่ได้ตั้งค่าก็ได้

การแสดง JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

ส่วน

ประเภทข้อมูลที่มีสื่อซึ่งเป็นส่วนหนึ่งของข้อความ Content แบบหลายส่วน

Part ประกอบด้วยข้อมูลที่มีประเภทข้อมูลที่เชื่อมโยง Part มีประเภทที่ยอมรับได้เพียงประเภทเดียวใน Part.data

Part ต้องมีประเภท MIME ของ IANA แบบคงที่ซึ่งระบุประเภทและประเภทย่อยของสื่อหากมีการกรอกข้อมูลในช่อง inlineData ด้วยไบต์ดิบ

ฟิลด์
thought boolean

ไม่บังคับ ระบุว่าส่วนนั้นเป็นความคิดจากโมเดลหรือไม่

thoughtSignature string (bytes format)

ไม่บังคับ ลายเซ็นทึบแสงสำหรับความคิดเพื่อให้สามารถนำมาใช้ซ้ำในคำขอต่อๆ ไปได้

สตริงที่เข้ารหัส Base64

partMetadata object (Struct format)

ข้อมูลเมตาที่กำหนดเองซึ่งเชื่อมโยงกับส่วนนั้นๆ Agent ที่ใช้ genai.Part เป็นการนำเสนอเนื้อหาอาจต้องติดตามข้อมูลเพิ่มเติม เช่น อาจเป็นชื่อไฟล์/แหล่งที่มาของส่วนนั้น หรือวิธีมัลติเพล็กซ์สตรีมส่วนต่างๆ หลายรายการ

mediaResolution object (MediaResolution)

ไม่บังคับ ความละเอียดของสื่อสำหรับสื่อที่ป้อน

mediaProcessing enum (MediaProcessing)

ไม่บังคับ วิธีที่โมเดลประมวลผลสื่อของส่วนนี้เพื่อทำความเข้าใจ มีประโยชน์สำหรับส่วนวิดีโอเท่านั้น (inlineData หรือ fileData ที่มี MIME ของวิดีโอ) ส่วนที่ไม่ใช่วิดีโอจะไม่สนใจช่องนี้

audioTranscription object (AudioTranscription)

ไม่บังคับ การถอดเสียง (อินพุตหรือเอาต์พุต) ระบบจะตั้งค่านี้เมื่อส่วนนี้มีข้อมูลเสียงเท่านั้น

speechMetadata object (SpeechMetadata)

ไม่บังคับ ข้อมูลเมตาที่ใช้กับส่วนข้อความเพื่อปรับแต่งวิธีพูดหรือสังเคราะห์เสียง เช่น การระบุตัวตนของผู้พูดหรือสไตล์การพูด

data Union type
ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
text string

ข้อความในบรรทัด

inlineData object (Blob)

ไบต์ของสื่อในบรรทัด

functionCall object (FunctionCall)

FunctionCall ที่คาดการณ์ไว้ซึ่งแสดงผลจากโมเดลที่มีสตริงที่แสดงถึง FunctionDeclaration.name พร้อมอาร์กิวเมนต์และค่าของอาร์กิวเมนต์

functionResponse object (FunctionResponse)

ระบบจะใช้เอาต์พุตผลลัพธ์ของ FunctionCall ที่มีสตริงซึ่งแสดงถึง FunctionDeclaration.name และออบเจ็กต์ JSON ที่มีโครงสร้างซึ่งมีเอาต์พุตจากฟังก์ชันเป็นบริบทสำหรับโมเดล

fileData object (FileData)

ข้อมูลที่อิงตาม URI

executableCode object (ExecutableCode)

โค้ดที่โมเดลสร้างขึ้นซึ่งมีไว้เพื่อเรียกใช้

codeExecutionResult object (CodeExecutionResult)

ผลลัพธ์ของการดำเนินการ ExecutableCode

toolCall object (ToolCall)

การเรียกใช้เครื่องมือฝั่งเซิร์ฟเวอร์ ระบบจะป้อนข้อมูลในช่องนี้เมื่อโมเดลคาดการณ์การเรียกใช้เครื่องมือที่ควรดำเนินการบนเซิร์ฟเวอร์ ไคลเอ็นต์ควรส่งข้อความนี้กลับไปยัง API

toolResponse object (ToolResponse)

เอาต์พุตจากการดำเนินการ ToolCall ฝั่งเซิร์ฟเวอร์ ไคลเอ็นต์จะป้อนข้อมูลในช่องนี้ด้วยผลลัพธ์ของการดำเนินการ ToolCall ที่เกี่ยวข้อง

สิ้นสุดฟิลด์ที่แยกกัน
metadata Union type
ควบคุมการประมวลผลข้อมูลล่วงหน้าเพิ่มเติม ตั้งค่านี้เมื่อมี inline_data หรือ file_data เพื่อกำหนดค่าการประมวลผลสื่อแบบคงที่ล่วงหน้าต่อส่วน ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
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
}

Blob

ไบต์สื่อดิบ

ไม่ควรส่งข้อความเป็นไบต์ดิบ ให้ใช้ช่อง "text"

ฟิลด์
mimeType string

ประเภท MIME มาตรฐาน IANA ของข้อมูลต้นทาง ตัวอย่างประเภทที่รองรับ: - รูปภาพ: 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

ไม่บังคับ ระบุชื่อที่ใช้เพื่ออ้างอิง Blob นี้กับโมเดล (เช่น "my_blob.png") ใช้เป็นตัวระบุการอ้างอิง Blob เมื่อตั้งค่า 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 ผู้โทรสามารถใช้คีย์ใดก็ได้ที่ต้องการซึ่งตรงกับไวยากรณ์ของฟังก์ชันเพื่อแสดงผลลัพธ์ของฟังก์ชัน เช่น "output", "result" เป็นต้น โดยเฉพาะอย่างยิ่ง หากการเรียกใช้ฟังก์ชันไม่สำเร็จ การตอบกลับอาจมีคีย์ "error" เพื่อแสดงรายละเอียดข้อผิดพลาดไปยังโมเดล

คุณรวมมัลติมีเดียได้โดยใช้ออบเจ็กต์ย่อยที่มีคีย์ "$ref" รายการเดียวซึ่งมีค่าเป็น inlineData.display_name ของ FunctionResponsePart ที่มีมัลติมีเดีย ดูข้อมูลเพิ่มเติมได้ที่ https://ai.google.dev/gemini-api/docs/function-calling#multimodal

parts[] object (FunctionResponsePart)

ไม่บังคับ Parts ที่เรียงลำดับแล้วซึ่งประกอบกันเป็นคำตอบของฟังก์ชัน ส่วนต่างๆ อาจมีประเภท MIME ของ IANA ที่แตกต่างกัน

willContinue boolean

ไม่บังคับ ส่งสัญญาณว่าการเรียกใช้ฟังก์ชันจะดำเนินต่อไป และจะแสดงคำตอบเพิ่มเติม ซึ่งจะเปลี่ยนการเรียกใช้ฟังก์ชันให้เป็นเครื่องมือสร้าง ใช้ได้กับการเรียกใช้ฟังก์ชัน NON_BLOCKING เท่านั้น ระบบจะไม่สนใจในกรณีอื่นๆ หากตั้งค่าเป็น "เท็จ" ระบบจะไม่พิจารณาคำตอบในอนาคต ระบบอนุญาตให้แสดงผล response ที่ว่างเปล่าพร้อม willContinue=False เพื่อส่งสัญญาณว่าการเรียกใช้ฟังก์ชันเสร็จสิ้นแล้ว ซึ่งอาจยังคงทริกเกอร์การสร้างโมเดลอยู่ หากต้องการหลีกเลี่ยงการทริกเกอร์การสร้างและการเรียกใช้ฟังก์ชันให้เสร็จสิ้น ให้ตั้งค่า 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

FunctionResponsePart ต้องมีประเภท MIME ของ IANA แบบคงที่ซึ่งระบุประเภทและประเภทย่อยของสื่อหากมีการกรอกข้อมูลในช่อง inlineData ด้วยไบต์ดิบ

ฟิลด์
data Union type
ข้อมูลของส่วนการตอบกลับของฟังก์ชัน ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
inlineData object (FunctionResponseBlob)

ไบต์ของสื่อในบรรทัด

สิ้นสุดฟิลด์ที่แยกกัน
การแสดง JSON
{

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

FunctionResponseBlob

ไบต์สื่อดิบสำหรับการตอบกลับฟังก์ชัน

ไม่ควรส่งข้อความเป็นไบต์ดิบ ให้ใช้ช่อง "FunctionResponse.response"

ฟิลด์
mimeType string

ประเภท MIME มาตรฐาน IANA ของข้อมูลต้นทาง ตัวอย่าง: - image/png - image/jpeg หากระบุประเภท MIME ที่ไม่รองรับ ระบบจะแสดงข้อผิดพลาด โปรดดูรายการประเภทที่รองรับทั้งหมดในหัวข้อรูปแบบไฟล์ที่รองรับ

data string (bytes format)

ไบต์ข้อมูลดิบสำหรับรูปแบบสื่อ

สตริงที่เข้ารหัส Base64

การแสดง JSON
{
  "mimeType": string,
  "data": string
}

Scheduling

ระบุวิธีกำหนดเวลาการตอบกลับในการสนทนา

Enum
SCHEDULING_UNSPECIFIED ค่านี้ไม่ได้ใช้
SILENT เพียงเพิ่มผลลัพธ์ลงในบริบทการสนทนา อย่าขัดจังหวะหรือทริกเกอร์การสร้าง
WHEN_IDLE เพิ่มผลลัพธ์ลงในบริบทการสนทนา และแจ้งให้สร้างเอาต์พุตโดยไม่ขัดจังหวะการสร้างที่ดำเนินอยู่
INTERRUPT เพิ่มผลลัพธ์ลงในบริบทการสนทนา ขัดจังหวะการสร้างที่ดำเนินอยู่ และแจ้งให้สร้างเอาต์พุต

FileData

ข้อมูลที่อิงตาม URI

ฟิลด์
mimeType string

ไม่บังคับ ประเภท MIME มาตรฐาน IANA ของข้อมูลต้นทาง

fileUri string

ต้องระบุ URI

displayName string

ไม่บังคับ ระบุชื่อที่ใช้เพื่ออ้างอิงไฟล์นี้ไปยังโมเดล (เช่น "my_file.pdf") ใช้เป็นตัวระบุการอ้างอิงไฟล์เมื่อตั้งค่า verbalizationMode เป็น REFERENCE_ONLY

การแสดง JSON
{
  "mimeType": string,
  "fileUri": string,
  "displayName": string
}

ExecutableCode

โค้ดที่สร้างโดยโมเดลซึ่งมีไว้เพื่อเรียกใช้ และผลลัพธ์ที่แสดงผลกลับไปยังโมเดล

สร้างขึ้นเมื่อใช้เครื่องมือ CodeExecution เท่านั้น ซึ่งระบบจะเรียกใช้โค้ดโดยอัตโนมัติ และจะสร้าง CodeExecutionResult ที่เกี่ยวข้องด้วย

ฟิลด์
id string

ไม่บังคับ ตัวระบุที่ไม่ซ้ำกันของส่วน ExecutableCode เซิร์ฟเวอร์จะแสดงผล CodeExecutionResult ที่มี id ที่ตรงกัน

language enum (Language)

ต้องระบุ ภาษาโปรแกรมของ code

code string

ต้องระบุ โค้ดที่จะเรียกใช้

การแสดง JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

ภาษา

ภาษาโปรแกรมที่รองรับสำหรับโค้ดที่สร้างขึ้น

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

ผลลัพธ์

การแจกแจงผลลัพธ์ที่เป็นไปได้ของการเรียกใช้โค้ด

Enum
OUTCOME_UNSPECIFIED สถานะที่ไม่ได้ระบุ ไม่ควรใช้ค่านี้
OUTCOME_OK การเรียกใช้โค้ดเสร็จสมบูรณ์แล้ว output มี stdout (หากมี)
OUTCOME_FAILED การเรียกใช้โค้ดไม่สำเร็จ output มี stderr และ stdout (หากมี)
OUTCOME_DEADLINE_EXCEEDED การเรียกใช้โค้ดใช้เวลานานเกินไปและถูกยกเลิก อาจมีหรือไม่มี output บางส่วนปรากฏอยู่

ToolCall

ToolCall ฝั่งเซิร์ฟเวอร์ที่คาดการณ์ซึ่งแสดงผลจากโมเดล ข้อความนี้มีข้อมูลเกี่ยวกับเครื่องมือที่โมเดลต้องการเรียกใช้ ลูกค้าไม่จำเป็นต้องดำเนินการ ToolCall นี้ แต่ไคลเอ็นต์ควรส่ง ToolCall นี้กลับไปยัง API ในเทิร์นถัดไปภายในข้อความ 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

ประเภทเครื่องมือในการเรียกใช้ฟังก์ชัน

Enum
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 เครื่องมือบริบท URL ซึ่งแมปกับ Tool.url_context
GOOGLE_MAPS เครื่องมือ Google Maps จะแมปกับ Tool.google_maps

ToolResponse

เอาต์พุตจากการดำเนินการ ToolCall ฝั่งเซิร์ฟเวอร์ ข้อความนี้มีผลลัพธ์ของการเรียกใช้เครื่องมือที่เริ่มต้นโดย ToolCall จากโมเดล ไคลเอ็นต์ควรส่ง ToolResponse นี้กลับไปยัง API ในเทิร์นถัดไปภายในข้อความ Content พร้อมกับ ToolCall ที่เกี่ยวข้อง

ฟิลด์
id string

ไม่บังคับ ตัวระบุของการเรียกใช้เครื่องมือที่คำตอบนี้มีไว้ให้

toolType enum (ToolType)

ต้องระบุ ประเภทของเครื่องมือที่เรียกใช้ ซึ่งตรงกับ toolType ใน ToolCall ที่เกี่ยวข้อง

response object (Struct format)

ไม่บังคับ คำตอบของเครื่องมือ

การแสดง JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

ข้อมูลเมตาจะอธิบายเนื้อหาวิดีโออินพุต ตั้งค่านี้ใน Part.video_metadata หรือ FunctionResponsePart.video_metadata เมื่อ inlineData หรือ fileData มีวิดีโอเพื่อกำหนดค่าการประมวลผลวิดีโอแบบคงที่ล่วงหน้า (เช่น การตัดคลิปตามเวลา อัตราเฟรม จำนวนเฟรมสูงสุด หรือเลเยอร์เนื้อหาที่แยกออกมา)

ฟิลด์
startOffset string (Duration format)

ไม่บังคับ ค่าชดเชยการเริ่มต้นของวิดีโอ

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมสูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

endOffset string (Duration format)

ไม่บังคับ ออฟเซ็ตสิ้นสุดของวิดีโอ

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมสูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

fps number

ไม่บังคับ อัตราเฟรมของวิดีโอที่ส่งไปยังโมเดล หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 1.0 ช่วง FPS คือ (0.0, 24.0]

การแสดง JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

การแปลงสื่อเป็นโทเค็น

ฟิลด์
value Union type
ระดับความละเอียดของสื่อ ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
level enum (Level)

คุณภาพการแยกคำที่ใช้สำหรับสื่อที่ระบุ สำหรับการสนับสนุน Gemini API

สิ้นสุดฟิลด์ที่แยกกัน
การแสดง JSON
{

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

ระดับ

ระดับความละเอียดของสื่อ

Enum
MEDIA_RESOLUTION_UNSPECIFIED ยังไม่ได้ตั้งค่าความละเอียดของสื่อ
MEDIA_RESOLUTION_LOW ตั้งค่าความละเอียดของสื่อเป็นต่ำ
MEDIA_RESOLUTION_MEDIUM ตั้งค่าความละเอียดของสื่อเป็นปานกลางแล้ว
MEDIA_RESOLUTION_HIGH ตั้งค่าความละเอียดของสื่อเป็นสูงแล้ว
MEDIA_RESOLUTION_ULTRA_HIGH ตั้งค่าความละเอียดของสื่อเป็นระดับสูงพิเศษแล้ว

MediaProcessing

วิธีที่โมเดลประมวลผลสื่อที่ป้อนเข้ามาเพื่อทำความเข้าใจ

Enum
MEDIA_PROCESSING_UNSPECIFIED ค่าเริ่มต้นคือการประมวลผลเฉพาะโมเดล
STATIC การดึงเฟรมอัตราคงที่ วางเฟรมทั้งหมดในบริบทแล้ว
AGENTIC การนำทางแบบไดนามิกที่อิงตามโมเดล แนะนำสำหรับกรณีการใช้งานส่วนใหญ่

AudioTranscription

การถอดเสียงเป็นคำของส่วนเสียง สำหรับเสียงที่มีผู้พูดหลายคน ส่วนของผู้พูดแต่ละคนจะเป็น Part แยกต่างหากที่มี 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)

ไม่บังคับ ออฟเซ็ตเริ่มต้นในเวลาของคำที่สัมพันธ์กับจุดเริ่มต้นของเสียง

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมสูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

endOffset string (Duration format)

ไม่บังคับ ออฟเซ็ตสิ้นสุดในเวลาของคำที่สัมพันธ์กับจุดเริ่มต้นของเสียง

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมสูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

การแสดง JSON
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

ข้อมูลเมตาของคำพูดสำหรับ text ส่วน

ฟิลด์
speaker string

ไม่บังคับ ชื่อผู้พูดที่ไม่บังคับสำหรับการสังเคราะห์เสียงผู้พูดหลายคน

style string

ไม่บังคับ คำสั่งสไตล์ที่ไม่บังคับสำหรับการสังเคราะห์เสียงพูด

การแสดง JSON
{
  "speaker": string,
  "style": string
}

สภาพแวดล้อม

สภาพแวดล้อมการดำเนินการสำหรับ Agent

ฟิลด์
id string

ต้องระบุ เอาต์พุตเท่านั้น รหัสของสภาพแวดล้อม

sources[] object (Source)

แหล่งข้อมูลที่จะต่อเชื่อมเข้ากับสภาพแวดล้อม

created string

เอาต์พุตเท่านั้น เวลาที่สร้างสภาพแวดล้อมในรูปแบบ ISO 8601 (YYYY-MM-DDThh:mm:ssZ)

updated string

เอาต์พุตเท่านั้น เวลาที่อัปเดตสภาพแวดล้อมล่าสุดในรูปแบบ ISO 8601 (YYYY-MM-DDThh:mm:ssZ)

lastAccessed string

เอาต์พุตเท่านั้น เวลาที่มีการเข้าถึงสภาพแวดล้อมครั้งล่าสุดในรูปแบบ ISO 8601 (YYYY-MM-DDThh:mm:ssZ)

status enum (Status)

เอาต์พุตเท่านั้น สถานะของคอนเทนเนอร์สภาพแวดล้อม

fileCount string (int64 format)

เอาต์พุตเท่านั้น จำนวนไฟล์ในสภาพแวดล้อม เอาต์พุตเท่านั้น

sizeBytes string (int64 format)

เอาต์พุตเท่านั้น ขนาดรวมของไฟล์สภาพแวดล้อมในหน่วยไบต์ เอาต์พุตเท่านั้น

network Union type
การกำหนดค่าเครือข่ายสำหรับสภาพแวดล้อม ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
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
}

สถานะ

สถานะของสภาพแวดล้อม

Enum
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

โหมดขาออกของเครือข่ายสำหรับการกำหนดค่าที่ไม่อยู่ในรายการที่อนุญาต

Enum
NETWORK_MODE_UNSPECIFIED ค่าเริ่มต้น ไม่ได้ใช้
DISABLED การส่งข้อมูลขาออกทั้งหมดของเครือข่ายถูกบล็อก

สคีมา

ออบเจ็กต์ Schema ช่วยให้สามารถกำหนดประเภทข้อมูลอินพุตและเอาต์พุตได้ ประเภทเหล่านี้อาจเป็นออบเจ็กต์ รวมถึงค่าพื้นฐานและอาร์เรย์ แสดงชุดย่อยที่เลือกของออบเจ็กต์สคีมา OpenAPI 3.0

ฟิลด์
type enum (Type)

ต้องระบุ ประเภทข้อมูล

format string

ไม่บังคับ รูปแบบของข้อมูล อนุญาตให้ใช้ค่าใดก็ได้ แต่ส่วนใหญ่จะไม่ทริกเกอร์ฟังก์ชันพิเศษใดๆ

title string

ไม่บังคับ ชื่อของสคีมา

description string

ไม่บังคับ คำอธิบายสั้นๆ เกี่ยวกับพารามิเตอร์ ข้อมูลนี้อาจมีตัวอย่างการใช้งาน คำอธิบายพารามิเตอร์อาจจัดรูปแบบเป็นมาร์กดาวน์

nullable boolean

ไม่บังคับ ระบุว่าค่าอาจเป็น Null หรือไม่

enum[] string

ไม่บังคับ ค่าที่เป็นไปได้ขององค์ประกอบ Type.STRING ที่มีรูปแบบ enum เช่น เราสามารถกำหนดทิศทาง Enum เป็น {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

ไม่บังคับ จำนวนองค์ประกอบสูงสุดสำหรับ Type.ARRAY

minItems string (int64 format)

ไม่บังคับ จำนวนองค์ประกอบขั้นต่ำสำหรับ Type.ARRAY

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

ไม่บังคับ พร็อพเพอร์ตี้ของ 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 ความยาวขั้นต่ำของ Type.STRING

maxLength string (int64 format)

ไม่บังคับ ความยาวสูงสุดของ Type.STRING

pattern string

ไม่บังคับ รูปแบบของ Type.STRING เพื่อจำกัดสตริงให้เป็นนิพจน์ทั่วไป

example value (Value format)

ไม่บังคับ ตัวอย่างของวัตถุ จะป้อนข้อมูลเมื่อออบเจ็กต์เป็นรูทเท่านั้น

anyOf[] object (Schema)

ไม่บังคับ ควรตรวจสอบค่าเทียบกับสคีมาย่อย (อย่างน้อย 1 รายการ) ในรายการ

propertyOrdering[] string

ไม่บังคับ ลำดับของพร็อพเพอร์ตี้ ไม่ใช่ช่องมาตรฐานในข้อกำหนด OpenAPI ใช้เพื่อกำหนดลำดับของพร็อพเพอร์ตี้ในการตอบกลับ

default value (Value format)

ไม่บังคับ ค่าเริ่มต้นของช่อง ตามสคีมา JSON ฟิลด์นี้มีไว้สำหรับเครื่องมือสร้างเอกสารและไม่มีผลต่อการตรวจสอบความถูกต้อง ดังนั้นจึงรวมไว้ที่นี่และละเว้นเพื่อให้นักพัฒนาแอปที่ส่งสคีมาที่มีฟิลด์ default ไม่ได้รับข้อผิดพลาดเกี่ยวกับฟิลด์ที่ไม่รู้จัก

items object (Schema)

ไม่บังคับ สคีมาขององค์ประกอบของ Type.ARRAY

minimum number

ไม่บังคับ SCHEMA FIELDS FOR TYPE INTEGER and 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

Enum
TYPE_UNSPECIFIED ไม่ได้ระบุ ไม่ควรใช้
STRING ประเภทสตริง
NUMBER ประเภทตัวเลข
INTEGER ประเภทจำนวนเต็ม
BOOLEAN ประเภทบูลีน
ARRAY ประเภทอาร์เรย์
OBJECT ประเภทของออบเจ็กต์
NULL ประเภท Null

เครื่องมือ

รายละเอียดเครื่องมือที่โมเดลอาจใช้เพื่อสร้างคำตอบ

Tool คือโค้ดที่ช่วยให้ระบบโต้ตอบกับระบบภายนอกเพื่อดำเนินการอย่างใดอย่างหนึ่งหรือชุดการดำเนินการที่อยู่นอกเหนือความรู้และขอบเขตของโมเดล

ฟิลด์
functionDeclarations[] object (FunctionDeclaration)

ไม่บังคับ รายการ FunctionDeclarations ที่โมเดลสามารถใช้สำหรับการเรียกใช้ฟังก์ชันได้

โมเดลหรือระบบไม่เรียกใช้ฟังก์ชัน แต่ระบบอาจแสดงผลฟังก์ชันที่กำหนดเป็น FunctionCall พร้อมอาร์กิวเมนต์ไปยังฝั่งไคลเอ็นต์เพื่อดำเนินการแทน โมเดลอาจตัดสินใจเรียกใช้ชุดย่อยของฟังก์ชันเหล่านี้โดยป้อนข้อมูล FunctionCall ในการตอบกลับ เทิร์นการสนทนาถัดไปอาจมี FunctionResponse ที่มีบริบทการสร้าง "ฟังก์ชัน" Content.role สำหรับเทิร์นโมเดลถัดไป

googleSearchRetrieval object (GoogleSearchRetrieval)

ไม่บังคับ เครื่องมือดึงข้อมูลที่ขับเคลื่อนโดย Google Search

codeExecution object (CodeExecution)

ไม่บังคับ ช่วยให้โมเดลเรียกใช้โค้ดเป็นส่วนหนึ่งของการสร้างได้

computerUse object (ComputerUse)

ไม่บังคับ เครื่องมือสำหรับรองรับโมเดลที่โต้ตอบกับคอมพิวเตอร์โดยตรง หากเปิดใช้ ระบบจะป้อนการประกาศฟังก์ชันเฉพาะสำหรับการใช้คอมพิวเตอร์โดยอัตโนมัติ

urlContext object (UrlContext)

ไม่บังคับ เครื่องมือที่รองรับการดึงข้อมูลบริบท URL

mcpServers[] object (McpServer)

ไม่บังคับ เซิร์ฟเวอร์ MCP ที่จะเชื่อมต่อ

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

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

โหมด

โหมดของตัวคาดการณ์ที่จะใช้ในการดึงข้อมูลแบบไดนามิก

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

ไม่บังคับ จุดเริ่มต้นของช่วงเวลา (รวมวันที่เริ่มต้น)

หากมีการระบุ การประทับเวลาที่ตรงกับช่วงเวลานี้จะต้องเป็นเวลาเดียวกันหรือหลังจากเวลาเริ่มต้น

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

endTime string (Timestamp format)

ไม่บังคับ จุดสิ้นสุดของช่วงเวลา (ไม่รวมวันที่สิ้นสุด)

หากระบุไว้ การประทับเวลาที่ตรงกับช่วงเวลานี้จะต้องอยู่ก่อนสิ้นสุด

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

การแสดง JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

การค้นหาประเภทต่างๆ ที่เปิดใช้ได้ในเครื่องมือ GoogleSearch

ฟิลด์
การแสดง JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

ประเภทนี้ไม่มีช่อง

การค้นเว็บมาตรฐานสำหรับการอ้างอิงข้อมูลและการกำหนดค่าที่เกี่ยวข้อง

ImageSearch

ประเภทนี้ไม่มีช่อง

การค้นหารูปภาพสำหรับการอ้างอิงข้อมูลและการกำหนดค่าที่เกี่ยวข้อง

ComputerUse

ประเภทเครื่องมือการใช้คอมพิวเตอร์

ฟิลด์
environment enum (Environment)

ต้องระบุ สภาพแวดล้อมที่ใช้งานอยู่

excludedPredefinedFunctions[] string

ไม่บังคับ โดยค่าเริ่มต้น ระบบจะรวมฟังก์ชันที่กำหนดไว้ล่วงหน้าไว้ในการเรียกใช้โมเดลขั้นสุดท้าย คุณสามารถยกเว้นบางรายการไม่ให้รวมโดยอัตโนมัติได้อย่างชัดเจน ซึ่งมีวัตถุประสงค์ 2 ประการ ได้แก่ 1. ใช้พื้นที่การดำเนินการที่จำกัดมากขึ้น / แตกต่างออกไป 2. ปรับปรุงคำจำกัดความ / วิธีการของฟังก์ชันที่กำหนดไว้ล่วงหน้า

enablePromptInjectionDetection boolean

ไม่บังคับ เปิดใช้การตรวจสอบการตรวจจับการแทรกพรอมต์ในคำขอใช้คอมพิวเตอร์หรือไม่

disabledSafetyPolicies[] enum (SafetyPolicy)

ไม่บังคับ นโยบายความปลอดภัยที่ปิดใช้สำหรับการใช้คอมพิวเตอร์

การแสดง JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

สภาพแวดล้อม

แสดงถึงสภาพแวดล้อมที่กำลังทำงานอยู่ เช่น เว็บเบราว์เซอร์

Enum
ENVIRONMENT_UNSPECIFIED ค่าเริ่มต้นคือเบราว์เซอร์
ENVIRONMENT_BROWSER ทำงานในเว็บเบราว์เซอร์
ENVIRONMENT_MOBILE ทำงานในสภาพแวดล้อมอุปกรณ์เคลื่อนที่
ENVIRONMENT_DESKTOP ทำงานในสภาพแวดล้อมเดสก์ท็อป

SafetyPolicy

นโยบายความปลอดภัยที่กำหนดไว้ล่วงหน้าสำหรับการใช้คอมพิวเตอร์

Enum
SAFETY_POLICY_UNSPECIFIED นโยบายความปลอดภัยที่ไม่ได้ระบุ
FINANCIAL_TRANSACTIONS นโยบายความปลอดภัยสำหรับธุรกรรมทางการเงิน
SENSITIVE_DATA_MODIFICATION นโยบายความปลอดภัยสำหรับการแก้ไขข้อมูลที่ละเอียดอ่อน
COMMUNICATION_TOOL นโยบายความปลอดภัยสำหรับเครื่องมือสื่อสาร (เช่น Gmail, Chat, Meet)
ACCOUNT_CREATION นโยบายความปลอดภัยสำหรับการสร้างบัญชี
DATA_MODIFICATION นโยบายความปลอดภัยสำหรับการแก้ไขข้อมูล
LEGAL_TERMS_AND_AGREEMENTS นโยบายความปลอดภัยสำหรับข้อกำหนดและข้อตกลงทางกฎหมาย

UrlContext

ประเภทนี้ไม่มีช่อง

เครื่องมือที่รองรับการดึงข้อมูลบริบท URL

FileSearch

เครื่องมือ FileSearch ที่ดึงข้อมูลความรู้จากคลังข้อมูล Semantic Retrieval ระบบจะนำเข้าไฟล์ไปยังคลังข้อมูล Semantic Retrieval โดยใช้ ImportFile API

ฟิลด์
fileSearchStoreNames[] string

ต้องระบุ ชื่อของ fileSearchStores ที่จะดึงข้อมูล ตัวอย่าง: fileSearchStores/my-file-search-store-123

metadataFilter string

ไม่บังคับ ตัวกรองข้อมูลเมตาที่จะใช้กับเอกสารและกลุ่มข้อมูลการดึงข้อมูลเชิงความหมาย

topK integer

ไม่บังคับ จำนวนกลุ่มการดึงข้อมูลเชิงความหมายที่จะดึงข้อมูล

การแสดง JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCPServer คือเซิร์ฟเวอร์ที่โมเดลสามารถเรียกใช้เพื่อดำเนินการต่างๆ ได้ เซิร์ฟเวอร์นี้เป็นเซิร์ฟเวอร์ที่ใช้โปรโตคอล MCP

ฟิลด์
name string

ชื่อของ MCPServer

transport Union type
การรับส่งข้อมูลที่จะใช้เพื่อเชื่อมต่อกับ MCPServer ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
streamableHttpTransport object (StreamableHttpTransport)

การรับส่งข้อมูลที่สามารถสตรีมคำขอและการตอบกลับ HTTP

สิ้นสุดฟิลด์ที่แยกกัน
การแสดง JSON
{
  "name": string,

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

StreamableHttpTransport

การรับส่งข้อมูลที่สามารถสตรีมคำขอและการตอบกลับ HTTP

ฟิลด์
url string

URL แบบเต็มสำหรับปลายทาง MCPServer ตัวอย่างเช่น "https://api.example.com/mcp"

headers map (key: string, value: string)

ไม่บังคับ: ช่องสำหรับส่วนหัวการตรวจสอบสิทธิ์ ระยะหมดเวลา ฯลฯ หากจำเป็น

ออบเจ็กต์ที่มีรายการคู่ "key": value เช่น { "name": "wrench", "mass": "1.3kg", "count": "3" }

timeout string (Duration format)

หมดเวลา HTTP สำหรับการดำเนินการตามปกติ

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมสูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

sseReadTimeout string (Duration format)

หมดเวลาสำหรับการดำเนินการอ่าน SSE

ระยะเวลาเป็นวินาทีที่มีเศษทศนิยมสูงสุด 9 หลัก โดยลงท้ายด้วย "s" เช่น "3.5s"

terminateOnClose boolean

เลือกว่าจะปิดเซสชันไคลเอ็นต์เมื่อปิดการรับส่งหรือไม่

การแสดง JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

เครื่องมือ Google Maps ที่ให้บริบทเชิงพื้นที่และภูมิศาสตร์สำหรับคำค้นหาของผู้ใช้

ฟิลด์
enableWidget boolean

ไม่บังคับ เลือกว่าจะแสดงผลโทเค็นบริบทวิดเจ็ตใน GroundingMetadata ของการตอบกลับหรือไม่ นักพัฒนาแอปสามารถใช้โทเค็นบริบทวิดเจ็ตเพื่อแสดงผลวิดเจ็ต Google Maps ที่มีบริบทเชิงพื้นที่ซึ่งเกี่ยวข้องกับสถานที่ที่โมเดลอ้างอิงในคำตอบ

การแสดง JSON
{
  "enableWidget": boolean
}

ทรัพยากร REST: auth_tokens

แหล่งข้อมูล: AuthToken

คำขอสร้างโทเค็นการตรวจสอบสิทธิ์ชั่วคราว

ฟิลด์
name string

เอาต์พุตเท่านั้น ตัวระบุ ตัวโทเค็นเอง

expireTime string (Timestamp format)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาที่ไม่บังคับซึ่งหลังจากนั้น เมื่อใช้โทเค็นที่ได้ ข้อความในเซสชัน BidiGenerateContent จะถูกปฏิเสธ (Gemini อาจปิดเซสชันก่อนเวลาหลังจากนี้)

หากไม่ได้ตั้งค่า ระบบจะใช้ค่าเริ่มต้นเป็น 30 นาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

newSessionExpireTime string (Timestamp format)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาที่เซสชัน Live API ใหม่ซึ่งใช้โทเค็นที่ได้จากคำขอนี้จะถูกปฏิเสธ

หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ค่าเริ่มต้นเป็น 60 วินาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

fieldMask string (FieldMask format)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ หาก fieldMask ว่างเปล่า และไม่มี bidiGenerateContentSetup ระบบจะนำข้อความ BidiGenerateContentSetup ที่มีผลมาจาก Live API Connection

หาก fieldMask ว่างเปล่า และมี bidiGenerateContentSetup อยู่ ระบบจะนำข้อความ BidiGenerateContentSetup ที่มีผลทั้งหมดมาจาก bidiGenerateContentSetup ในคำขอนี้ ระบบจะละเว้นข้อความการตั้งค่าจากการเชื่อมต่อ Live API

หาก fieldMask ไม่ว่างเปล่า ช่องที่เกี่ยวข้องจาก bidiGenerateContentSetup จะเขียนทับช่องจากข้อความการตั้งค่าในการเชื่อมต่อ Live API

ซึ่งเป็นรายการชื่อฟิลด์ที่สมบูรณ์ในตัวเองและคั่นด้วยคอมมา ตัวอย่าง: "user.displayName,photo"

config Union type
การกำหนดค่าเฉพาะเมธอดสำหรับโทเค็นที่ได้ ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
bidiGenerateContentSetup object (BidiGenerateContentSetup)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ การกำหนดค่าเฉพาะสำหรับ BidiGenerateContent

สิ้นสุดฟิลด์ที่แยกกัน
uses integer

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ จำนวนครั้งที่ใช้โทเค็นได้ หากค่านี้เป็น 0 แสดงว่าไม่มีการจำกัด การกลับมาใช้เซสชัน Live API อีกครั้งจะไม่นับเป็นการใช้งาน หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 1

การแสดง JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

ข้อความที่จะส่งใน BidiGenerateContentClientMessage แรก (และใน แรกเท่านั้น) มีการกำหนดค่าที่จะใช้ตลอดระยะเวลาของ RPC สตรีมมิง

ไคลเอ็นต์ควรรอข้อความ 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)

ไม่บังคับ ป้ายกำกับที่มีข้อมูลเมตาที่ผู้ใช้กำหนดสำหรับคำขอ

ไม่บังคับ ป้ายกำกับต้องเป็นไปตามข้อกำหนดของป้ายกำกับ Cloud แบบรวมมาตรฐาน ดังนี้ - คีย์ป้ายกำกับต้องขึ้นต้นด้วยตัวอักษร - คีย์และค่าของป้ายกำกับต้องมีความยาวไม่เกิน 63 อักขระ (จุดโค้ด Unicode) โดยต้องมีเฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น - อนุญาตให้ใช้อักขระสากล

การใช้งาน: - ตัวระบุความปลอดภัยจากผู้รวบรวมข้อมูล: ใช้คีย์ 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

ไม่บังคับ ชุดลำดับอักขระ (สูงสุด 5 รายการ) ที่จะหยุดการสร้างเอาต์พุต หากระบุไว้ API จะหยุดเมื่อพบ stop_sequence เป็นครั้งแรก ลำดับการหยุดจะไม่รวมเป็นส่วนหนึ่งของคำตอบ

responseMimeType string

ไม่บังคับ ประเภท MIME ของข้อความที่เป็นไปได้ที่สร้างขึ้น ประเภท MIME ที่รองรับ ได้แก่ text/plain: (ค่าเริ่มต้น) เอาต์พุตข้อความ application/json: การตอบกลับ JSON ในรายการคำตอบที่เป็นไปได้ text/x.enum: ENUM เป็นการตอบกลับสตริงในตัวเลือกคำตอบ ดูรายการประเภท MIME ของข้อความที่รองรับทั้งหมดได้ในเอกสารประกอบ

responseSchema
(deprecated)
object (Schema)

ไม่บังคับ สคีมาเอาต์พุตของข้อความที่เป็นไปได้ที่สร้างขึ้น สคีมาต้องเป็นชุดย่อยของสคีมา OpenAPI และอาจเป็นออบเจ็กต์ ข้อมูลพื้นฐาน หรืออาร์เรย์ก็ได้

หากตั้งค่าไว้ คุณต้องตั้งค่า responseMimeType ที่เข้ากันได้ด้วย ประเภท MIME ที่เข้ากันได้: application/json: สคีมาสำหรับการตอบกลับ JSON ดูรายละเอียดเพิ่มเติมได้ที่คู่มือการสร้างข้อความ JSON

เลิกใช้งานแล้ว โปรดใช้ responseFormat แทน

_responseJsonSchema
(deprecated)
value (Value format)

ไม่บังคับ สคีมาเอาต์พุตของคำตอบที่สร้างขึ้น ซึ่งเป็นทางเลือกแทน responseSchema ที่ยอมรับ JSON Schema

หากตั้งค่าไว้ ต้องละเว้น 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 ที่ไม่ใช่มาตรฐานได้ด้วย

การอ้างอิงแบบวนซ้ำจะถูกคลี่ออกในระดับที่จำกัด ดังนั้นจึงใช้ได้เฉพาะภายในพร็อพเพอร์ตี้ที่ไม่จำเป็นเท่านั้น (พร็อพเพอร์ตี้ที่อนุญาตค่า Null ไม่เพียงพอ) หากตั้งค่า $ref ในสคีมาย่อย จะตั้งค่าพร็อพเพอร์ตี้อื่นๆ ไม่ได้ ยกเว้นพร็อพเพอร์ตี้ที่ขึ้นต้นด้วย $

เลิกใช้งานแล้ว โปรดใช้ responseFormat แทน

responseJsonSchema value (Value format)

ไม่บังคับ รายละเอียดภายใน ใช้ responseJsonSchema แทนฟิลด์นี้

responseModalities[] enum (Modality)

ไม่บังคับ รูปแบบที่ขอของคำตอบ แสดงชุดรูปแบบที่โมเดลสามารถแสดงผลได้ และควรคาดหวังในการตอบกลับ ซึ่งตรงกับรูปแบบของคำตอบทุกประการ

โมเดลอาจมีรูปแบบที่รองรับหลายรูปแบบรวมกัน หากโมดัลลิตีที่ขอไม่ตรงกับชุดค่าผสมที่รองรับ ระบบจะแสดงข้อผิดพลาด

รายการที่ว่างเปล่าจะเทียบเท่ากับการขอเฉพาะข้อความเท่านั้น

candidateCount integer

ไม่บังคับ จำนวนคำตอบที่สร้างขึ้นที่จะแสดงผล หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ค่าเริ่มต้นเป็น 1 โปรดทราบว่าฟีเจอร์นี้ใช้ไม่ได้กับโมเดลรุ่นก่อนหน้า (ตระกูล Gemini 1.0)

maxOutputTokens integer

ไม่บังคับ จำนวนโทเค็นสูงสุดที่จะรวมไว้ในคำตอบที่เป็นไปได้

หมายเหตุ: ค่าเริ่มต้นจะแตกต่างกันไปตามโมเดล โปรดดูแอตทริบิวต์ Model.output_token_limit ของ Model ที่แสดงผลจากฟังก์ชัน getModel

temperature number

ไม่บังคับ ควบคุมความสุ่มของเอาต์พุต

หมายเหตุ: ค่าเริ่มต้นจะแตกต่างกันไปตามโมเดล โปรดดูแอตทริบิวต์ Model.temperature ของ Model ที่แสดงผลจากฟังก์ชัน getModel

ค่าอาจอยู่ในช่วง [0.0, 2.0]

ระบบไม่รองรับช่องนี้แล้ว และจะละเว้นช่องนี้โดยไม่มีการแจ้งเตือนใน Gemini 3.6 Flash และโมเดลที่ใหม่กว่า

topP number

ไม่บังคับ ความน่าจะเป็นสะสมสูงสุดของโทเค็นที่ต้องพิจารณาเมื่อสุ่มตัวอย่าง

โมเดลนี้ใช้การสุ่มตัวอย่างแบบ Top-k และ Top-p (Nucleus) ร่วมกัน

ระบบจะจัดเรียงโทเค็นตามความน่าจะเป็นที่กำหนดไว้ เพื่อให้พิจารณาเฉพาะโทเค็นที่มีแนวโน้มมากที่สุดเท่านั้น การสุ่มตัวอย่างแบบ Top-K จะจำกัดจำนวนโทเค็นสูงสุดที่จะพิจารณาโดยตรง ส่วนการสุ่มตัวอย่างแบบนิวเคลียสจะจำกัดจำนวนโทเค็นตามความน่าจะเป็นสะสม

หมายเหตุ: ค่าเริ่มต้นจะแตกต่างกันไปตาม Model และระบุโดยแอตทริบิวต์ Model.top_p ที่แสดงผลจากฟังก์ชัน getModel แอตทริบิวต์ topK ที่ว่างเปล่าบ่งบอกว่าโมเดลไม่ได้ใช้การสุ่มตัวอย่าง Top-K และไม่อนุญาตให้ตั้งค่า topK ในคำขอ

ระบบไม่รองรับช่องนี้แล้ว และจะละเว้นช่องนี้โดยไม่มีการแจ้งเตือนใน Gemini 3.6 Flash และโมเดลที่ใหม่กว่า

topK integer

ไม่บังคับ จำนวนโทเค็นสูงสุดที่ต้องพิจารณาเมื่อสุ่มตัวอย่าง

โมเดล Gemini ใช้การสุ่มตัวอย่าง Top-p (นิวเคลียส) หรือการสุ่มตัวอย่าง Top-k และนิวเคลียสร่วมกัน การสุ่มตัวอย่าง Top-k จะพิจารณาชุดโทเค็นที่มีแนวโน้มมากที่สุด topK รายการ โมเดลที่ทำงานด้วยการสุ่มแบบนิวเคลียสจะไม่อนุญาตให้ตั้งค่า topK

หมายเหตุ: ค่าเริ่มต้นจะแตกต่างกันไปตาม Model และระบุโดยแอตทริบิวต์ Model.top_p ที่แสดงผลจากฟังก์ชัน getModel แอตทริบิวต์ topK ที่ว่างเปล่าบ่งบอกว่าโมเดลไม่ได้ใช้การสุ่มตัวอย่าง Top-K และไม่อนุญาตให้ตั้งค่า topK ในคำขอ

ระบบไม่รองรับช่องนี้แล้ว และจะละเว้นช่องนี้โดยไม่มีการแจ้งเตือนใน Gemini 3.6 Flash และโมเดลที่ใหม่กว่า

seed integer

ไม่บังคับ Seed ที่ใช้ในการถอดรหัส หากไม่ได้ตั้งค่า คำขอจะใช้ Seed ที่สร้างขึ้นแบบสุ่ม

presencePenalty number

ไม่บังคับ ค่าปรับการมีอยู่จะใช้กับ logprob ของโทเค็นถัดไปหากเห็นโทเค็นนั้นในคำตอบแล้ว

บทลงโทษนี้เป็นแบบไบนารีเปิด/ปิด และไม่ขึ้นอยู่กับจำนวนครั้งที่ใช้โทเค็น (หลังจากครั้งแรก) ใช้ frequencyPenalty สำหรับบทลงโทษที่เพิ่มขึ้นตามการใช้งานแต่ละครั้ง

ค่าปรับที่เป็นบวกจะลดการใช้โทเค็นที่ใช้ไปแล้วในคำตอบ ซึ่งจะช่วยเพิ่มคำศัพท์

ค่าปรับเชิงลบจะกระตุ้นให้ใช้โทเค็นที่ใช้ไปแล้วในการตอบกลับ ซึ่งจะลดคำศัพท์ลง

frequencyPenalty number

ไม่บังคับ การลงโทษความถี่ที่ใช้กับ logprobs ของโทเค็นถัดไป คูณด้วยจำนวนครั้งที่เห็นโทเค็นแต่ละรายการในการตอบกลับจนถึงตอนนี้

ค่าปรับเชิงบวกจะลดการใช้โทเค็นที่ใช้ไปแล้ว โดยแปรผันตามจำนวนครั้งที่ใช้โทเค็นนั้น ยิ่งใช้โทเค็นมากเท่าใด โมเดลก็จะใช้โทเค็นนั้นอีกครั้งได้ยากขึ้นเท่านั้น ซึ่งจะช่วยเพิ่มคำศัพท์ของคำตอบ

ข้อควรระวัง: การลงโทษเชิงลบจะกระตุ้นให้โมเดลใช้โทเค็นซ้ำตามสัดส่วนจำนวนครั้งที่ใช้โทเค็น ค่าลบเล็กน้อยจะลดคำศัพท์ของคำตอบ ค่าลบที่มากกว่าจะทำให้โมเดลเริ่มพูดซ้ำโทเค็นทั่วไปจนกว่าจะถึงขีดจำกัด maxOutputTokens

responseLogprobs boolean

ไม่บังคับ หากเป็นจริง ให้ส่งออกผลลัพธ์ logprobs ในการตอบกลับ

logprobs integer

ไม่บังคับ ใช้ได้เฉพาะในกรณีที่ responseLogprobs=True เท่านั้น ซึ่งจะกำหนดจำนวน Logprob อันดับสูงสุด รวมถึงตัวเลือกที่เลือก เพื่อแสดงผลในแต่ละขั้นตอนการถอดรหัสใน Candidate.logprobs_result ตัวเลขต้องอยู่ในช่วง [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)
  }
}

รูปแบบ

รูปแบบที่รองรับของคำตอบ

Enum
MODALITY_UNSPECIFIED ค่าเริ่มต้น
TEXT ระบุว่าโมเดลควรแสดงผลเป็นข้อความ
IMAGE ระบุว่าโมเดลควรแสดงผลรูปภาพ
AUDIO ระบุว่าโมเดลควรแสดงผลเป็นเสียง

SpeechConfig

การกำหนดค่าสำหรับการสร้างและการถอดเสียงคำพูด

ฟิลด์
voiceConfig object (VoiceConfig)

การกำหนดค่าในกรณีที่เอาต์พุตเป็นเสียงเดียว

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

ไม่บังคับ การกำหนดค่าสำหรับการตั้งค่าลำโพงหลายตัว โดยจะแยกกันกับช่อง voiceConfig

languageCode string

ไม่บังคับ รหัสภาษา BCP-47 ของ IETF ที่ผู้ใช้กำหนดค่าให้แอปใช้ ใช้สำหรับการจดจำเสียงและการสังเคราะห์เสียงพูด

ค่าที่ใช้ได้มีดังนี้ 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
การกำหนดค่าสำหรับลำโพงที่จะใช้ ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
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

ระบุว่าจะรวมความคิดไว้ในคำตอบหรือไม่ หากเป็นจริง ระบบจะแสดงผลความคิดเมื่อพร้อมใช้งานเท่านั้น

thinkingBudget integer

จำนวนโทเค็นความคิดที่โมเดลควรสร้าง

thinkingLevel enum (ThinkingLevel)

ไม่บังคับ ควบคุมความลึกสูงสุดของกระบวนการให้เหตุผลภายในของโมเดลก่อนที่จะสร้างคำตอบ ค่าเริ่มต้นจะขึ้นอยู่กับโมเดล ดูรายละเอียดเพิ่มเติมได้ในคู่มือระดับการคิด แนะนำสำหรับโมเดล Gemini 3 ขึ้นไป การใช้กับรุ่นก่อนหน้าจะทำให้เกิดข้อผิดพลาด

การแสดง JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

อนุญาตให้ผู้ใช้ระบุปริมาณการคิดโดยใช้ enum แทนงบประมาณจำนวนเต็ม

Enum
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

ความละเอียดของสื่อสำหรับสื่อที่ป้อน

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

ไม่บังคับ ประเภท MIME ของเอาต์พุตข้อความ

schema value (Value format)

ไม่บังคับ สคีมา JSON ที่เอาต์พุตควรเป็นไปตาม ใช้ได้เฉพาะเมื่อ mimeType เป็น APPLICATION_JSON

การแสดง JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

ประเภท MIME ที่รองรับสำหรับเอาต์พุตข้อความ

Enum
MIME_TYPE_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
APPLICATION_JSON รูปแบบเอาต์พุต JSON
TEXT_PLAIN รูปแบบเอาต์พุตข้อความธรรมดา

AudioResponseFormat

การกำหนดค่าสำหรับรูปแบบเอาต์พุตเสียง

ฟิลด์
mimeType enum (MimeType)

ไม่บังคับ ประเภท MIME ของเอาต์พุตเสียง

delivery enum (Delivery)

ไม่บังคับ โหมดการนำส่งสำหรับเอาต์พุตเสียง

sampleRate integer

ไม่บังคับ อัตราการสุ่มตัวอย่างเป็น Hz

bitRate integer

ไม่บังคับ อัตราบิตเป็นบิตต่อวินาที (bps) ใช้ได้กับรูปแบบที่บีบอัด (MP3, Opus) เท่านั้น

การแสดง JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

ประเภท MIME ที่รองรับสำหรับเอาต์พุตเสียง

Enum
MIME_TYPE_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
AUDIO_MP3 รูปแบบเสียง MP3
AUDIO_OGG_OPUS รูปแบบเสียง OGG Opus
AUDIO_L16 รูปแบบเสียง PCM (L16) แบบข้อมูลดิบ
AUDIO_WAV รูปแบบเสียง WAV
AUDIO_ALAW รูปแบบเสียง A-law
AUDIO_MULAW รูปแบบเสียง Mu-law

บริการจัดส่ง

โหมดการนำส่งสำหรับเอาต์พุตเสียง

Enum
DELIVERY_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
INLINE ระบบจะแสดงข้อมูลเสียงในบรรทัดในคำตอบ
URI ระบบจะแสดงผลข้อมูลเสียงเป็น URI

ImageResponseFormat

การกำหนดค่าสำหรับรูปแบบเอาต์พุตรูปภาพ

ฟิลด์
mimeType enum (MimeType)

ไม่บังคับ ประเภท MIME ของเอาต์พุตรูปภาพ

delivery enum (Delivery)

ไม่บังคับ โหมดการแสดงผลสำหรับเอาต์พุตรูปภาพ

aspectRatio enum (AspectRatio)

ไม่บังคับ สัดส่วนภาพสำหรับเอาต์พุตรูปภาพ

imageSize enum (ImageSize)

ไม่บังคับ ขนาดของเอาต์พุตรูปภาพ

การแสดง JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

ประเภท MIME ที่รองรับสำหรับเอาต์พุตรูปภาพ

Enum
MIME_TYPE_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
IMAGE_JPEG รูปแบบรูปภาพ JPEG

บริการจัดส่ง

โหมดการนำส่งสำหรับเอาต์พุตรูปภาพ

Enum
DELIVERY_UNSPECIFIED ค่าเริ่มต้น ค่านี้ไม่ได้ใช้
INLINE ระบบจะแสดงข้อมูลรูปภาพในบรรทัดในคำตอบ
URI ระบบจะแสดงผลข้อมูลรูปภาพเป็น URI

AspectRatio

สัดส่วนภาพที่รองรับสำหรับเอาต์พุตรูปภาพ

Enum
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

ขนาดรูปภาพที่รองรับสำหรับเอาต์พุตที่เป็นรูปภาพ

Enum
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

ไม่บังคับ รายการวลีที่ใช้สำหรับการปรับคำพูด ซึ่งทำให้โมเดล ASR มีอคติเพื่อปรับปรุงการจดจำคำที่เฉพาะเจาะจงเหล่านี้

customVocabulary[] string

ไม่บังคับ รายการวลีคำศัพท์ที่กำหนดเองเพื่อให้น้ำหนักกับโมเดลการจดจำคำพูดในการจดจำคำที่เฉพาะเจาะจง (ชื่อสินค้า คำนามเฉพาะ ศัพท์เฉพาะ)

wordTimestamp boolean

ไม่บังคับ กำหนดค่าการสร้างการประทับเวลาระดับคำ

diarization boolean

ไม่บังคับ กำหนดค่าการแยกแยะเสียงผู้พูด

mode enum (Mode)

ไม่บังคับ กำหนดค่าโหมดการถอดเสียงเป็นคำ ค่าที่รองรับ: VERBATIM, SMART หากไม่ระบุ ค่าเริ่มต้นจะเป็นการถอดเสียงเป็นภาษาVERBATIM ในโหมดSMART โมเดลจะนำคำติดขัดออก (กำจัดคำพูดที่ไม่มีความหมาย การกล่าวซ้ำๆ และการเริ่มพูดผิด) ปรับแก้ไวยากรณ์เล็กน้อย จัดรูปแบบอัตโนมัติ (ย่อหน้า หัวข้อย่อย รายการที่เรียงลำดับเลข) และแก้ไขเล็กน้อยตามที่ผู้ใช้ต้องการ (การแก้ไขคำผิดในบรรทัด) การประทับเวลาและการแยกเสียงผู้พูดใช้ร่วมกับโหมด SMART ไม่ได้

language_config Union type
เลิกใช้งานแล้ว: โปรดใช้ language_codes ระดับบนสุดแทน ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
languageAuto
(deprecated)
object (LanguageAuto)

ไม่บังคับ โมเดลจะตรวจหาภาษาโดยอัตโนมัติ

languageHints
(deprecated)
object (LanguageHints)

ไม่บังคับ ระบุภาษาอย่างน้อย 1 ภาษาในเสียง

สิ้นสุดฟิลด์ที่แยกกัน
การแสดง 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
  ]
}

โหมด

โหมดการถอดเสียงเป็นคำ

Enum
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

กำหนดวิธีตรวจจับจุดเริ่มต้นของคำพูด

Enum
START_SENSITIVITY_UNSPECIFIED ค่าเริ่มต้นคือ START_SENSITIVITY_HIGH
START_SENSITIVITY_HIGH การตรวจหาอัตโนมัติจะตรวจหาจุดเริ่มต้นของคำพูดบ่อยขึ้น
START_SENSITIVITY_LOW การตรวจหาอัตโนมัติจะตรวจหาจุดเริ่มต้นของคำพูดน้อยลง

EndSensitivity

กำหนดวิธีตรวจจับจุดสิ้นสุดของคำพูด

Enum
END_SENSITIVITY_UNSPECIFIED ค่าเริ่มต้นคือ END_SENSITIVITY_HIGH
END_SENSITIVITY_HIGH การตรวจหาอัตโนมัติจะหยุดการพูดบ่อยขึ้น
END_SENSITIVITY_LOW การตรวจหาอัตโนมัติจะหยุดการพูดน้อยลง

ActivityHandling

วิธีต่างๆ ในการจัดการกิจกรรมของผู้ใช้

Enum
ACTIVITY_HANDLING_UNSPECIFIED หากไม่ได้ระบุ ลักษณะการทำงานเริ่มต้นจะเป็น START_OF_ACTIVITY_INTERRUPTS
START_OF_ACTIVITY_INTERRUPTS หากเป็นจริง การเริ่มต้นกิจกรรมจะขัดจังหวะการตอบสนองของโมเดล (หรือที่เรียกว่า "การแทรก") คำตอบปัจจุบันของโมเดลจะถูกตัดออกทันทีที่ถูกขัดจังหวะ นี่คือลักษณะการทำงานเริ่มต้น
NO_INTERRUPTION คำตอบของโมเดลจะไม่หยุดชะงัก

TurnCoverage

ตัวเลือกเกี่ยวกับอินพุตที่รวมอยู่ในเทิร์นของผู้ใช้

Enum
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
กลไกการบีบอัดหน้าต่างบริบทที่ใช้ ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
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 ชั่วโมงในอนาคต

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

newSessionExpireTime string (Timestamp format)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาที่เซสชัน Live API ใหม่ซึ่งใช้โทเค็นที่ได้จากคำขอนี้จะถูกปฏิเสธ

หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ค่าเริ่มต้นเป็น 60 วินาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต

ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30"

fieldMask string (FieldMask format)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ หาก fieldMask ว่างเปล่า และไม่มี bidiGenerateContentSetup ระบบจะนำข้อความ BidiGenerateContentSetup ที่มีผลมาจาก Live API Connection

หาก fieldMask ว่างเปล่า และมี bidiGenerateContentSetup อยู่ ระบบจะนำข้อความ BidiGenerateContentSetup ที่มีผลทั้งหมดมาจาก bidiGenerateContentSetup ในคำขอนี้ ระบบจะละเว้นข้อความการตั้งค่าจากการเชื่อมต่อ Live API

หาก fieldMask ไม่ว่างเปล่า ช่องที่เกี่ยวข้องจาก bidiGenerateContentSetup จะเขียนทับช่องจากข้อความการตั้งค่าในการเชื่อมต่อ Live API

ซึ่งเป็นรายการชื่อฟิลด์ที่สมบูรณ์ในตัวเองและคั่นด้วยคอมมา ตัวอย่าง: "user.displayName,photo"

config Union type
การกำหนดค่าเฉพาะเมธอดสำหรับโทเค็นที่ได้ ต่อไปนี้คือรายการช่องที่แยกกันโดยสิ้นเชิง ระบบจะตั้งค่าช่องอย่างน้อย 1 ช่องในการตอบกลับ ดังนี้
bidiGenerateContentSetup object (BidiGenerateContentSetup)

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ การกำหนดค่าเฉพาะสำหรับ BidiGenerateContent

สิ้นสุดฟิลด์ที่แยกกัน
uses integer

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ จำนวนครั้งที่ใช้โทเค็นได้ หากค่านี้เป็น 0 แสดงว่าไม่มีการจำกัด การกลับมาใช้เซสชัน Live API อีกครั้งจะไม่นับเป็นการใช้งาน หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 1

เนื้อหาการตอบกลับ

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีอินสแตนซ์ AuthToken ที่สร้างขึ้นใหม่