Generating content

Gemini API hỗ trợ tạo nội dung bằng hình ảnh, âm thanh, mã, công cụ và nhiều nội dung khác. Để biết thông tin chi tiết về từng tính năng này, hãy đọc tiếp và xem mã mẫu tập trung vào tác vụ hoặc đọc các hướng dẫn toàn diện.

Phương thức: models.generateContent

Tạo câu trả lời của mô hình dựa trên một GenerateContentRequest đầu vào. Hãy tham khảo hướng dẫn tạo văn bản để biết thông tin chi tiết về cách sử dụng. Khả năng nhập dữ liệu khác nhau giữa các mô hình, kể cả mô hình được điều chỉnh. Hãy tham khảo hướng dẫn về mô hìnhhướng dẫn điều chỉnh để biết thông tin chi tiết.

Điểm cuối

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

Tham số đường dẫn

model string

Bắt buộc. Tên của Model dùng để tạo câu hoàn chỉnh.

Định dạng: models/{model}. Tên này có dạng models/{model}.

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu với cấu trúc sau:

Trường
contents[] object (Content)

Bắt buộc. Nội dung của cuộc trò chuyện hiện tại với mô hình.

Đối với các cụm từ tìm kiếm một lượt, đây là một phiên bản duy nhất. Đối với các truy vấn nhiều lượt như chat, đây là một trường lặp lại chứa nhật ký trò chuyện và yêu cầu mới nhất.

tools[] object (Tool)

Không bắt buộc. Danh sách ToolsModel có thể dùng để tạo câu trả lời tiếp theo.

Tool là một đoạn mã cho phép hệ thống tương tác với các hệ thống bên ngoài để thực hiện một hành động hoặc một nhóm hành động nằm ngoài kiến thức và phạm vi của Model. Các Tool được hỗ trợ là FunctioncodeExecution. Hãy tham khảo hướng dẫn về Gọi hàmThực thi mã để tìm hiểu thêm.

toolConfig object (ToolConfig)

Không bắt buộc. Cấu hình công cụ cho mọi Tool được chỉ định trong yêu cầu. Hãy tham khảo Hướng dẫn gọi hàm để xem ví dụ về cách sử dụng.

safetySettings[] object (SafetySetting)

Không bắt buộc. Danh sách các thực thể SafetySetting riêng biệt để chặn nội dung không an toàn.

Quy định này sẽ được thực thi trên GenerateContentRequest.contentsGenerateContentResponse.candidates. Không được có nhiều hơn một chế độ cài đặt cho mỗi loại SafetyCategory. API sẽ chặn mọi nội dung và phản hồi không đáp ứng các ngưỡng do các chế độ cài đặt này đặt ra. Danh sách này sẽ ghi đè chế độ cài đặt mặc định cho từng SafetyCategory được chỉ định trong safetySettings. Nếu không có SafetySetting cho một SafetyCategory nhất định được cung cấp trong danh sách, thì API sẽ sử dụng chế độ cài đặt an toàn mặc định cho danh mục đó. Chúng tôi hỗ trợ các danh mục nội dung gây hại HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Hãy tham khảo hướng dẫn để biết thông tin chi tiết về các chế độ cài đặt an toàn hiện có. Bạn cũng có thể tham khảo Hướng dẫn về an toàn để tìm hiểu cách đưa các yếu tố an toàn vào ứng dụng AI của mình.

systemInstruction object (Content)

Không bắt buộc. Nhà phát triển đặt (các) chỉ dẫn hệ thống. Hiện tại, chỉ có văn bản.

generationConfig object (GenerationConfig)

Không bắt buộc. Các lựa chọn cấu hình để tạo mô hình và đầu ra.

cachedContent string

Không bắt buộc. Tên của nội dung được lưu vào bộ nhớ đệm để dùng làm bối cảnh phân phát thông tin dự đoán. Định dạng: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Không bắt buộc. Cấp dịch vụ của yêu cầu.

store boolean

Không bắt buộc. Định cấu hình hành vi ghi nhật ký cho một yêu cầu nhất định. Nếu được đặt, thì chế độ này sẽ được ưu tiên hơn cấu hình ghi nhật ký ở cấp dự án.

Ví dụ về yêu cầu

Văn bản

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.5-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.5-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.5-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

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.5-flash",
                "Write a story about a magic backpack.",
                null);

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

Hình ảnh

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.5-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.5-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.5-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# 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.5-flash", content, null);

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

Âm thanh

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.5-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.5-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.5-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# 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

Video

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.5-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.5-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.5-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# 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.5-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.5-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

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

Trò chuyện

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.5-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.5-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.5-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())

Shell

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

Bộ nhớ đệm

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.5-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.5-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.5-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)

Mô hình được tinh chỉnh

Python

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

Chế độ 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.5-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.5-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.5-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

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.5-flash",
                "List a few popular cookie recipes.",
                config);

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

Thực thi mã

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.5-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.5-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.5-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());

Gọi hàm

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.5-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.5-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.5-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.5-flash" });
  const chatResponse = await chat.sendMessage({
    message: "The final result is " + resultValue,
  });
  console.log(chatResponse.text);
  return chatResponse;
}

Shell


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

Cấu hình tạo

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.5-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.5-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.5-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)

Shell

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.5-flash",
                "Tell me a story about a magic backpack.",
                config);

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

Chế độ cài đặt về an toàn

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.5-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.5-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);
  return response;
}

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.5-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.")
}

Shell

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

Hướng dẫn về hệ thống

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.5-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.5-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.5-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

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.5-flash",
                "Good morning! How are you?",
                config);

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

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một thực thể của GenerateContentResponse.

Phương thức: models.streamGenerateContent

Tạo một phản hồi truyền trực tuyến từ mô hình dựa trên một GenerateContentRequest đầu vào.

Điểm cuối

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

Tham số đường dẫn

model string

Bắt buộc. Tên của Model dùng để tạo câu hoàn chỉnh.

Định dạng: models/{model}. Tên này có dạng models/{model}.

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu với cấu trúc sau:

Trường
contents[] object (Content)

Bắt buộc. Nội dung của cuộc trò chuyện hiện tại với mô hình.

Đối với các cụm từ tìm kiếm một lượt, đây là một phiên bản duy nhất. Đối với các truy vấn nhiều lượt như chat, đây là một trường lặp lại chứa nhật ký trò chuyện và yêu cầu mới nhất.

tools[] object (Tool)

Không bắt buộc. Danh sách ToolsModel có thể dùng để tạo câu trả lời tiếp theo.

Tool là một đoạn mã cho phép hệ thống tương tác với các hệ thống bên ngoài để thực hiện một hành động hoặc một nhóm hành động nằm ngoài kiến thức và phạm vi của Model. Các Tool được hỗ trợ là FunctioncodeExecution. Hãy tham khảo hướng dẫn về Gọi hàmThực thi mã để tìm hiểu thêm.

toolConfig object (ToolConfig)

Không bắt buộc. Cấu hình công cụ cho mọi Tool được chỉ định trong yêu cầu. Hãy tham khảo Hướng dẫn gọi hàm để xem ví dụ về cách sử dụng.

safetySettings[] object (SafetySetting)

Không bắt buộc. Danh sách các thực thể SafetySetting riêng biệt để chặn nội dung không an toàn.

Quy định này sẽ được thực thi trên GenerateContentRequest.contentsGenerateContentResponse.candidates. Không được có nhiều hơn một chế độ cài đặt cho mỗi loại SafetyCategory. API sẽ chặn mọi nội dung và phản hồi không đáp ứng các ngưỡng do các chế độ cài đặt này đặt ra. Danh sách này sẽ ghi đè chế độ cài đặt mặc định cho từng SafetyCategory được chỉ định trong safetySettings. Nếu không có SafetySetting cho một SafetyCategory nhất định được cung cấp trong danh sách, thì API sẽ sử dụng chế độ cài đặt an toàn mặc định cho danh mục đó. Chúng tôi hỗ trợ các danh mục nội dung gây hại HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Hãy tham khảo hướng dẫn để biết thông tin chi tiết về các chế độ cài đặt an toàn hiện có. Bạn cũng có thể tham khảo Hướng dẫn về an toàn để tìm hiểu cách đưa các yếu tố an toàn vào ứng dụng AI của mình.

systemInstruction object (Content)

Không bắt buộc. Nhà phát triển đặt (các) chỉ dẫn hệ thống. Hiện tại, chỉ có văn bản.

generationConfig object (GenerationConfig)

Không bắt buộc. Các lựa chọn cấu hình để tạo mô hình và đầu ra.

cachedContent string

Không bắt buộc. Tên của nội dung được lưu vào bộ nhớ đệm để dùng làm bối cảnh phân phát thông tin dự đoán. Định dạng: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Không bắt buộc. Cấp dịch vụ của yêu cầu.

store boolean

Không bắt buộc. Định cấu hình hành vi ghi nhật ký cho một yêu cầu nhất định. Nếu được đặt, thì chế độ này sẽ được ưu tiên hơn cấu hình ghi nhật ký ở cấp dự án.

Ví dụ về yêu cầu

Văn bản

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.5-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.5-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.5-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Shell

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

Hình ảnh

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.5-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.5-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.5-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Shell

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.5-flash",
                content,
                null);

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

responseStream.close();

Âm thanh

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.5-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.5-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

# 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

Video

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.5-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.5-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.5-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

# 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.5-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.5-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

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

Trò chuyện

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.5-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.5-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.5-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))

Shell

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"

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một luồng các thực thể GenerateContentResponse.

GenerateContentResponse

Phản hồi từ mô hình hỗ trợ nhiều phản hồi đề xuất.

Mức độ an toàn và bộ lọc nội dung được báo cáo cho cả câu lệnh trong GenerateContentResponse.prompt_feedback và cho từng đề xuất trong finishReason và trong safetyRatings. API này: – Trả về tất cả các đề xuất được yêu cầu hoặc không trả về đề xuất nào – Chỉ trả về không đề xuất nào nếu có vấn đề với câu lệnh (kiểm tra promptFeedback) – Báo cáo ý kiến phản hồi về từng đề xuất trong finishReasonsafetyRatings.

Trường
candidates[] object (Candidate)

Các câu trả lời đề xuất của mô hình.

promptFeedback object (PromptFeedback)

Trả về ý kiến phản hồi về câu lệnh liên quan đến bộ lọc nội dung.

usageMetadata object (UsageMetadata)

Chỉ có đầu ra. Siêu dữ liệu về mức sử dụng mã thông báo của các yêu cầu tạo.

modelVersion string

Chỉ có đầu ra. Phiên bản mô hình được dùng để tạo câu trả lời.

responseId string

Chỉ đầu ra. responseId dùng để xác định từng phản hồi.

modelStatus object (ModelStatus)

Chỉ có đầu ra. Trạng thái mô hình hiện tại của mô hình này.

Biểu diễn dưới dạng JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

Một tập hợp siêu dữ liệu phản hồi mà câu lệnh đã chỉ định trong GenerateContentRequest.content.

Trường
blockReason enum (BlockReason)

Không bắt buộc. Nếu được đặt, câu lệnh sẽ bị chặn và không có đề xuất nào được trả về. Diễn đạt lại câu lệnh.

safetyRatings[] object (SafetyRating)

Điểm xếp hạng về mức độ an toàn của câu lệnh. Mỗi danh mục chỉ có tối đa một điểm xếp hạng.

Biểu diễn dưới dạng JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

Nêu rõ lý do khiến câu lệnh bị chặn.

Enum
BLOCK_REASON_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
SAFETY Câu lệnh đã bị chặn vì lý do an toàn. Kiểm tra safetyRatings để biết danh mục an toàn nào đã chặn quảng cáo đó.
OTHER Câu lệnh bị chặn vì lý do không xác định.
BLOCKLIST Câu lệnh bị chặn do có các cụm từ trong danh sách chặn thuật ngữ.
PROHIBITED_CONTENT Câu lệnh bị chặn do có nội dung bị cấm.
IMAGE_SAFETY Ứng viên bị chặn do nội dung tạo hình ảnh không an toàn.

UsageMetadata

Siêu dữ liệu về mức sử dụng mã thông báo của yêu cầu tạo.

Trường
promptTokenCount integer

Số lượng mã thông báo trong câu lệnh. Khi cachedContent được đặt, đây vẫn là tổng kích thước hiệu quả của câu lệnh, tức là bao gồm cả số lượng mã thông báo trong nội dung được lưu vào bộ nhớ đệm.

cachedContentTokenCount integer

Số lượng mã thông báo trong phần được lưu vào bộ nhớ đệm của câu lệnh (nội dung được lưu vào bộ nhớ đệm)

candidatesTokenCount integer

Tổng số mã thông báo trong tất cả các đề xuất phản hồi được tạo.

toolUsePromptTokenCount integer

Chỉ có đầu ra. Số lượng mã thông báo có trong(các) câu lệnh sử dụng công cụ.

thoughtsTokenCount integer

Chỉ có đầu ra. Số lượng mã thông báo về suy nghĩ cho các mô hình tư duy.

totalTokenCount integer

Tổng số token cho yêu cầu tạo (câu lệnh + suy nghĩ + đề xuất phản hồi).

promptTokensDetails[] object (ModalityTokenCount)

Chỉ có đầu ra. Danh sách các phương thức đã được xử lý trong dữ liệu đầu vào của yêu cầu.

cacheTokensDetails[] object (ModalityTokenCount)

Chỉ có đầu ra. Danh sách các phương thức của nội dung được lưu vào bộ nhớ đệm trong dữ liệu đầu vào của yêu cầu.

candidatesTokensDetails[] object (ModalityTokenCount)

Chỉ có đầu ra. Danh sách các phương thức được trả về trong phản hồi.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Chỉ có đầu ra. Danh sách các phương thức đã được xử lý cho dữ liệu đầu vào của yêu cầu sử dụng công cụ.

serviceTier enum (ServiceTier)

Chỉ có đầu ra. Cấp dịch vụ của yêu cầu.

Biểu diễn dưới dạng 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

Trạng thái của mô hình cơ bản. Thông tin này được dùng để cho biết giai đoạn của mô hình cơ bản và thời gian ngừng hoạt động (nếu có).

Trường
modelStage enum (ModelStage)

Giai đoạn của mô hình cơ bản.

retirementTime string (Timestamp format)

Thời gian mô hình sẽ ngừng hoạt động.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

message string

Một thông báo giải thích trạng thái của mô hình.

Biểu diễn dưới dạng JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Xác định giai đoạn của mô hình cơ bản.

Enum
MODEL_STAGE_UNSPECIFIED Giai đoạn mô hình không xác định.
UNSTABLE_EXPERIMENTAL

Mô hình cơ bản phải trải qua nhiều quy trình điều chỉnh.

EXPERIMENTAL Các mô hình ở giai đoạn này chỉ nhằm mục đích thử nghiệm.
PREVIEW Các mô hình ở giai đoạn này hoàn thiện hơn so với các mô hình thử nghiệm.
STABLE Các mô hình ở giai đoạn này được coi là ổn định và sẵn sàng cho việc sử dụng trong môi trường phát hành chính thức.
LEGACY Nếu mô hình đang ở giai đoạn này, tức là mô hình này sắp bị ngừng cung cấp trong tương lai gần. Chỉ khách hàng hiện tại mới có thể sử dụng mô hình này.
DEPRECATED

Các mô hình ở giai đoạn này không được dùng nữa. Bạn không thể sử dụng các mô hình này.

RETIRED Các mô hình ở giai đoạn này sẽ ngừng hoạt động. Bạn không thể sử dụng các mô hình này.

Ứng viên

Một câu trả lời đề xuất do mô hình tạo ra.

Trường
content object (Content)

Chỉ có đầu ra. Nội dung được tạo do mô hình trả về.

finishReason enum (FinishReason)

Không bắt buộc. Chỉ có đầu ra. Lý do khiến mô hình ngừng tạo mã thông báo.

Nếu trống, tức là mô hình chưa dừng tạo mã thông báo.

safetyRatings[] object (SafetyRating)

Danh sách các điểm xếp hạng về mức độ an toàn của một câu trả lời đề xuất.

Mỗi danh mục chỉ có tối đa một điểm xếp hạng.

citationMetadata object (CitationMetadata)

Chỉ có đầu ra. Thông tin trích dẫn cho đề xuất do mô hình tạo.

Trường này có thể được điền thông tin đọc lại cho mọi văn bản có trong content. Đây là những đoạn văn được "trích dẫn" từ tài liệu có bản quyền trong dữ liệu huấn luyện của LLM cơ bản.

tokenCount integer

Chỉ có đầu ra. Số token cho đề xuất này.

groundingAttributions[] object (GroundingAttribution)

Chỉ có đầu ra. Thông tin ghi nhận quyền tác giả cho những nguồn đóng góp vào câu trả lời có căn cứ.

Trường này được điền sẵn cho các cuộc gọi GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Chỉ có đầu ra. Siêu dữ liệu cơ sở cho đề xuất.

Trường này được điền sẵn cho các cuộc gọi GenerateContent.

avgLogprobs number

Chỉ có đầu ra. Điểm xác suất trung bình của ứng viên.

logprobsResult object (LogprobsResult)

Chỉ có đầu ra. Điểm log-likelihood cho các mã thông báo phản hồi và mã thông báo hàng đầu

urlContextMetadata object (UrlContextMetadata)

Chỉ có đầu ra. Siêu dữ liệu liên quan đến công cụ truy xuất bối cảnh URL.

index integer

Chỉ có đầu ra. Chỉ mục của đề xuất trong danh sách đề xuất phản hồi.

finishMessage string

Không bắt buộc. Chỉ có đầu ra. Nêu chi tiết lý do khiến mô hình ngừng tạo mã thông báo. Tham số này chỉ được điền sẵn khi bạn đặt finishReason.

Biểu diễn dưới dạng 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)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

Xác định lý do khiến mô hình ngừng tạo mã thông báo.

Enum
FINISH_REASON_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
STOP Điểm dừng tự nhiên của mô hình hoặc chuỗi dừng được cung cấp.
MAX_TOKENS Đã đạt đến số lượng mã thông báo tối đa như được chỉ định trong yêu cầu.
SAFETY Nội dung đề xuất cho câu trả lời đã bị gắn cờ vì lý do an toàn.
RECITATION Nội dung đề xuất phản hồi đã bị gắn cờ vì lý do trích dẫn.
LANGUAGE Nội dung đề xuất phản hồi đã bị gắn cờ vì sử dụng ngôn ngữ không được hỗ trợ.
OTHER Lý do không xác định.
BLOCKLIST Quá trình tạo mã thông báo đã dừng lại vì nội dung chứa các cụm từ bị cấm.
PROHIBITED_CONTENT Ngừng tạo mã thông báo vì có thể chứa nội dung bị cấm.
SPII Quá trình tạo mã thông báo đã dừng vì nội dung có thể chứa Thông tin nhạy cảm có thể nhận dạng cá nhân (SPII).
MALFORMED_FUNCTION_CALL Lệnh gọi hàm do mô hình tạo ra không hợp lệ.
IMAGE_SAFETY Quá trình tạo mã thông báo đã dừng lại vì hình ảnh được tạo có chứa nội dung vi phạm an toàn.
IMAGE_PROHIBITED_CONTENT Đã dừng quá trình tạo hình ảnh vì hình ảnh được tạo có nội dung bị cấm khác.
IMAGE_OTHER Quá trình tạo hình ảnh đã dừng do một vấn đề khác.
NO_IMAGE Mô hình dự kiến sẽ tạo hình ảnh, nhưng không có hình ảnh nào được tạo.
IMAGE_RECITATION Đã dừng tạo hình ảnh do có nội dung đọc.
UNEXPECTED_TOOL_CALL Mô hình đã tạo một lệnh gọi công cụ nhưng không có công cụ nào được bật trong yêu cầu.
TOO_MANY_TOOL_CALLS Mô hình đã gọi quá nhiều công cụ liên tiếp, do đó hệ thống đã thoát khỏi quá trình thực thi.
MISSING_THOUGHT_SIGNATURE Yêu cầu thiếu ít nhất một chữ ký suy nghĩ.
MALFORMED_RESPONSE Đã hoàn tất do phản hồi không đúng định dạng.
ESCALATION Yêu cầu đã bị lọc theo một quy tắc chuyển yêu cầu lên cấp.

GroundingAttribution

Thông tin ghi nhận quyền tác giả cho một nguồn đã đóng góp vào câu trả lời.

Trường
sourceId object (AttributionSourceId)

Chỉ có đầu ra. Giá trị nhận dạng của nguồn đóng góp vào mô hình phân bổ này.

content object (Content)

Nội dung nguồn cơ bản tạo nên thông tin ghi nhận quyền tác giả này.

Biểu diễn dưới dạng JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

Giá trị nhận dạng của nguồn đóng góp vào mô hình phân bổ này.

Trường
source Union type
source chỉ có thể là một trong những trạng thái sau:
groundingPassage object (GroundingPassageId)

Giá trị nhận dạng cho một đoạn văn bản nội tuyến.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Giá trị nhận dạng cho một Chunk được tìm nạp thông qua Semantic Retriever.

Biểu diễn dưới dạng JSON
{

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

GroundingPassageId

Giá trị nhận dạng của một phần trong GroundingPassage.

Trường
passageId string

Chỉ có đầu ra. Mã nhận dạng của đoạn văn khớp với GroundingPassage.id của GenerateAnswerRequest.

partIndex integer

Chỉ có đầu ra. Chỉ mục của phần trong GroundingPassage.content của GenerateAnswerRequest.

Biểu diễn dưới dạng JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

Giá trị nhận dạng cho Chunk được truy xuất thông qua Semantic Retriever (Công cụ truy xuất ngữ nghĩa) được chỉ định trong GenerateAnswerRequest bằng cách sử dụng SemanticRetrieverConfig.

Trường
source string

Chỉ có đầu ra. Tên của nguồn khớp với SemanticRetrieverConfig.source của yêu cầu. Ví dụ: corpora/123 hoặc corpora/123/documents/abc

chunk string

Chỉ có đầu ra. Tên của Chunk chứa văn bản được ghi nhận quyền tác giả. Ví dụ: corpora/123/documents/abc/chunks/xyz

Biểu diễn dưới dạng JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Siêu dữ liệu được trả về cho ứng dụng khi tính năng căn cứ được bật.

Trường
groundingChunks[] object (GroundingChunk)

Danh sách các thông tin tham khảo hỗ trợ được truy xuất từ nguồn cơ sở được chỉ định. Khi phát trực tuyến, thông tin này chỉ chứa các đoạn cơ sở chưa được đưa vào siêu dữ liệu cơ sở của các phản hồi trước đó.

groundingSupports[] object (GroundingSupport)

Danh sách các thông tin hỗ trợ cơ sở.

webSearchQueries[] string

Cụm từ tìm kiếm trên web cho lượt tìm kiếm tiếp theo trên web.

imageSearchQueries[] string

Cụm từ tìm kiếm hình ảnh được dùng để làm cơ sở.

searchEntryPoint object (SearchEntryPoint)

Không bắt buộc. Mục nhập tìm kiếm trên Google cho các cụm từ tìm kiếm tiếp theo trên web.

retrievalMetadata object (RetrievalMetadata)

Siêu dữ liệu liên quan đến việc truy xuất trong quy trình cơ sở.

googleMapsWidgetContextToken string

Không bắt buộc. Tên tài nguyên của token ngữ cảnh tiện ích Google Maps có thể dùng với tiện ích PlacesContextElement để hiển thị dữ liệu theo bối cảnh. Chỉ được điền sẵn trong trường hợp bạn bật tính năng neo bám vào Google Maps.

Biểu diễn dưới dạng JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Điểm truy cập Google Tìm kiếm.

Trường
renderedContent string

Không bắt buộc. Đoạn nội dung web có thể được nhúng vào một trang web hoặc webview của ứng dụng.

sdkBlob string (bytes format)

Không bắt buộc. JSON được mã hoá Base64 đại diện cho mảng của bộ <cụm từ tìm kiếm, URL tìm kiếm>.

Một chuỗi được mã hoá base64.

Biểu diễn dưới dạng JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

GroundingChunk đại diện cho một đoạn bằng chứng hỗ trợ giúp mô hình đưa ra câu trả lời. Đó có thể là một đoạn thông tin trên web, một ngữ cảnh được truy xuất từ một tệp hoặc thông tin trên Google Maps.

Trường
chunk_type Union type
Loại phân đoạn. chunk_type chỉ có thể là một trong những trạng thái sau:
web object (Web)

Đoạn thông tin cơ sở từ web.

image object (Image)

Không bắt buộc. Đoạn văn bản cơ sở từ tính năng tìm kiếm hình ảnh.

retrievedContext object (RetrievedContext)

Không bắt buộc. Đoạn cơ sở từ ngữ cảnh do công cụ tìm kiếm tệp truy xuất.

maps object (Maps)

Không bắt buộc. Đoạn neo bám từ Google Maps.

Biểu diễn dưới dạng JSON
{

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

Web

Đoạn nội dung trên web.

Trường
uri string

Chỉ có đầu ra. Tham chiếu URI của đoạn.

title string

Chỉ có đầu ra. Tiêu đề của đoạn.

Biểu diễn dưới dạng JSON
{
  "uri": string,
  "title": string
}

Hình ảnh

Đoạn trích từ kết quả tìm kiếm hình ảnh.

Trường
sourceUri string

URI trang web để phân bổ.

imageUri string

URL của thành phần hình ảnh.

title string

Tiêu đề của trang web có chứa hình ảnh.

domain string

Tên miền gốc của trang web có chứa hình ảnh, ví dụ: "example.com".

Biểu diễn dưới dạng JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Đoạn trích từ ngữ cảnh do công cụ tìm kiếm tệp truy xuất.

Trường
customMetadata[] object (CustomMetadata)

Không bắt buộc. Siêu dữ liệu do người dùng cung cấp về ngữ cảnh đã truy xuất.

uri string

Không bắt buộc. URI tham chiếu của tài liệu truy xuất ngữ nghĩa.

title string

Không bắt buộc. Tiêu đề của tài liệu.

text string

Không bắt buộc. Văn bản của đoạn.

fileSearchStore string

Không bắt buộc. Tên của FileSearchStore chứa tài liệu. Ví dụ: fileSearchStores/123

pageNumber integer

Không bắt buộc. Số trang của ngữ cảnh được truy xuất (nếu có).

mediaId string

Không bắt buộc. Tên tài nguyên blob đa phương tiện cho kết quả tìm kiếm tệp đa phương thức. Định dạng: fileSearchStores/{file_search_store_id}/media/{blobId}

Biểu diễn dưới dạng JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

Siêu dữ liệu do người dùng cung cấp về GroundingFact.

Trường
key string

Khoá của siêu dữ liệu.

value Union type
Giá trị của siêu dữ liệu. Có thể là một chuỗi, danh sách chuỗi hoặc số. value chỉ có thể là một trong những trạng thái sau:
stringValue string

Không bắt buộc. Giá trị chuỗi của siêu dữ liệu.

stringListValue object (StringList)

Không bắt buộc. Danh sách các giá trị chuỗi cho siêu dữ liệu.

numericValue number

Không bắt buộc. Giá trị bằng số của siêu dữ liệu. Phạm vi dự kiến cho giá trị này phụ thuộc vào key cụ thể được dùng.

Biểu diễn dưới dạng JSON
{
  "key": string,

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

StringList

Danh sách các giá trị chuỗi.

Trường
values[] string

Các giá trị chuỗi của danh sách.

Biểu diễn dưới dạng JSON
{
  "values": [
    string
  ]
}

Maps

Một đoạn neo bám từ Google Maps. Một đoạn Maps tương ứng với một địa điểm duy nhất.

Trường
uri string

URI tham chiếu của địa điểm.

title string

Tên của địa điểm.

text string

Nội dung mô tả bằng văn bản về câu trả lời cho địa điểm.

placeId string

Mã nhận dạng của địa điểm, ở định dạng places/{placeId}. Người dùng có thể sử dụng mã nhận dạng này để tra cứu địa điểm đó.

placeAnswerSources object (PlaceAnswerSources)

Những nguồn cung cấp câu trả lời về các đặc điểm của một địa điểm cụ thể trong Google Maps.

Biểu diễn dưới dạng JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Tập hợp các nguồn cung cấp câu trả lời về các đặc điểm của một địa điểm cụ thể trong Google Maps. Mỗi thông báo PlaceAnswerSources tương ứng với một địa điểm cụ thể trên Google Maps. Công cụ Google Maps đã sử dụng những nguồn này để trả lời các câu hỏi về các đặc điểm của địa điểm (ví dụ: "Bar Foo có Wi-Fi không" hoặc "Foo Bar có lối đi cho xe lăn không?"). Hiện tại, chúng tôi chỉ hỗ trợ đoạn trích đánh giá làm nguồn.

Trường
reviewSnippets[] object (ReviewSnippet)

Đoạn trích trong các bài đánh giá được dùng để tạo câu trả lời về các đặc điểm của một địa điểm cụ thể trên Google Maps.

Biểu diễn dưới dạng JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Đóng gói một đoạn trích của bài đánh giá người dùng để trả lời một câu hỏi về các tính năng của một địa điểm cụ thể trong Google Maps.

Trường
reviewId string

Mã của đoạn trích thông tin đánh giá.

googleMapsUri string

Đường liên kết tương ứng với bài đánh giá của người dùng trên Google Maps.

title string

Tiêu đề của bài đánh giá.

Biểu diễn dưới dạng JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Hỗ trợ cơ sở.

Trường
groundingChunkIndices[] integer

Không bắt buộc. Danh sách các chỉ mục (trong "grounding_chunk" trong response.candidate.grounding_metadata) chỉ định các trích dẫn liên kết với tuyên bố. Ví dụ: [1,3,4] có nghĩa là grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] là nội dung được truy xuất và được cho là thuộc về câu tuyên bố. Nếu phản hồi đang được truyền trực tuyến, thì groundingChunkIndices sẽ đề cập đến các chỉ mục trên tất cả phản hồi. Khách hàng có trách nhiệm tích luỹ các khối cơ sở từ tất cả các phản hồi (trong khi vẫn duy trì cùng một thứ tự).

confidenceScores[] number

Không bắt buộc. Điểm độ tin cậy của các thông tin tham khảo hỗ trợ. Dao động từ 0 đến 1. 1 là mức độ tự tin cao nhất. Danh sách này phải có cùng kích thước với groundingChunkIndices.

renderedParts[] integer

Chỉ có đầu ra. Chỉ mục vào trường parts của nội dung đề xuất. Các chỉ mục này chỉ định những phần được kết xuất nào được liên kết với nguồn hỗ trợ này.

segment object (Segment)

Phân đoạn nội dung mà thông tin hỗ trợ này thuộc về.

Biểu diễn dưới dạng JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Phân đoạn

Phân đoạn nội dung.

Trường
partIndex integer

Chỉ mục của đối tượng Part trong đối tượng Content mẹ.

startIndex integer

Chỉ mục bắt đầu trong Phần đã cho, được đo bằng byte. Độ lệch so với điểm bắt đầu của Phần, bao gồm cả điểm này, bắt đầu từ 0.

endIndex integer

Chỉ mục kết thúc trong Phần đã cho, được đo bằng byte. Độ lệch so với điểm bắt đầu của Phần, loại trừ, bắt đầu từ 0.

text string

Văn bản tương ứng với đoạn từ câu trả lời.

Biểu diễn dưới dạng JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Siêu dữ liệu liên quan đến việc truy xuất trong quy trình cơ sở.

Trường
googleSearchDynamicRetrievalScore number

Không bắt buộc. Điểm số cho biết khả năng thông tin từ Google Tìm kiếm có thể giúp trả lời câu lệnh. Điểm số nằm trong khoảng [0, 1], trong đó 0 là ít có khả năng nhất và 1 là có khả năng nhất. Điểm số này chỉ được điền sẵn khi bạn bật tính năng tìm kiếm cơ sở và truy xuất động trên Google. Giá trị này sẽ được so sánh với ngưỡng để xác định xem có kích hoạt tính năng tìm kiếm trên Google hay không.

Biểu diễn dưới dạng JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Kết quả Logprobs

Trường
topCandidates[] object (TopCandidates)

Độ dài = tổng số bước giải mã.

chosenCandidates[] object (Candidate)

Độ dài = tổng số bước giải mã. Các đề xuất được chọn có thể nằm hoặc không nằm trong topCandidates.

logProbabilitySum number

Tổng xác suất log cho tất cả các mã thông báo.

Biểu diễn dưới dạng JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

Các ứng viên có xác suất nhật ký cao nhất ở mỗi bước giải mã.

Trường
candidates[] object (Candidate)

Sắp xếp theo xác suất nhật ký theo thứ tự giảm dần.

Biểu diễn dưới dạng JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Ứng viên

Đề xuất cho mã thông báo logprobs và điểm số.

Trường
token string

Giá trị chuỗi mã thông báo của ứng viên.

tokenId integer

Giá trị mã nhận dạng mã thông báo của ứng viên.

logProbability number

Xác suất lôgarit của đề xuất.

Biểu diễn dưới dạng JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Siêu dữ liệu liên quan đến công cụ truy xuất bối cảnh URL.

Trường
urlMetadata[] object (UrlMetadata)

Danh sách ngữ cảnh URL.

Biểu diễn dưới dạng JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Bối cảnh của việc truy xuất một URL duy nhất.

Trường
retrievedUrl string

URL do công cụ truy xuất.

urlRetrievalStatus enum (UrlRetrievalStatus)

Trạng thái truy xuất URL.

Biểu diễn dưới dạng JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

Trạng thái truy xuất URL.

Enum
URL_RETRIEVAL_STATUS_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
URL_RETRIEVAL_STATUS_SUCCESS Truy xuất URL thành công.
URL_RETRIEVAL_STATUS_ERROR Không truy xuất được URL do lỗi.
URL_RETRIEVAL_STATUS_PAYWALL Không truy xuất được URL vì nội dung bị tường phí chặn.
URL_RETRIEVAL_STATUS_UNSAFE Không truy xuất được URL vì nội dung không an toàn.

CitationMetadata

Tập hợp các thông tin ghi nhận nguồn cho một nội dung.

Trường
citationSources[] object (CitationSource)

Thông tin trích dẫn nguồn cho một câu trả lời cụ thể.

Biểu diễn dưới dạng JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Thông tin trích dẫn về một nguồn cho một phần của câu trả lời cụ thể.

Trường
startIndex integer

Không bắt buộc. Điểm bắt đầu của đoạn phản hồi được phân bổ cho nguồn này.

Chỉ mục cho biết điểm bắt đầu của phân đoạn, được đo bằng byte.

endIndex integer

Không bắt buộc. Kết thúc phân đoạn được phân bổ, không bao gồm.

uri string

Không bắt buộc. URI được coi là nguồn của một phần văn bản.

license string

Không bắt buộc. Giấy phép cho dự án trên GitHub được ghi nhận là nguồn của phân đoạn.

Bạn phải có thông tin về giấy phép đối với các trích dẫn mã.

Biểu diễn dưới dạng JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

Các danh mục nội dung gây hại có thể được phát hiện trong hoạt động đầu vào của người dùng và câu trả lời của mô hình.

Enum
HARM_CATEGORY_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
HARM_CATEGORY_HATE_SPEECH Nội dung kích động hành vi bạo lực hoặc thái độ hận thù đối với các cá nhân hoặc nhóm người dựa trên một số đặc điểm nhất định.
HARM_CATEGORY_DANGEROUS_CONTENT Nội dung quảng bá, tạo điều kiện hoặc cho phép các hoạt động nguy hiểm.
HARM_CATEGORY_HARASSMENT Nội dung lăng mạ, đe doạ hoặc nhằm mục đích bắt nạt, hành hạ hoặc chế giễu.
HARM_CATEGORY_SEXUALLY_EXPLICIT Nội dung có chứa nội dung khiêu dâm.
HARM_CATEGORY_CIVIC_INTEGRITY

Không dùng nữa: Bộ lọc bầu cử không còn được hỗ trợ. Danh mục nội dung gây hại là tính liêm chính của công dân.

HARM_CATEGORY_IMAGE_HATE Hình ảnh có chứa lời nói hận thù.
HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT Hình ảnh chứa nội dung nguy hiểm.
HARM_CATEGORY_IMAGE_HARASSMENT Hình ảnh có nội dung quấy rối.
HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT Hình ảnh có nội dung khiêu dâm.
HARM_CATEGORY_JAILBREAK Câu lệnh được thiết kế để bỏ qua bộ lọc an toàn.

ModalityTokenCount

Biểu thị thông tin về số lượng mã thông báo cho một phương thức duy nhất.

Trường
modality enum (Modality)

Phương thức liên kết với số token này.

tokenCount integer

Số lượng mã thông báo.

Biểu diễn dưới dạng JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Phương thức

Phương thức Nội dung một phần

Enum
MODALITY_UNSPECIFIED Phương thức chưa xác định.
TEXT Văn bản thuần tuý.
IMAGE Hình ảnh.
VIDEO Video.
AUDIO Âm thanh.
DOCUMENT Tài liệu, ví dụ: PDF.

SafetyRating

Mức độ an toàn của một nội dung.

Mức độ an toàn chứa danh mục gây hại và mức độ xác suất gây hại trong danh mục đó cho một nội dung. Nội dung được phân loại để đảm bảo an toàn theo một số danh mục gây hại và xác suất phân loại nội dung gây hại được đưa vào đây.

Trường
category enum (HarmCategory)

Bắt buộc. Danh mục cho điểm xếp hạng này.

probability enum (HarmProbability)

Bắt buộc. Khả năng gây hại của nội dung này.

blocked boolean

Nội dung này có bị chặn do mức phân loại này không?

Biểu diễn dưới dạng JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

Xác suất một nội dung gây hại.

Hệ thống phân loại đưa ra xác suất nội dung là không an toàn. Điều này không cho biết mức độ nghiêm trọng của tác hại đối với một nội dung.

Enum
HARM_PROBABILITY_UNSPECIFIED Không xác định được xác suất.
NEGLIGIBLE Nội dung có khả năng không an toàn rất thấp.
LOW Nội dung có ít khả năng không an toàn.
MEDIUM Nội dung có khả năng không an toàn ở mức trung bình.
HIGH Nội dung có khả năng cao là không an toàn.

SafetySetting

Chế độ cài đặt an toàn, ảnh hưởng đến hành vi chặn nội dung không an toàn.

Việc truyền một chế độ cài đặt an toàn cho một danh mục sẽ thay đổi xác suất được phép để chặn nội dung.

Trường
category enum (HarmCategory)

Bắt buộc. Danh mục cho chế độ cài đặt này.

threshold enum (HarmBlockThreshold)

Bắt buộc. Kiểm soát ngưỡng xác suất mà tại đó nội dung gây hại sẽ bị chặn.

Biểu diễn dưới dạng JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Chặn ở mức và vượt quá xác suất gây hại đã chỉ định.

Enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED Ngưỡng chưa được chỉ định.
BLOCK_LOW_AND_ABOVE Chúng tôi sẽ cho phép nội dung có mức độ VI PHẠM KHÔNG ĐÁNG KỂ.
BLOCK_MEDIUM_AND_ABOVE Chúng tôi sẽ cho phép nội dung có mức độ NEGLIGIBLE (KHÔNG ĐÁNG KỂ) và LOW (THẤP).
BLOCK_ONLY_HIGH Chúng tôi sẽ cho phép nội dung có mức độ NEGLIGIBLE (KHÔNG ĐÁNG KỂ), LOW (THẤP) và MEDIUM (TRUNG BÌNH).
BLOCK_NONE Tất cả nội dung sẽ được cho phép.
OFF Tắt bộ lọc an toàn.

ServiceTier

Cấp dịch vụ của lượt tương tác.

Enum
SERVICE_TIER_UNSPECIFIED Cấp dịch vụ mặc định là cấp tiêu chuẩn.
SERVICE_TIER_FLEX Cấp dịch vụ Flex.
SERVICE_TIER_STANDARD Cấp dịch vụ tiêu chuẩn.
SERVICE_TIER_PRIORITY Cấp dịch vụ ưu tiên.

AllowedTools

Cấu hình cho các công cụ được phép.

Trường
mode enum (ToolChoiceType)

Chế độ lựa chọn công cụ.

tools[] string

Tên của các công cụ được phép.

Biểu diễn dưới dạng JSON
{
  "mode": enum (ToolChoiceType),
  "tools": [
    string
  ]
}

Annotation

Thông tin trích dẫn cho nội dung do mô hình tạo.

Trường
startIndex integer

Điểm bắt đầu của đoạn phản hồi được phân bổ cho nguồn này.

Chỉ mục cho biết điểm bắt đầu của phân đoạn, được đo bằng byte.

endIndex integer

Kết thúc phân đoạn được phân bổ, không bao gồm.

type Union type
Loại chú thích. type chỉ có thể là một trong những trạng thái sau:
urlCitation object (UrlCitation)

Chú thích trích dẫn URL.

fileCitation object (FileCitation)

Chú thích trích dẫn tệp.

placeCitation object (PlaceCitation)

Một chú thích trích dẫn địa điểm.

Biểu diễn dưới dạng JSON
{
  "startIndex": integer,
  "endIndex": integer,

  // type
  "urlCitation": {
    object (UrlCitation)
  },
  "fileCitation": {
    object (FileCitation)
  },
  "placeCitation": {
    object (PlaceCitation)
  }
  // Union type
}

UrlCitation

Chú thích trích dẫn URL.

Trường
url string

URL.

title string

Tiêu đề của URL.

Biểu diễn dưới dạng JSON
{
  "url": string,
  "title": string
}

FileCitation

Chú thích trích dẫn tệp.

Trường
documentUri string

URI của tệp.

fileName string

Tên của tệp.

source string

Nguồn được phân bổ cho một phần văn bản.

customMetadata object (Struct)

Siêu dữ liệu do người dùng cung cấp về ngữ cảnh đã truy xuất.

pageNumber integer

Số trang của tài liệu được trích dẫn (nếu có).

mediaId string

Mã nhận dạng nội dung nghe nhìn trong trường hợp trích dẫn hình ảnh (nếu có).

Biểu diễn dưới dạng JSON
{
  "documentUri": string,
  "fileName": string,
  "source": string,
  "customMetadata": {
    object (Struct)
  },
  "pageNumber": integer,
  "mediaId": string
}

PlaceCitation

Một chú thích trích dẫn địa điểm.

Trường
placeId string

Mã nhận dạng của địa điểm, ở định dạng places/{placeId}.

name string

Tên của địa điểm.

url string

URI tham chiếu của địa điểm.

reviewSnippets[] object (ReviewSnippet)

Đoạn trích trong các bài đánh giá được dùng để tạo câu trả lời về các đặc điểm của một địa điểm cụ thể trên Google Maps.

Biểu diễn dưới dạng JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

AspectRatio

Tỷ lệ khung hình được hỗ trợ cho đầu ra hình ảnh.

Enum
ASPECT_RATIO_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
ASPECT_RATIO_ONE_BY_ONE Tỷ lệ khung hình 1:1.
ASPECT_RATIO_TWO_BY_THREE Tỷ lệ khung hình 2:3.
ASPECT_RATIO_THREE_BY_TWO Tỷ lệ khung hình 3:2.
ASPECT_RATIO_THREE_BY_FOUR Tỷ lệ khung hình 3:4.
ASPECT_RATIO_FOUR_BY_THREE Tỷ lệ khung hình 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Tỷ lệ khung hình 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Tỷ lệ khung hình 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Tỷ lệ khung hình 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Tỷ lệ khung hình 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Tỷ lệ khung hình 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Tỷ lệ khung hình 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Tỷ lệ khung hình 8:1.
ASPECT_RATIO_ONE_BY_FOUR Tỷ lệ khung hình 1:4.
ASPECT_RATIO_FOUR_BY_ONE Tỷ lệ khung hình 4:1.

AudioResponseFormat

Cấu hình cho định dạng đầu ra âm thanh.

Trường
mimeType enum (MimeType)

Loại MIME của đầu ra âm thanh.

delivery enum (Delivery)

Chế độ phân phối cho đầu ra âm thanh.

sampleRate integer

Tốc độ lấy mẫu tính bằng Hz.

bitRate integer

Tốc độ bit tính bằng bit mỗi giây (bps). Chỉ áp dụng cho các định dạng nén (MP3, Opus).

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

CodeExecution

Loại này không có trường nào.

Một công cụ mà mô hình có thể dùng để thực thi mã.

CodeExecutionCallStep

Bước gọi thực thi mã.

Trường
arguments object (CodeExecutionCallStepArguments)

Bắt buộc. Các đối số cần truyền đến quá trình thực thi mã.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (CodeExecutionCallStepArguments)
  }
}

CodeExecutionCallStepArguments

Các đối số cần truyền đến quá trình thực thi mã.

Trường
language enum (Language)

Ngôn ngữ lập trình của code.

code string

Mã cần thực thi.

Biểu diễn dưới dạng JSON
{
  "language": enum (Language),
  "code": string
}

CodeExecutionResultStep

Bước kết quả thực thi mã.

Trường
result string

Bắt buộc. Kết quả của quá trình thực thi mã.

isError boolean

Liệu quá trình thực thi mã có dẫn đến lỗi hay không.

Biểu diễn dưới dạng JSON
{
  "result": string,
  "isError": boolean
}

ComputerUse

Một công cụ mà mô hình có thể dùng để tương tác với máy tính.

Trường
environment enum (Environment)

Môi trường đang hoạt động.

excludedPredefinedFunctions[] string

Danh sách các hàm được xác định trước bị loại trừ khỏi lệnh gọi mô hình.

enablePromptInjectionDetection boolean

Có bật chế độ kiểm tra phát hiện tiêm câu lệnh (prompt injection) trên yêu cầu sử dụng máy tính hay không.

disabledSafetyPolicies[] enum (SafetyPolicy)

Không bắt buộc. Tắt các chính sách an toàn khi sử dụng máy tính.

Biểu diễn dưới dạng JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Nội dung

Nội dung của câu trả lời.

Trường
type Union type
type chỉ có thể là một trong những trạng thái sau:
text object (TextContent)
image object (ImageContent)
audio object (AudioContent)
document object (DocumentContent)
video object (VideoContent)
thought
(deprecated)
object (ThoughtContent)
toolCall
(deprecated)
object (ToolCallContent)
toolResult
(deprecated)
object (ToolResultContent)
Biểu diễn dưới dạng JSON
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  },
  "audio": {
    object (AudioContent)
  },
  "document": {
    object (DocumentContent)
  },
  "video": {
    object (VideoContent)
  },
  "thought": {
    object (ThoughtContent)
  },
  "toolCall": {
    object (ToolCallContent)
  },
  "toolResult": {
    object (ToolResultContent)
  }
  // Union type
}

TextContent

Một khối nội dung văn bản.

Trường
text string

Bắt buộc. Nội dung văn bản.

annotations[] object (Annotation)

Thông tin trích dẫn cho nội dung do mô hình tạo.

Biểu diễn dưới dạng JSON
{
  "text": string,
  "annotations": [
    {
      object (Annotation)
    }
  ]
}

ImageContent

Một khối nội dung hình ảnh.

Trường
mimeType enum (MimeType)

Loại MIME của hình ảnh.

resolution enum (MediaResolution)

Độ phân giải của nội dung nghe nhìn.

data_or_uri Union type
Nội dung hình ảnh. data_or_uri chỉ có thể là một trong những trạng thái sau:
data string (bytes format)

Nội dung hình ảnh.

Một chuỗi được mã hoá base64.

uri string

URI của hình ảnh.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

AudioContent

Một khối nội dung âm thanh.

Trường
mimeType enum (MimeType)

Loại MIME của âm thanh.

channels integer

Số lượng kênh âm thanh.

sampleRate integer

Tốc độ lấy mẫu của âm thanh.

data_or_uri Union type
Nội dung âm thanh. data_or_uri chỉ có thể là một trong những trạng thái sau:
data string (bytes format)

Nội dung âm thanh.

Một chuỗi được mã hoá base64.

uri string

URI của âm thanh.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "channels": integer,
  "sampleRate": integer,

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

DocumentContent

Một khối nội dung tài liệu.

Trường
mimeType enum (MimeType)

Loại MIME của tài liệu.

data_or_uri Union type
Nội dung tài liệu. data_or_uri chỉ có thể là một trong những trạng thái sau:
data string (bytes format)

Nội dung tài liệu.

Một chuỗi được mã hoá base64.

uri string

URI của tài liệu.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

VideoContent

Một khối nội dung video.

Trường
mimeType enum (MimeType)

Loại MIME của video.

resolution enum (MediaResolution)

Độ phân giải của nội dung nghe nhìn.

data_or_uri Union type
Nội dung video. data_or_uri chỉ có thể là một trong những trạng thái sau:
data string (bytes format)

Nội dung video.

Một chuỗi được mã hoá base64.

uri string

URI của video.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

ThoughtContent

Khối nội dung về suy nghĩ.

Trường
signature string (bytes format)

Chữ ký khớp với nguồn phụ trợ sẽ là một phần của quá trình tạo.

Một chuỗi được mã hoá base64.

summary[] object (ThoughtSummaryContent)

Tóm tắt ý tưởng.

Biểu diễn dưới dạng JSON
{
  "signature": string,
  "summary": [
    {
      object (ThoughtSummaryContent)
    }
  ]
}

ThoughtSummaryContent

Trường
type Union type
type chỉ có thể là một trong những trạng thái sau:
text object (TextContent)
image object (ImageContent)
Biểu diễn dưới dạng JSON
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  }
  // Union type
}

ToolCallContent

Nội dung gọi công cụ.

Trường
id string

Bắt buộc. Mã nhận dạng duy nhất cho lệnh gọi công cụ cụ thể này.

signature string (bytes format)

Một hàm băm chữ ký để xác thực phụ trợ.

Một chuỗi được mã hoá base64.

type Union type
type chỉ có thể là một trong những trạng thái sau:
functionCall object (FunctionCallContent)
codeExecutionCall object (CodeExecutionCallContent)
urlContextCall object (UrlContextCallContent)
mcpServerToolCall object (McpServerToolCallContent)
googleSearchCall object (GoogleSearchCallContent)
fileSearchCall object (FileSearchCallContent)
googleMapsCall object (GoogleMapsCallContent)
Biểu diễn dưới dạng JSON
{
  "id": string,
  "signature": string,

  // type
  "functionCall": {
    object (FunctionCallContent)
  },
  "codeExecutionCall": {
    object (CodeExecutionCallContent)
  },
  "urlContextCall": {
    object (UrlContextCallContent)
  },
  "mcpServerToolCall": {
    object (McpServerToolCallContent)
  },
  "googleSearchCall": {
    object (GoogleSearchCallContent)
  },
  "fileSearchCall": {
    object (FileSearchCallContent)
  },
  "googleMapsCall": {
    object (GoogleMapsCallContent)
  }
  // Union type
}

FunctionCallContent

Một khối nội dung gọi công cụ hàm.

Trường
name string

Bắt buộc. Tên của công cụ cần gọi.

arguments object (Struct)

Bắt buộc. Các đối số cần truyền vào hàm.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

CodeExecutionCallContent

Nội dung thực thi mã.

Trường
arguments object (CodeExecutionCallArguments)

Bắt buộc. Các đối số cần truyền đến quá trình thực thi mã.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (CodeExecutionCallArguments)
  }
}

CodeExecutionCallArguments

Các đối số cần truyền đến quá trình thực thi mã.

Trường
language enum (Language)

Ngôn ngữ lập trình của code.

code string

Mã cần thực thi.

Biểu diễn dưới dạng JSON
{
  "language": enum (Language),
  "code": string
}

UrlContextCallContent

Nội dung bối cảnh URL.

Trường
arguments object (UrlContextCallArguments)

Bắt buộc. Các đối số cần chuyển đến ngữ cảnh URL.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (UrlContextCallArguments)
  }
}

UrlContextCallArguments

Các đối số cần chuyển đến ngữ cảnh URL.

Trường
urls[] string

Các URL cần tìm nạp.

Biểu diễn dưới dạng JSON
{
  "urls": [
    string
  ]
}

McpServerToolCallContent

Nội dung gọi công cụ MCPServer.

Trường
name string

Bắt buộc. Tên của công cụ đã được gọi.

serverName string

Bắt buộc. Tên của máy chủ MCP được dùng.

arguments object (Struct)

Bắt buộc. Đối tượng JSON của các đối số cho hàm.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallContent

Nội dung trên Google Tìm kiếm.

Trường
arguments object (GoogleSearchCallArguments)

Bắt buộc. Các đối số cần truyền đến Google Tìm kiếm.

searchType enum (SearchType)

Loại thông tin cơ sở được bật cho hoạt động tìm kiếm.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (GoogleSearchCallArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallArguments

Các đối số cần truyền đến Google Tìm kiếm.

Trường
queries[] string

Cụm từ tìm kiếm trên web cho lượt tìm kiếm tiếp theo trên web.

Biểu diễn dưới dạng JSON
{
  "queries": [
    string
  ]
}

FileSearchCallContent

Loại này không có trường nào.

Nội dung Tìm kiếm tệp.

GoogleMapsCallContent

Nội dung trên Google Maps.

Trường
arguments object (GoogleMapsCallArguments)

Các đối số cần truyền đến công cụ Google Maps.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (GoogleMapsCallArguments)
  }
}

GoogleMapsCallArguments

Các đối số cần truyền đến công cụ Google Maps.

Trường
queries[] string

Các truy vấn sẽ được thực thi.

Biểu diễn dưới dạng JSON
{
  "queries": [
    string
  ]
}

ToolResultContent

Nội dung kết quả của công cụ.

Trường
callId string

Bắt buộc. Mã nhận dạng khớp với mã nhận dạng trong khối lệnh gọi hàm.

signature string (bytes format)

Một hàm băm chữ ký để xác thực phụ trợ.

Một chuỗi được mã hoá base64.

type Union type
type chỉ có thể là một trong những trạng thái sau:
functionResult object (FunctionResultContent)
codeExecutionResult object (CodeExecutionResultContent)
urlContextResult object (UrlContextResultContent)
googleSearchResult object (GoogleSearchResultContent)
mcpServerToolResult object (McpServerToolResultContent)
fileSearchResult object (FileSearchResultContent)
googleMapsResult object (GoogleMapsResultContent)
Biểu diễn dưới dạng JSON
{
  "callId": string,
  "signature": string,

  // type
  "functionResult": {
    object (FunctionResultContent)
  },
  "codeExecutionResult": {
    object (CodeExecutionResultContent)
  },
  "urlContextResult": {
    object (UrlContextResultContent)
  },
  "googleSearchResult": {
    object (GoogleSearchResultContent)
  },
  "mcpServerToolResult": {
    object (McpServerToolResultContent)
  },
  "fileSearchResult": {
    object (FileSearchResultContent)
  },
  "googleMapsResult": {
    object (GoogleMapsResultContent)
  }
  // Union type
}

FunctionResultContent

Một khối nội dung kết quả của công cụ hàm.

Trường
name string

Tên của công cụ đã được gọi.

isError boolean

Liệu lệnh gọi công cụ có dẫn đến lỗi hay không.

result Union type
Kết quả của lệnh gọi công cụ. result chỉ có thể là một trong những trạng thái sau:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Biểu diễn dưới dạng JSON
{
  "name": string,
  "isError": boolean,

  // result
  "structResult": {
    object (Struct)
  },
  "contentList": {
    object (FunctionResultSubcontentList)
  },
  "stringResult": string
  // Union type
}

FunctionResultSubcontentList

Trường
contents[] object (FunctionResultSubcontent)
Biểu diễn dưới dạng JSON
{
  "contents": [
    {
      object (FunctionResultSubcontent)
    }
  ]
}

FunctionResultSubcontent

Trường
type Union type
type chỉ có thể là một trong những trạng thái sau:
text object (TextContent)
image object (ImageContent)
Biểu diễn dưới dạng JSON
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  }
  // Union type
}

CodeExecutionResultContent

Nội dung kết quả thực thi mã.

Trường
result string

Bắt buộc. Kết quả của quá trình thực thi mã.

isError boolean

Liệu quá trình thực thi mã có dẫn đến lỗi hay không.

Biểu diễn dưới dạng JSON
{
  "result": string,
  "isError": boolean
}

UrlContextResultContent

Nội dung kết quả theo bối cảnh từ URL.

Trường
result[] object (UrlContextResult)

Bắt buộc. Kết quả của bối cảnh URL.

isError boolean

Liệu bối cảnh URL có gây ra lỗi hay không.

Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (UrlContextResult)
    }
  ],
  "isError": boolean
}

UrlContextResult

Kết quả của ngữ cảnh URL.

Trường
url string

URL đã được tìm nạp.

status enum (Status)

Trạng thái truy xuất URL.

Biểu diễn dưới dạng JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultContent

Nội dung trong kết quả tìm kiếm trên Google.

Trường
result[] object (GoogleSearchResult)

Bắt buộc. Kết quả của Google Tìm kiếm.

isError boolean

Liệu Google Tìm kiếm có xảy ra lỗi hay không.

Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (GoogleSearchResult)
    }
  ],
  "isError": boolean
}

GoogleSearchResult

Kết quả của Google Tìm kiếm.

Trường
searchSuggestions string

Đoạn nội dung web có thể được nhúng vào một trang web hoặc webview của ứng dụng.

Biểu diễn dưới dạng JSON
{
  "searchSuggestions": string
}

McpServerToolResultContent

Nội dung kết quả của công cụ MCPServer.

Trường
name string

Tên của công cụ được gọi cho lệnh gọi công cụ cụ thể này.

serverName string

Tên của máy chủ MCP được dùng.

result Union type
Đầu ra từ lệnh gọi máy chủ MCP. Có thể là văn bản đơn giản hoặc nội dung đa dạng thức. result chỉ có thể là một trong những trạng thái sau:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Biểu diễn dưới dạng JSON
{
  "name": string,
  "serverName": string,

  // result
  "structResult": {
    object (Struct)
  },
  "contentList": {
    object (FunctionResultSubcontentList)
  },
  "stringResult": string
  // Union type
}

FileSearchResultContent

Nội dung kết quả tìm kiếm tệp.

Trường
result[] object (FileSearchResult)

Không bắt buộc. Kết quả của tính năng Tìm kiếm tệp.

Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (FileSearchResult)
    }
  ]
}

FileSearchResult

Loại này không có trường nào.

Kết quả của tính năng Tìm kiếm tệp.

GoogleMapsResultContent

Nội dung kết quả trên Google Maps.

Trường
result[] object (GoogleMapsResult)

Bắt buộc. Kết quả của Google Maps.

Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (GoogleMapsResult)
    }
  ]
}

GoogleMapsResult

Kết quả của Google Maps.

Trường
places[] object (Places)

Những địa điểm được tìm thấy.

widgetContextToken string

Tên tài nguyên của token ngữ cảnh tiện ích Google Maps.

Biểu diễn dưới dạng JSON
{
  "places": [
    {
      object (Places)
    }
  ],
  "widgetContextToken": string
}

Địa điểm

Trường
placeId string

Mã nhận dạng của địa điểm, ở định dạng places/{placeId}.

name string

Tên của địa điểm.

url string

URI tham chiếu của địa điểm.

reviewSnippets[] object (ReviewSnippet)

Đoạn trích trong các bài đánh giá được dùng để tạo câu trả lời về các đặc điểm của một địa điểm cụ thể trên Google Maps.

Biểu diễn dưới dạng JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ContentList

Danh sách Nội dung.

Trường
contents[] object (Content)

Nội dung của danh sách.

Biểu diễn dưới dạng JSON
{
  "contents": [
    {
      object (Content)
    }
  ]
}

CreateInteractionRequest

Tham số cấu hình để tạo một lượt tương tác.

Trường
stream boolean

Chỉ có đầu vào. Liệu tương tác có được phát trực tuyến hay không.

store boolean

Chỉ có đầu vào. Có lưu trữ phản hồi và yêu cầu để truy xuất sau này hay không.

interaction object (Interaction)

Tương tác cần tạo.

background boolean

Chỉ có đầu vào. Có chạy hoạt động tương tác mô hình ở chế độ nền hay không.

Biểu diễn dưới dạng JSON
{
  "stream": boolean,
  "store": boolean,
  "interaction": {
    object (Interaction)
  },
  "background": boolean
}

Tương tác

Phản hồi cho InteractionService.CreateInteraction.

Trường
id string

Bắt buộc. Chỉ có đầu ra. Giá trị nhận dạng riêng biệt cho lượt hoàn tất tương tác.

status enum (Status)

Bắt buộc. Chỉ có đầu ra. Trạng thái của lượt tương tác.

created string

Bắt buộc. Chỉ có đầu ra. Thời gian tạo phản hồi ở định dạng ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

updated string

Bắt buộc. Chỉ có đầu ra. Thời gian cập nhật phản hồi gần đây nhất ở định dạng ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

role
(deprecated)
string

Chỉ có đầu ra. Vai trò của lượt tương tác.

outputs[]
(deprecated)
object (Content)

Chỉ có đầu ra. Câu trả lời của mô hình.

systemInstruction string

Hướng dẫn của hệ thống cho lượt tương tác.

tools[] object (Tool)

Danh sách các khai báo công cụ mà mô hình có thể gọi trong quá trình tương tác.

usage object (Usage)

Chỉ có đầu ra. Số liệu thống kê về việc sử dụng mã thông báo của yêu cầu tương tác.

responseModalities[]
(deprecated)
enum (ResponseModality)

Các phương thức phản hồi được yêu cầu (VĂN BẢN, HÌNH ẢNH, ÂM THANH).

responseMimeType
(deprecated)
string

Loại MIME của phản hồi. Bạn phải cung cấp thông tin này nếu đã đặt responseFormat.

previousInteractionId string

Mã của lượt tương tác trước đó (nếu có).

environmentId string

Chỉ có đầu ra. Mã môi trường cho lượt tương tác. Chỉ được điền sẵn nếu cấu hình môi trường được đặt trong yêu cầu.

serviceTier enum (ServiceTier)

Cấp dịch vụ cho lượt tương tác.

webhookConfig object (WebhookConfig)

Không bắt buộc. Cấu hình Webhook để nhận thông báo khi lượt tương tác hoàn tất.

steps[] object (Step)

Bắt buộc. Chỉ có đầu ra. Các bước tạo nên hoạt động tương tác.

input Union type
Đầu vào cho lượt tương tác. input chỉ có thể là một trong những trạng thái sau:
contentList
(deprecated)
object (ContentList)

Dữ liệu đầu vào cho lượt tương tác.

stringContent string

Một chuỗi đầu vào cho lượt tương tác, chuỗi này sẽ được xử lý dưới dạng một dữ liệu đầu vào văn bản duy nhất.

turnList
(deprecated)
object (TurnList)

Các lượt tương tác.

stepList object (StepList)

Chỉ có đầu vào. Các bước tương tác.

content object (Content)

Nội dung cho hoạt động tương tác.

response_format_config Union type
response_format_config chỉ có thể là một trong những trạng thái sau:
responseFormat
(deprecated)
object (Value)

Buộc phản hồi được tạo phải là một đối tượng JSON tuân thủ giản đồ JSON được chỉ định trong trường này.

responseFormatList object (ResponseFormatList)
responseFormatSingleton object (ResponseFormat)
request_type Union type
Loại yêu cầu cho lượt tương tác. request_type chỉ có thể là một trong những trạng thái sau:
modelInteraction object (ModelInteraction)

Tương tác để tạo câu hoàn chỉnh bằng các mô hình.

agentInteraction object (AgentInteraction)

Tương tác để tạo phần hoàn thành bằng cách sử dụng các tác nhân.

environment Union type
Cấu hình môi trường cho hoạt động tương tác. environment chỉ có thể là một trong những trạng thái sau:
envId string

Mã môi trường cho lượt tương tác. Có thể là "remote" cho môi trường mặc định.

remoteEnvironment object (EnvironmentConfig)
localEnvironment object (LocalEnvironmentConfig)

Môi trường của tác nhân nằm trên kết nối máy khách: các thao tác môi trường tích hợp (thao tác hệ thống tệp và các lệnh đang chạy) được chuyển cho máy khách thực thi, thay vì chạy trong một hộp cát do máy chủ quản lý. Loại trừ lẫn nhau với remoteEnvironment. (Không phụ thuộc vào bất kỳ công cụ hàm nào do ứng dụng khai báo, luôn được thực thi trên ứng dụng bất kể trường này.)

Biểu diễn dưới dạng JSON
{
  "id": string,
  "status": enum (Status),
  "created": string,
  "updated": string,
  "role": string,
  "outputs": [
    {
      object (Content)
    }
  ],
  "systemInstruction": string,
  "tools": [
    {
      object (Tool)
    }
  ],
  "usage": {
    object (Usage)
  },
  "responseModalities": [
    enum (ResponseModality)
  ],
  "responseMimeType": string,
  "previousInteractionId": string,
  "environmentId": string,
  "serviceTier": enum (ServiceTier),
  "webhookConfig": {
    object (WebhookConfig)
  },
  "steps": [
    {
      object (Step)
    }
  ],

  // input
  "contentList": {
    object (ContentList)
  },
  "stringContent": string,
  "turnList": {
    object (TurnList)
  },
  "stepList": {
    object (StepList)
  },
  "content": {
    object (Content)
  }
  // Union type

  // response_format_config
  "responseFormat": {
    object (Value)
  },
  "responseFormatList": {
    object (ResponseFormatList)
  },
  "responseFormatSingleton": {
    object (ResponseFormat)
  }
  // Union type

  // request_type
  "modelInteraction": {
    object (ModelInteraction)
  },
  "agentInteraction": {
    object (AgentInteraction)
  }
  // Union type

  // environment
  "envId": string,
  "remoteEnvironment": {
    object (EnvironmentConfig)
  },
  "localEnvironment": {
    object (LocalEnvironmentConfig)
  }
  // Union type
}

TurnList

Danh sách các Lượt rẽ.

Trường
turns[] object (Turn)
Biểu diễn dưới dạng JSON
{
  "turns": [
    {
      object (Turn)
    }
  ]
}

Bật/Tắt

Trường
role string

Người khởi tạo lượt này. Phải là người dùng cho dữ liệu đầu vào hoặc mô hình cho đầu ra của mô hình.

content Union type
content chỉ có thể là một trong những trạng thái sau:
contentList object (ContentList)

Nội dung của lượt tương tác. Một mảng gồm các đối tượng Nội dung.

contentString string

Nội dung của lượt tương tác. Một chuỗi đơn.

Biểu diễn dưới dạng JSON
{
  "role": string,

  // content
  "contentList": {
    object (ContentList)
  },
  "contentString": string
  // Union type
}

StepList

Danh sách các bước.

Trường
steps[] object (Step)

Các bước trong danh sách.

Biểu diễn dưới dạng JSON
{
  "steps": [
    {
      object (Step)
    }
  ]
}

Bước

Một bước trong lượt tương tác.

Trường
type Union type
type chỉ có thể là một trong những trạng thái sau:
thought object (ThoughtStep)
toolCall object (ToolCallStep)
toolResult object (ToolResultStep)
userInput object (UserInputStep)

KHÔNG SỬ DỤNG – Đây chỉ dành cho JSON của bên thứ ba

modelOutput object (ModelOutputStep)
text
(deprecated)
object (LegacyTextContent)
image
(deprecated)
object (LegacyImageContent)
audio
(deprecated)
object (LegacyAudioContent)
document
(deprecated)
object (LegacyDocumentContent)
video
(deprecated)
object (LegacyVideoContent)
Biểu diễn dưới dạng JSON
{

  // type
  "thought": {
    object (ThoughtStep)
  },
  "toolCall": {
    object (ToolCallStep)
  },
  "toolResult": {
    object (ToolResultStep)
  },
  "userInput": {
    object (UserInputStep)
  },
  "modelOutput": {
    object (ModelOutputStep)
  },
  "text": {
    object (LegacyTextContent)
  },
  "image": {
    object (LegacyImageContent)
  },
  "audio": {
    object (LegacyAudioContent)
  },
  "document": {
    object (LegacyDocumentContent)
  },
  "video": {
    object (LegacyVideoContent)
  }
  // Union type
}

ThoughtStep

Một bước tư duy.

Trường
signature string (bytes format)

Một hàm băm chữ ký để xác thực phụ trợ.

Một chuỗi được mã hoá base64.

summary[] object (Content)

Tóm tắt ý tưởng.

Biểu diễn dưới dạng JSON
{
  "signature": string,
  "summary": [
    {
      object (Content)
    }
  ]
}

ToolCallStep

Bước gọi công cụ.

Trường
id string

Bắt buộc. Mã nhận dạng duy nhất cho lệnh gọi công cụ cụ thể này.

signature string (bytes format)

Một hàm băm chữ ký để xác thực phụ trợ.

Một chuỗi được mã hoá base64.

type Union type
type chỉ có thể là một trong những trạng thái sau:
functionCall object (FunctionCallStep)
codeExecutionCall object (CodeExecutionCallStep)
urlContextCall object (UrlContextCallStep)
mcpServerToolCall object (McpServerToolCallStep)
googleSearchCall object (GoogleSearchCallStep)
fileSearchCall object (FileSearchCallStep)
googleMapsCall object (GoogleMapsCallStep)
retrievalCall object (RetrievalCallStep)
Biểu diễn dưới dạng JSON
{
  "id": string,
  "signature": string,

  // type
  "functionCall": {
    object (FunctionCallStep)
  },
  "codeExecutionCall": {
    object (CodeExecutionCallStep)
  },
  "urlContextCall": {
    object (UrlContextCallStep)
  },
  "mcpServerToolCall": {
    object (McpServerToolCallStep)
  },
  "googleSearchCall": {
    object (GoogleSearchCallStep)
  },
  "fileSearchCall": {
    object (FileSearchCallStep)
  },
  "googleMapsCall": {
    object (GoogleMapsCallStep)
  },
  "retrievalCall": {
    object (RetrievalCallStep)
  }
  // Union type
}

FunctionCallStep

Một bước gọi công cụ hàm.

Trường
name string

Bắt buộc. Tên của công cụ cần gọi.

arguments object (Struct)

Bắt buộc. Các đối số cần truyền vào hàm.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

UrlContextCallStep

Bước gọi ngữ cảnh URL.

Trường
arguments object (UrlContextCallStepArguments)

Bắt buộc. Các đối số cần truyền đến ngữ cảnh URL.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (UrlContextCallStepArguments)
  }
}

UrlContextCallStepArguments

Các đối số cần truyền đến ngữ cảnh URL.

Trường
urls[] string

Các URL cần tìm nạp.

Biểu diễn dưới dạng JSON
{
  "urls": [
    string
  ]
}

McpServerToolCallStep

Bước gọi công cụ MCPServer.

Trường
name string

Bắt buộc. Tên của công cụ đã được gọi.

serverName string

Bắt buộc. Tên của máy chủ MCP được dùng.

arguments object (Struct)

Bắt buộc. Đối tượng JSON của các đối số cho hàm.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallStep

Bước gọi trên Google Tìm kiếm.

Trường
arguments object (GoogleSearchCallStepArguments)

Bắt buộc. Các đối số cần chuyển đến Google Tìm kiếm.

searchType enum (SearchType)

Loại thông tin cơ sở được bật cho hoạt động tìm kiếm.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (GoogleSearchCallStepArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallStepArguments

Các đối số cần truyền đến Google Tìm kiếm.

Trường
queries[] string

Cụm từ tìm kiếm trên web cho lượt tìm kiếm tiếp theo trên web.

Biểu diễn dưới dạng JSON
{
  "queries": [
    string
  ]
}

FileSearchCallStep

Loại này không có trường nào.

Bước gọi Tìm kiếm tệp.

GoogleMapsCallStep

Bước gọi điện trên Google Maps.

Trường
arguments object (GoogleMapsCallStepArguments)

Các đối số cần truyền đến công cụ Google Maps.

Biểu diễn dưới dạng JSON
{
  "arguments": {
    object (GoogleMapsCallStepArguments)
  }
}

GoogleMapsCallStepArguments

Các đối số cần truyền đến công cụ Google Maps.

Trường
queries[] string

Các truy vấn sẽ được thực thi.

Biểu diễn dưới dạng JSON
{
  "queries": [
    string
  ]
}

ToolResultStep

Bước kết quả của công cụ.

Trường
callId string

Bắt buộc. Mã nhận dạng khớp với mã nhận dạng trong khối lệnh gọi hàm.

signature string (bytes format)

Một hàm băm chữ ký để xác thực phụ trợ.

Một chuỗi được mã hoá base64.

type Union type
type chỉ có thể là một trong những trạng thái sau:
functionResult object (FunctionResultStep)
codeExecutionResult object (CodeExecutionResultStep)
urlContextResult object (UrlContextResultStep)
googleSearchResult object (GoogleSearchResultStep)
mcpServerToolResult object (McpServerToolResultStep)
fileSearchResult object (FileSearchResultStep)
googleMapsResult object (GoogleMapsResultStep)
retrievalResult object (RetrievalResultStep)
Biểu diễn dưới dạng JSON
{
  "callId": string,
  "signature": string,

  // type
  "functionResult": {
    object (FunctionResultStep)
  },
  "codeExecutionResult": {
    object (CodeExecutionResultStep)
  },
  "urlContextResult": {
    object (UrlContextResultStep)
  },
  "googleSearchResult": {
    object (GoogleSearchResultStep)
  },
  "mcpServerToolResult": {
    object (McpServerToolResultStep)
  },
  "fileSearchResult": {
    object (FileSearchResultStep)
  },
  "googleMapsResult": {
    object (GoogleMapsResultStep)
  },
  "retrievalResult": {
    object (RetrievalResultStep)
  }
  // Union type
}

FunctionResultStep

Kết quả của một lệnh gọi công cụ hàm.

Trường
name string

Tên của công cụ đã được gọi.

isError boolean

Liệu lệnh gọi công cụ có dẫn đến lỗi hay không.

result object (Value)

Bắt buộc. Kết quả của lệnh gọi công cụ.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "isError": boolean,
  "result": {
    object (Value)
  }
}

UrlContextResultStep

Bước kết quả theo bối cảnh URL.

Trường
result[] object (UrlContextResultItem)

Bắt buộc. Kết quả của bối cảnh URL.

isError boolean

Liệu bối cảnh URL có gây ra lỗi hay không.

Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (UrlContextResultItem)
    }
  ],
  "isError": boolean
}

UrlContextResultItem

Kết quả của ngữ cảnh URL.

Trường
url string

URL đã được tìm nạp.

status enum (Status)

Trạng thái truy xuất URL.

Biểu diễn dưới dạng JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultStep

Bước kết quả tìm kiếm trên Google.

Trường
result[] object (GoogleSearchResultItem)

Bắt buộc. Kết quả của Google Tìm kiếm.

isError boolean

Liệu Google Tìm kiếm có xảy ra lỗi hay không.

Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (GoogleSearchResultItem)
    }
  ],
  "isError": boolean
}

GoogleSearchResultItem

Kết quả của Google Tìm kiếm.

Trường
searchSuggestions string

Đoạn nội dung web có thể được nhúng vào một trang web hoặc webview của ứng dụng.

Biểu diễn dưới dạng JSON
{
  "searchSuggestions": string
}

McpServerToolResultStep

Bước kết quả của công cụ MCPServer.

Trường
name string

Tên của công cụ được gọi cho lệnh gọi công cụ cụ thể này.

serverName string

Tên của máy chủ MCP được dùng.

result object (Value)

Bắt buộc. Đầu ra từ lệnh gọi máy chủ MCP. Có thể là văn bản đơn giản hoặc nội dung đa dạng thức.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "serverName": string,
  "result": {
    object (Value)
  }
}

FileSearchResultStep

Loại này không có trường nào.

Bước Kết quả tìm kiếm tệp.

GoogleMapsResultStep

Bước kết quả trên Google Maps.

Trường
result[] object (GoogleMapsResultItem)
Biểu diễn dưới dạng JSON
{
  "result": [
    {
      object (GoogleMapsResultItem)
    }
  ]
}

GoogleMapsResultItem

Kết quả của Google Maps.

Trường
places[] object (GoogleMapsResultPlaces)
widgetContextToken string
Biểu diễn dưới dạng JSON
{
  "places": [
    {
      object (GoogleMapsResultPlaces)
    }
  ],
  "widgetContextToken": string
}

GoogleMapsResultPlaces

Trường
placeId string
name string
url string
reviewSnippets[] object (ReviewSnippet)
Biểu diễn dưới dạng JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

UserInputStep

Thông tin đầu vào do người dùng cung cấp.

Trường
content Union type
content chỉ có thể là một trong những trạng thái sau:
contentList object (ContentList)

Nội dung của bước. Một mảng gồm các đối tượng Nội dung.

contentString string

Nội dung của bước. Một chuỗi đơn.

Biểu diễn dưới dạng JSON
{

  // content
  "contentList": {
    object (ContentList)
  },
  "contentString": string
  // Union type
}

ModelOutputStep

Đầu ra do mô hình tạo.

Trường
content[] object (Content)
Biểu diễn dưới dạng JSON
{
  "content": [
    {
      object (Content)
    }
  ]
}

ResponseFormatList

Trường
responseFormats[] object (ResponseFormat)
Biểu diễn dưới dạng JSON
{
  "responseFormats": [
    {
      object (ResponseFormat)
    }
  ]
}

ResponseFormat

Trường
type Union type
type chỉ có thể là một trong những trạng thái sau:
audio object (AudioResponseFormat)
text object (TextResponseFormat)
image object (ImageResponseFormat)
video object (VideoResponseFormat)
structValue object (Struct)

Giá trị nhiều điều kiện phân biệt đã được bật trong GAOS

Biểu diễn dưới dạng JSON
{

  // type
  "audio": {
    object (AudioResponseFormat)
  },
  "text": {
    object (TextResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  },
  "video": {
    object (VideoResponseFormat)
  },
  "structValue": {
    object (Struct)
  }
  // Union type
}

TextResponseFormat

Cấu hình cho định dạng đầu ra văn bản.

Trường
mimeType enum (MimeType)

Loại MIME của đầu ra văn bản.

schema object (Struct)

Giản đồ JSON mà đầu ra phải tuân thủ. Chỉ áp dụng khi mimeType là application/json.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "schema": {
    object (Struct)
  }
}

ImageResponseFormat

Cấu hình cho định dạng đầu ra của hình ảnh.

Trường
mimeType enum (MimeType)

Loại MIME của đầu ra hình ảnh.

delivery enum (Delivery)

Chế độ phân phối cho đầu ra hình ảnh.

aspectRatio enum (AspectRatio)

Tỷ lệ khung hình cho đầu ra hình ảnh.

imageSize enum (ImageSize)

Kích thước của đầu ra hình ảnh.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

VideoResponseFormat

Cấu hình cho định dạng đầu ra video.

Trường
delivery enum (Delivery)

Chế độ phân phối cho đầu ra video.

aspectRatio enum (AspectRatio)

Tỷ lệ khung hình cho đầu ra video.

duration string (Duration format)

Thời lượng của video đầu ra.

Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân và kết thúc bằng "s". Ví dụ: "3.5s".

Biểu diễn dưới dạng JSON
{
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "duration": string
}

ModelInteraction

Tương tác để tạo câu hoàn chỉnh bằng các mô hình.

Trường
model string

Tên của Model dùng để tạo phần hoàn thành.

generationConfig object (GenerationConfig)

Chỉ có đầu vào. Các thông số cấu hình cho hoạt động tương tác của mô hình.

Biểu diễn dưới dạng JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  }
}

GenerationConfig

Tham số cấu hình cho các lượt tương tác với mô hình.

Trường
temperature number

Kiểm soát tính ngẫu nhiên của đầu ra.

topP number

Xác suất tích luỹ tối đa của các mã thông báo cần xem xét khi lấy mẫu.

seed integer

Dữ liệu gốc được dùng trong quá trình giải mã để có thể tái tạo.

stopSequences[] string

Danh sách các chuỗi ký tự sẽ dừng tương tác đầu ra.

thinkingLevel enum (ThinkingLevel)

Số lượng mã thông báo suy nghĩ mà mô hình sẽ tạo.

thinkingSummaries enum (ThinkingSummaries)

Có nên đưa bản tóm tắt suy nghĩ vào câu trả lời hay không.

maxOutputTokens integer

Số lượng mã thông báo tối đa cần đưa vào phản hồi.

speechConfig[] object (SpeechConfig)

Cấu hình cho hoạt động tương tác bằng lời nói.

imageConfig
(deprecated)
object (ImageConfig)

Cấu hình cho hoạt động tương tác với hình ảnh.

videoConfig object (VideoConfig)

Cấu hình để tạo video.

tool_choice Union type
Cấu hình lựa chọn công cụ. tool_choice chỉ có thể là một trong những trạng thái sau:
toolChoiceMode enum (ToolChoiceType)

Chế độ lựa chọn công cụ.

toolChoiceConfig object (ToolChoiceConfig)

Cấu hình cho lựa chọn công cụ.

Biểu diễn dưới dạng JSON
{
  "temperature": number,
  "topP": number,
  "seed": integer,
  "stopSequences": [
    string
  ],
  "thinkingLevel": enum (ThinkingLevel),
  "thinkingSummaries": enum (ThinkingSummaries),
  "maxOutputTokens": integer,
  "speechConfig": [
    {
      object (SpeechConfig)
    }
  ],
  "imageConfig": {
    object (ImageConfig)
  },
  "videoConfig": {
    object (VideoConfig)
  },

  // tool_choice
  "toolChoiceMode": enum (ToolChoiceType),
  "toolChoiceConfig": {
    object (ToolChoiceConfig)
  }
  // Union type
}

ToolChoiceConfig

Cấu hình lựa chọn công cụ chứa các công cụ được phép.

Trường
allowedTools object (AllowedTools)

Các công cụ được phép.

Biểu diễn dưới dạng JSON
{
  "allowedTools": {
    object (AllowedTools)
  }
}

SpeechConfig

Cấu hình cho hoạt động tương tác bằng lời nói.

Trường
voice string

Giọng nói của người nói.

language string

Ngôn ngữ của lời nói.

speaker string

Tên của người nói, tên này phải khớp với tên người nói trong câu lệnh.

Biểu diễn dưới dạng JSON
{
  "voice": string,
  "language": string,
  "speaker": string
}

ImageConfig

Cấu hình cho hoạt động tương tác với hình ảnh.

Trường
aspectRatio string

Tỷ lệ khung hình của hình ảnh cần tạo. Tỷ lệ khung hình được hỗ trợ: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 21:9.

Nếu bạn không chỉ định, mô hình sẽ chọn tỷ lệ khung hình mặc định dựa trên mọi hình ảnh tham khảo được cung cấp.

imageSize string

Chỉ định kích thước của hình ảnh được tạo. Các giá trị được hỗ trợ là 1K, 2K, 4K. Nếu bạn không chỉ định, mô hình sẽ sử dụng giá trị mặc định 1K.

Biểu diễn dưới dạng JSON
{
  "aspectRatio": string,
  "imageSize": string
}

VideoConfig

Các lựa chọn cấu hình để tạo video.

Trường
task enum (Task)

Chế độ tác vụ không bắt buộc để tạo video. Nếu bạn không chỉ định, mô hình sẽ tự động xác định chế độ phù hợp dựa trên câu lệnh văn bản và nội dung nghe nhìn đầu vào mà bạn cung cấp.

Biểu diễn dưới dạng JSON
{
  "task": enum (Task)
}

EnvironmentConfig

Cấu hình cho một môi trường tuỳ chỉnh.

Trường
sources[] object (Source)
environmentId string

Không bắt buộc. Mã môi trường cho lượt tương tác. Nếu được chỉ định, yêu cầu sẽ cập nhật môi trường hiện có thay vì tạo một môi trường mới.

network Union type
Cấu hình mạng cho môi trường. network chỉ có thể là một trong những trạng thái sau:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Chỉ cho phép các miền cụ thể.

networkMode enum (NetworkMode)

Chế độ truyền dữ liệu ra bên ngoài mạng.

Biểu diễn dưới dạng JSON
{
  "sources": [
    {
      object (Source)
    }
  ],
  "environmentId": string,

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

EnvironmentNetworkEgressAllowlist

Cấu hình lưu lượng truy cập mạng ra bên ngoài cho môi trường.

Trường
allowlist[] object (EgressRule)

Danh sách các miền được phép và cấu hình của các miền đó.

Biểu diễn dưới dạng JSON
{
  "allowlist": [
    {
      object (EgressRule)
    }
  ]
}

EgressRule

Một quy tắc truyền dữ liệu ra bên ngoài mạng kiểm soát những miền bên ngoài mà môi trường được phép truy cập. Mỗi quy tắc xác định một miền mục tiêu và (không bắt buộc) một nhóm tiêu đề HTTP để chèn vào mọi yêu cầu đi ra khớp.

Trường
domain string

Mẫu miền cần khớp cho quy tắc này. Sử dụng tên máy chủ lưu trữ chính xác (ví dụ: github.com), tiền tố ký tự đại diện (ví dụ: *.googleapis.com) hoặc * để so khớp tất cả các miền.

transform map (key: string, value: string)

Tiêu đề cần chèn vào các yêu cầu khớp với quy tắc này. Khoá: tên tiêu đề (ví dụ: "Authorization"). Giá trị: giá trị tiêu đề (ví dụ: "Bearer your-token").

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

Biểu diễn dưới dạng JSON
{
  "domain": string,
  "transform": {
    string: string,
    ...
  }
}

Nguồn

Một nguồn sẽ được gắn vào môi trường.

Trường
type enum (Type)
source string

Nguồn của môi trường. Đối với GCS, đây là đường dẫn GCS. Đối với GitHub, đây là đường dẫn GitHub.

target string

Nơi nguồn sẽ xuất hiện trong môi trường.

content string

Nội dung cùng dòng nếu typeINLINE.

encoding string

Mã hoá không bắt buộc cho nội dung trong dòng (ví dụ: base64).

Biểu diễn dưới dạng JSON
{
  "type": enum (Type),
  "source": string,
  "target": string,
  "content": string,
  "encoding": string
}

LocalEnvironmentConfig

Loại này không có trường nào.

Cấu hình cho một môi trường nằm trên kết nối máy khách thay vì trong hộp cát do máy chủ quản lý.

Khi được thiết lập (thông qua Interaction.local_environment), hệ thống tệp và shell của tác nhân sẽ được coi là nằm trên máy khách: các thao tác môi trường tích hợp của tác nhân (ví dụ: đọc/liệt kê/chỉnh sửa tệp và chạy lệnh) sẽ bị tạm ngưng trên máy chủ và trả về cho máy khách để thực thi, với kết quả được trả về trong lượt tiếp theo. Điều này không thể xảy ra đồng thời với EnvironmentConfig (remoteEnvironment) do máy chủ quản lý, vì môi trường nằm trên máy khách hoặc trong hộp cát máy chủ, không bao giờ cả hai.

Điều này chỉ chi phối môi trường tích hợp của tác nhân. Các công cụ hàm do ứng dụng khai báo luôn được thực thi trên ứng dụng, bất kể trường này là gì.

Công cụ

Một công cụ mà mô hình có thể sử dụng.

Trường
type Union type
Công cụ cần dùng. type chỉ có thể là một trong những trạng thái sau:
function object (Function)

Một hàm mà mô hình có thể sử dụng.

codeExecution object (CodeExecution)

Một công cụ mà mô hình có thể dùng để thực thi mã.

urlContext object (UrlContext)

Một công cụ mà mô hình có thể dùng để tìm nạp ngữ cảnh URL.

computerUse object (ComputerUse)

Công cụ hỗ trợ mô hình tương tác trực tiếp với máy tính.

mcpServer object (McpServer)

MCPServer là một máy chủ mà mô hình có thể gọi để thực hiện các hành động.

googleMaps object (GoogleMaps)

Một công cụ mà mô hình có thể dùng để tìm kiếm trên Google Maps.

retrieval object (Retrieval)

Một công cụ mà mô hình có thể dùng để truy xuất tệp.

Biểu diễn dưới dạng JSON
{

  // type
  "function": {
    object (Function)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "urlContext": {
    object (UrlContext)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "mcpServer": {
    object (McpServer)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "googleMaps": {
    object (GoogleMaps)
  },
  "retrieval": {
    object (Retrieval)
  }
  // Union type
}

Chức năng

Một công cụ mà mô hình có thể sử dụng.

Trường
name string

Tên của hàm.

description string

Nội dung mô tả về hàm.

parameters object (Value)

Giản đồ JSON cho các tham số của hàm.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Value)
  }
}

UrlContext

Loại này không có trường nào.

Một công cụ mà mô hình có thể dùng để tìm nạp ngữ cảnh URL.

McpServer

MCPServer là một máy chủ mà mô hình có thể gọi để thực hiện các hành động.

Trường
name string

Tên của MCPServer.

url string

URL đầy đủ cho điểm cuối MCPServer. Ví dụ: "https://api.example.com/mcp"

headers map (key: string, value: string)

Không bắt buộc: Các trường cho tiêu đề xác thực, thời gian chờ, v.v. (nếu cần).

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

allowedTools[] object (AllowedTools)

Các công cụ được phép.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "allowedTools": [
    {
      object (AllowedTools)
    }
  ]
}

GoogleSearch

Một công cụ mà mô hình có thể dùng để tìm kiếm trên Google.

Trường
searchTypes[] enum (SearchType)

Các loại thông tin cơ sở để tìm kiếm cần bật.

Biểu diễn dưới dạng JSON
{
  "searchTypes": [
    enum (SearchType)
  ]
}

FileSearch

Một công cụ mà mô hình có thể dùng để tìm kiếm tệp.

Trường
fileSearchStoreNames[] string

Tên cửa hàng tìm kiếm tệp để tìm kiếm.

topK integer

Số lượng đoạn truy xuất ngữ nghĩa cần truy xuất.

metadataFilter string

Bộ lọc siêu dữ liệu để áp dụng cho các tài liệu và đoạn văn bản truy xuất ngữ nghĩa.

Biểu diễn dưới dạng JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "topK": integer,
  "metadataFilter": string
}

GoogleMaps

Một công cụ mà mô hình có thể dùng để gọi Google Maps.

Trường
enableWidget boolean

Có trả về token ngữ cảnh tiện ích trong kết quả lệnh gọi công cụ của phản hồi hay không.

latitude number

Vĩ độ của vị trí người dùng.

longitude number

Kinh độ của vị trí người dùng.

Biểu diễn dưới dạng JSON
{
  "enableWidget": boolean,
  "latitude": number,
  "longitude": number
}

Cách sử dụng

Số liệu thống kê về việc sử dụng mã thông báo của yêu cầu tương tác.

Trường
totalInputTokens integer

Số lượng mã thông báo trong câu lệnh (ngữ cảnh).

inputTokensByModality[] object (ModalityTokens)

Thông tin chi tiết về mức sử dụng mã thông báo đầu vào theo phương thức.

totalCachedTokens integer

Số lượng mã thông báo trong phần được lưu vào bộ nhớ đệm của câu lệnh (nội dung được lưu vào bộ nhớ đệm).

cachedTokensByModality[] object (ModalityTokens)

Bảng chi tiết về việc sử dụng mã thông báo được lưu vào bộ nhớ đệm theo phương thức.

totalOutputTokens integer

Tổng số mã thông báo trong tất cả các câu trả lời được tạo.

outputTokensByModality[] object (ModalityTokens)

Thông tin chi tiết về việc sử dụng mã thông báo đầu ra theo phương thức.

totalToolUseTokens integer

Số lượng mã thông báo có trong(các) câu lệnh sử dụng công cụ.

toolUseTokensByModality[] object (ModalityTokens)

Bảng chi tiết về việc sử dụng mã thông báo sử dụng công cụ theo phương thức.

totalThoughtTokens integer

Số lượng mã thông báo về suy nghĩ cho các mô hình tư duy.

totalTokens integer

Tổng số token cho yêu cầu tương tác (câu lệnh + câu trả lời + các token nội bộ khác).

groundingToolCount[] object (GroundingToolCount)

Số lượng công cụ tiếp đất.

Biểu diễn dưới dạng JSON
{
  "totalInputTokens": integer,
  "inputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalCachedTokens": integer,
  "cachedTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalOutputTokens": integer,
  "outputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalToolUseTokens": integer,
  "toolUseTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalThoughtTokens": integer,
  "totalTokens": integer,
  "groundingToolCount": [
    {
      object (GroundingToolCount)
    }
  ]
}

ModalityTokens

Số token cho một phương thức phản hồi duy nhất.

Trường
modality enum (ResponseModality)

Phương thức liên kết với số token.

tokens integer

Số lượng mã thông báo cho phương thức.

Biểu diễn dưới dạng JSON
{
  "modality": enum (ResponseModality),
  "tokens": integer
}

GroundingToolCount

Số lượng công cụ tiếp đất.

Trường
type enum (Type)

Loại công cụ cơ sở liên kết với số lượng.

count integer

Số lượng công cụ tiếp đất.

Biểu diễn dưới dạng JSON
{
  "type": enum (Type),
  "count": integer
}

WebhookConfig

Thông báo để định cấu hình các sự kiện webhook cho một yêu cầu.

Trường
uris[] string

Không bắt buộc. Nếu được đặt, các URI webhook này sẽ được dùng cho các sự kiện webhook thay vì các webhook đã đăng ký.

userMetadata object (Struct format)

Không bắt buộc. Siêu dữ liệu người dùng sẽ được trả về trên mỗi lần phát sự kiện cho webhook.

Biểu diễn dưới dạng JSON
{
  "uris": [
    string
  ],
  "userMetadata": {
    object
  }
}

SafetySetting

Một chế độ cài đặt an toàn ảnh hưởng đến hành vi chặn nội dung không an toàn.

[SafetySetting][google.cloud.aiplatform.master.SafetySetting] bao gồm một [danh mục][google.cloud.aiplatform.master.SafetySetting.category] nội dung gây hại và một [ngưỡng][google.cloud.aiplatform.master.SafetySetting.threshold] cho danh mục đó.

Trường
type enum (HarmCategory)

Bắt buộc. Loại danh mục nội dung gây hại cần chặn.

threshold enum (HarmBlockThreshold)

Bắt buộc. Ngưỡng chặn nội dung. Nếu xác suất gây hại vượt quá ngưỡng này, nội dung sẽ bị chặn.

method enum (HarmBlockMethod)

Không bắt buộc. Phương thức chặn nội dung. Nếu bạn không chỉ định, hành vi mặc định là sử dụng điểm số xác suất.

Biểu diễn dưới dạng JSON
{
  "type": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold),
  "method": enum (HarmBlockMethod)
}

Giao hàng

Chế độ phân phối cho đầu ra âm thanh.

Enum
DELIVERY_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
INLINE Dữ liệu âm thanh được trả về nội tuyến trong phản hồi.
URI Dữ liệu âm thanh được trả về dưới dạng một URI.

Môi trường

Biểu thị môi trường đang hoạt động, chẳng hạn như trình duyệt web.

Enum
ENVIRONMENT_UNSPECIFIED Giá trị mặc định là trình duyệt.
BROWSER Hoạt động trong trình duyệt web.
MOBILE Hoạt động trong môi trường di động.
DESKTOP Hoạt động trong môi trường máy tính.

HarmBlockMethod

Phương thức chặn nội dung.

Enum
HARM_BLOCK_METHOD_UNSPECIFIED Phương thức chặn nội dung gây hại chưa được chỉ định.
SEVERITY Phương pháp chặn nội dung gây hại sử dụng cả điểm xác suất và điểm mức độ nghiêm trọng.
PROBABILITY Phương thức chặn nội dung gây hại sử dụng điểm số xác suất.

HarmBlockThreshold

Ngưỡng chặn nội dung dựa trên khả năng gây hại.

Enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED Ngưỡng chặn nội dung gây hại chưa được chỉ định.
BLOCK_LOW_AND_ABOVE Chặn nội dung có xác suất gây hại từ thấp trở lên.
BLOCK_MEDIUM_AND_ABOVE Chặn nội dung có xác suất gây hại từ trung bình trở lên.
BLOCK_ONLY_HIGH Chặn nội dung có xác suất gây hại cao.
BLOCK_NONE Không chặn bất kỳ nội dung nào, bất kể khả năng gây hại của nội dung đó.
OFF Tắt hoàn toàn bộ lọc an toàn.

ImageSize

Kích thước hình ảnh được hỗ trợ cho đầu ra hình ảnh.

Enum
IMAGE_SIZE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
IMAGE_SIZE_FIVE_TWELVE Kích thước hình ảnh 512px.
IMAGE_SIZE_ONE_K Kích thước hình ảnh là 1K.
IMAGE_SIZE_TWO_K Kích thước hình ảnh 2K.
IMAGE_SIZE_FOUR_K Kích thước hình ảnh 4K.

Ngôn ngữ

Ngôn ngữ lập trình được hỗ trợ cho mã được tạo.

Enum
LANGUAGE_UNSPECIFIED Ngôn ngữ không xác định. Bạn không nên sử dụng giá trị này.
PYTHON Python >= 3.10, có sẵn numpy và simpy.

MediaResolution

Độ phân giải cho nội dung nghe nhìn đầu vào (hình ảnh/video).

Enum
MEDIA_RESOLUTION_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
LOW Độ phân giải thấp.
MEDIUM Độ phân giải trung bình.
HIGH Độ phân giải cao.
ULTRA_HIGH Độ phân giải siêu cao.

MimeType

Enum
TYPE_UNSPECIFIED
TYPE_WAV Định dạng âm thanh WAV
TYPE_MP3 Định dạng âm thanh MP3
TYPE_AIFF Định dạng âm thanh AIFF
TYPE_AAC Định dạng âm thanh AAC
TYPE_OGG Định dạng âm thanh OGG
TYPE_FLAC Định dạng âm thanh FLAC
TYPE_MPEG Định dạng âm thanh MPEG
TYPE_M4A Định dạng âm thanh M4A
TYPE_L16 Định dạng âm thanh L16
TYPE_OPUS Định dạng âm thanh OPUS
TYPE_ALAW Định dạng âm thanh ALAW
TYPE_MULAW Định dạng âm thanh MULAW

Chế độ

Xác định độ sâu và mức độ kỹ lưỡng của phiên tìm kiếm.

Enum
MODE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
MODE_SCAN Quét nhanh chỉ bằng trình phân loại ban đầu.
MODE_VERIFY Thực hiện phân loại, sau đó điều tra chi tiết.

NetworkMode

Chế độ truyền dữ liệu ra mạng cho các cấu hình không có trong danh sách cho phép.

Enum
NETWORK_MODE_UNSPECIFIED Giá trị mặc định. Không dùng đến.
DISABLED Tất cả lưu lượng truy cập ra khỏi mạng đều bị chặn.

ResponseModality

Phương thức phản hồi.

Enum
RESPONSE_MODALITY_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
TEXT Cho biết mô hình sẽ trả về văn bản.
IMAGE Cho biết mô hình sẽ trả về hình ảnh.
AUDIO Cho biết mô hình sẽ trả về âm thanh.
VIDEO Cho biết mô hình phải trả về video.
DOCUMENT Cho biết mô hình sẽ trả về các tài liệu.

ReviewSnippet

Đóng gói một đoạn trích của bài đánh giá người dùng để trả lời một câu hỏi về các tính năng của một địa điểm cụ thể trong Google Maps.

Trường
title string

Tiêu đề của bài đánh giá.

url string

Đường liên kết tương ứng với bài đánh giá của người dùng trên Google Maps.

reviewId string

Mã của đoạn trích thông tin đánh giá.

Biểu diễn dưới dạng JSON
{
  "title": string,
  "url": string,
  "reviewId": string
}

SafetyPolicy

Enum
SAFETY_POLICY_UNSPECIFIED Chưa chỉ định chính sách an toàn.
FINANCIAL_TRANSACTIONS Chính sách an toàn đối với giao dịch tài chính.
SENSITIVE_DATA_MODIFICATION Chính sách an toàn đối với việc sửa đổi dữ liệu nhạy cảm.
COMMUNICATION_TOOL Chính sách an toàn cho các công cụ giao tiếp (ví dụ: Gmail, Chat, Meet).
ACCOUNT_CREATION Chính sách an toàn đối với việc tạo tài khoản.
DATA_MODIFICATION Chính sách an toàn đối với việc sửa đổi dữ liệu.
LEGAL_TERMS_AND_AGREEMENTS Chính sách an toàn đối với các điều khoản pháp lý và thoả thuận.

Lược đồ

Đối tượng Schema cho phép xác định các loại dữ liệu đầu vào và đầu ra. Các loại này có thể là đối tượng, nhưng cũng có thể là các kiểu dữ liệu nguyên thuỷ và mảng. Đại diện cho một tập hợp con được chọn của đối tượng giản đồ OpenAPI 3.0.

Trường
type enum (Type)

Bắt buộc. Loại dữ liệu.

format string

Không bắt buộc. Định dạng của dữ liệu. Bạn có thể dùng bất kỳ giá trị nào, nhưng hầu hết các giá trị đều không kích hoạt chức năng đặc biệt nào.

title string

Không bắt buộc. Tiêu đề của giản đồ.

description string

Không bắt buộc. Nội dung mô tả ngắn gọn về tham số. Phần này có thể chứa ví dụ về cách sử dụng. Bạn có thể định dạng nội dung mô tả tham số dưới dạng Markdown.

nullable boolean

Không bắt buộc. Cho biết liệu giá trị có thể rỗng hay không.

enum[] string

Không bắt buộc. Các giá trị có thể có của phần tử Type.STRING có định dạng enum. Ví dụ: chúng ta có thể xác định một Enum Direction như sau: {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Không bắt buộc. Số lượng phần tử tối đa cho Type.ARRAY.

minItems string (int64 format)

Không bắt buộc. Số lượng phần tử tối thiểu cho Type.ARRAY.

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

Không bắt buộc. Thuộc tính của Type.OBJECT.

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Không bắt buộc. Thuộc tính bắt buộc của Type.OBJECT.

minProperties string (int64 format)

Không bắt buộc. Số lượng tối thiểu của các thuộc tính cho Type.OBJECT.

maxProperties string (int64 format)

Không bắt buộc. Số lượng thuộc tính tối đa cho Type.OBJECT.

minLength string (int64 format)

Không bắt buộc. CÁC TRƯỜNG GIẢN ĐỒ CHO LOẠI CHUỖI Độ dài tối thiểu của Type.STRING

maxLength string (int64 format)

Không bắt buộc. Độ dài tối đa của Type.STRING

pattern string

Không bắt buộc. Mẫu của Type.STRING để hạn chế một chuỗi thành biểu thức chính quy.

example value (Value format)

Không bắt buộc. Ví dụ về đối tượng. Chỉ được điền sẵn khi đối tượng là gốc.

anyOf[] object (Schema)

Không bắt buộc. Giá trị phải được xác thực dựa trên bất kỳ (một hoặc nhiều) lược đồ con nào trong danh sách.

propertyOrdering[] string

Không bắt buộc. Thứ tự của các thuộc tính. Không phải là một trường tiêu chuẩn trong thông số kỹ thuật API mở. Được dùng để xác định thứ tự của các thuộc tính trong phản hồi.

default value (Value format)

Không bắt buộc. Giá trị mặc định của trường. Theo Lược đồ JSON, trường này dành cho các trình tạo tài liệu và không ảnh hưởng đến quá trình xác thực. Do đó, trường này được đưa vào đây và bị bỏ qua để những nhà phát triển gửi giản đồ có trường default không gặp phải lỗi trường không xác định.

items object (Schema)

Không bắt buộc. Giản đồ của các phần tử thuộc Type.ARRAY.

minimum number

Không bắt buộc. CÁC TRƯỜNG LƯỢC ĐỒ CHO LOẠI SỐ NGUYÊN và SỐ Giá trị tối thiểu của Loại.SỐ NGUYÊN và Loại.SỐ

maximum number

Không bắt buộc. Giá trị tối đa của Type.INTEGER và Type.NUMBER

Biểu diễn dưới dạng 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
}

Loại

Loại này chứa danh sách các kiểu dữ liệu OpenAPI theo định nghĩa của https://spec.openapis.org/oas/v3.0.3#data-types

Enum
TYPE_UNSPECIFIED Không được chỉ định, không nên sử dụng.
STRING Loại chuỗi.
NUMBER Loại số.
INTEGER Loại số nguyên.
BOOLEAN Loại boolean.
ARRAY Loại mảng.
OBJECT Loại đối tượng.
NULL Loại giá trị rỗng.

Kiểu Tìm

Các loại thông tin cơ sở để tìm kiếm cần bật.

Enum
SEARCH_TYPE_UNSPECIFIED Loại tìm kiếm chưa được chỉ định. Bạn không nên sử dụng giá trị này.

Struct

Struct đại diện cho một giá trị dữ liệu có cấu trúc, bao gồm các trường ánh xạ đến các giá trị được nhập động.

Trường
fields[] object (Field)

Các trường được nhập linh động. Liệt kê thay vì sử dụng bản đồ vì LLM rất nhạy cảm với việc sắp xếp và chúng tôi muốn người dùng có toàn quyền kiểm soát.

Biểu diễn dưới dạng JSON
{
  "fields": [
    {
      object (Field)
    }
  ]
}

Trường

Đại diện cho một trường duy nhất trong một cấu trúc.

Trường
name string
value object (Value)
Biểu diễn dưới dạng JSON
{
  "name": string,
  "value": {
    object (Value)
  }
}

Việc cần làm

Các tác vụ tạo video được hỗ trợ.

Enum
TASK_UNSPECIFIED Việc cần làm không xác định. Nhiệm vụ được suy luận từ câu lệnh và nội dung nghe nhìn đầu vào.
TEXT_TO_VIDEO Tạo video chỉ từ một câu lệnh dạng văn bản.
IMAGE_TO_VIDEO Tạo video từ một hoặc hai hình ảnh nguồn. Hình ảnh đầu tiên xác định khung hình bắt đầu và hình ảnh thứ hai (không bắt buộc) xác định khung hình kết thúc.
REFERENCE_TO_VIDEO Tạo video bằng nội dung nghe nhìn tham khảo (chẳng hạn như hình ảnh, âm thanh hoặc video).
EDIT Sửa đổi một video đầu vào hiện có.

ThinkingLevel

Số lượng mã thông báo suy nghĩ mà mô hình sẽ tạo.

Enum
THINKING_LEVEL_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
THINKING_LEVEL_MINIMAL Không cần suy nghĩ nhiều.
THINKING_LEVEL_LOW Cấp độ tư duy thấp.
THINKING_LEVEL_MEDIUM Cấp độ tư duy trung bình.
THINKING_LEVEL_HIGH Cấp độ tư duy cao.

ThinkingSummaries

Có nên đưa bản tóm tắt suy nghĩ vào câu trả lời hay không.

Enum
THINKING_SUMMARIES_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
THINKING_SUMMARIES_AUTO Tự động tóm tắt suy nghĩ.
THINKING_SUMMARIES_NONE Không có bản tóm tắt suy nghĩ.

Công cụ

Thông tin chi tiết về công cụ mà mô hình có thể dùng để tạo câu trả lời.

Tool là một đoạn mã cho phép hệ thống tương tác với các hệ thống bên ngoài để thực hiện một hành động hoặc một nhóm hành động nằm ngoài kiến thức và phạm vi của mô hình.

ID tiếp theo: 16

Trường
functionDeclarations[] object (FunctionDeclaration)

Không bắt buộc. Danh sách FunctionDeclarations có sẵn cho mô hình có thể dùng để gọi hàm.

Mô hình hoặc hệ thống không thực hiện chức năng này. Thay vào đó, hàm đã xác định có thể được trả về dưới dạng FunctionCall với các đối số cho phía máy khách để thực thi. Mô hình có thể quyết định gọi một nhóm nhỏ các hàm này bằng cách điền sẵn FunctionCall trong phản hồi. Lượt trò chuyện tiếp theo có thể chứa một FunctionResponse với ngữ cảnh tạo "hàm" Content.role cho lượt tiếp theo của mô hình.

googleSearchRetrieval object (GoogleSearchRetrieval)

Không bắt buộc. Công cụ truy xuất do Google Tìm kiếm cung cấp.

codeExecution object (CodeExecution)

Không bắt buộc. Cho phép mô hình thực thi mã trong quá trình tạo.

computerUse object (ComputerUse)

Không bắt buộc. Công cụ hỗ trợ mô hình tương tác trực tiếp với máy tính. Nếu được bật, tính năng này sẽ tự động điền các Khai báo hàm cụ thể về việc sử dụng máy tính.

urlContext object (UrlContext)

Không bắt buộc. Công cụ hỗ trợ truy xuất bối cảnh URL.

mcpServers[] object (McpServer)

Không bắt buộc. Các máy chủ MCP cần kết nối.

googleMaps object (GoogleMaps)

Không bắt buộc. Công cụ cho phép căn cứ câu trả lời của mô hình vào ngữ cảnh không gian địa lý liên quan đến cụm từ tìm kiếm của người dùng.

Biểu diễn dưới dạng 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

Biểu diễn có cấu trúc của một khai báo hàm theo định nghĩa của quy cách OpenAPI 3.03. Tên hàm và các tham số có trong khai báo này. FunctionDeclaration này là một bản trình bày của một khối mã có thể được mô hình dùng làm Tool và được ứng dụng thực thi.

Trường
name string

Bắt buộc. Tên của hàm. Phải là a-z, A-Z, 0-9 hoặc chứa dấu gạch dưới, dấu hai chấm, dấu chấm và dấu gạch ngang, với độ dài tối đa là 128.

description string

Bắt buộc. Nội dung mô tả ngắn gọn về chức năng.

behavior enum (Behavior)

Không bắt buộc. Chỉ định hàm Behavior. Hiện chỉ được phương thức BidiGenerateContent hỗ trợ.

parameters object (Schema)

Không bắt buộc. Mô tả các tham số cho hàm này. Phản ánh Khoá chuỗi Đối tượng tham số Open API 3.03: tên của tham số. Tên tham số có phân biệt chữ hoa chữ thường. Giá trị giản đồ: Giản đồ xác định loại được dùng cho tham số.

parametersJsonSchema value (Value format)

Không bắt buộc. Mô tả các tham số cho hàm ở định dạng Giản đồ JSON. Lược đồ phải mô tả một đối tượng trong đó các thuộc tính là tham số cho hàm. Ví dụ:

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

Trường này mang tính loại trừ lẫn nhau với parameters.

response object (Schema)

Không bắt buộc. Mô tả đầu ra của hàm này ở định dạng JSON Schema. Phản ánh Đối tượng phản hồi Open API 3.03. Lược đồ xác định loại được dùng cho giá trị phản hồi của hàm.

responseJsonSchema value (Value format)

Không bắt buộc. Mô tả đầu ra của hàm này ở định dạng JSON Schema. Giá trị do giản đồ chỉ định là giá trị phản hồi của hàm.

Trường này mang tính loại trừ lẫn nhau với response.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Hành vi

Xác định hành vi của hàm. Giá trị mặc định là BLOCKING.

Enum
UNSPECIFIED Giá trị này không được dùng.
BLOCKING Nếu được đặt, hệ thống sẽ đợi nhận được phản hồi của hàm trước khi tiếp tục cuộc trò chuyện.
NON_BLOCKING Nếu được đặt, hệ thống sẽ không đợi nhận được phản hồi của hàm. Thay vào đó, nó sẽ cố gắng xử lý các phản hồi của hàm khi chúng có sẵn, đồng thời duy trì cuộc trò chuyện giữa người dùng và mô hình.

GoogleSearchRetrieval

Công cụ do Google cung cấp để truy xuất dữ liệu trên web công khai nhằm cung cấp thông tin cơ sở.

Trường
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Chỉ định cấu hình truy xuất linh động cho nguồn đã cho.

Biểu diễn dưới dạng JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Mô tả các lựa chọn để tuỳ chỉnh việc truy xuất động.

Trường
mode enum (Mode)

Chế độ của trình dự đoán sẽ được dùng trong quá trình truy xuất linh động.

dynamicThreshold number

Ngưỡng được dùng trong quá trình truy xuất động. Nếu bạn không đặt, hệ thống sẽ sử dụng giá trị mặc định.

Biểu diễn dưới dạng JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Chế độ

Chế độ của trình dự đoán sẽ được dùng trong quá trình truy xuất linh động.

Enum
MODE_UNSPECIFIED Luôn kích hoạt quá trình truy xuất.
MODE_DYNAMIC Chỉ chạy quy trình truy xuất khi hệ thống quyết định rằng quy trình này là cần thiết.

CodeExecution

Loại này không có trường nào.

Công cụ thực thi mã do mô hình tạo và tự động trả về kết quả cho mô hình.

Xem thêm ExecutableCodeCodeExecutionResult. Các thông tin này chỉ được tạo khi bạn sử dụng công cụ này.

GoogleSearch

Loại công cụ Google Tìm kiếm. Công cụ hỗ trợ Google Tìm kiếm trong Model. Do Google cung cấp.

Trường
timeRangeFilter object (Interval)

Không bắt buộc. Lọc kết quả tìm kiếm theo một khoảng thời gian cụ thể. Nếu đặt thời gian bắt đầu, khách hàng phải đặt thời gian kết thúc (và ngược lại).

searchTypes object (SearchTypes)

Không bắt buộc. Tập hợp các loại tìm kiếm cần bật. Nếu bạn không đặt chính sách này, thì tính năng tìm kiếm trên web sẽ được bật theo mặc định.

Biểu diễn dưới dạng JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Khoảng cách

Biểu thị một khoảng thời gian, được mã hoá dưới dạng thời gian bắt đầu (bao gồm) của một Dấu thời gian và thời gian kết thúc (không bao gồm) của Dấu thời gian.

Giá trị bắt đầu phải nhỏ hơn hoặc bằng giá trị kết thúc. Khi thời gian bắt đầu bằng thời gian kết thúc, khoảng thời gian sẽ trống (không khớp với thời gian nào). Khi cả thời gian bắt đầu và kết thúc đều không được chỉ định, khoảng thời gian sẽ khớp với mọi thời điểm.

Trường
startTime string (Timestamp format)

Không bắt buộc. Điểm bắt đầu của khoảng thời gian (bao gồm cả điểm này).

Nếu được chỉ định, Dấu thời gian khớp với khoảng thời gian này phải có cùng hoặc sau thời gian bắt đầu.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Không bắt buộc. Điểm kết thúc của khoảng thời gian (không bao gồm).

Nếu được chỉ định, Dấu thời gian khớp với khoảng thời gian này sẽ phải nằm trước thời gian kết thúc.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

Biểu diễn dưới dạng JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Các loại tìm kiếm có thể được bật trên công cụ Google Tìm kiếm.

Trường
Biểu diễn dưới dạng JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Loại này không có trường nào.

Tìm kiếm thông tin trên web theo cách thông thường để làm cơ sở và các cấu hình liên quan.

ImageSearch

Loại này không có trường nào.

Tìm kiếm hình ảnh để thiết lập cơ sở và các cấu hình liên quan.

ComputerUse

Loại công cụ Sử dụng máy tính.

Trường
environment enum (Environment)

Bắt buộc. Môi trường đang hoạt động.

excludedPredefinedFunctions[] string

Không bắt buộc. Theo mặc định, các hàm được xác định trước sẽ được đưa vào lệnh gọi mô hình cuối cùng. Bạn có thể loại trừ một số đối tượng một cách rõ ràng để không được tự động thêm. Việc này có thể phục vụ hai mục đích: 1. Sử dụng không gian hành động bị hạn chế hơn / khác. 2. Cải thiện định nghĩa / hướng dẫn của các hàm được xác định trước.

enablePromptInjectionDetection boolean

Không bắt buộc. Có bật chế độ kiểm tra phát hiện tiêm câu lệnh (prompt injection) trên yêu cầu sử dụng máy tính hay không.

disabledSafetyPolicies[] enum (SafetyPolicy)

Không bắt buộc. Tắt các chính sách an toàn khi sử dụng máy tính.

Biểu diễn dưới dạng JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Môi trường

Biểu thị môi trường đang hoạt động, chẳng hạn như trình duyệt web.

Enum
ENVIRONMENT_UNSPECIFIED Giá trị mặc định là trình duyệt.
ENVIRONMENT_BROWSER Hoạt động trong trình duyệt web.
ENVIRONMENT_MOBILE Hoạt động trong môi trường di động.
ENVIRONMENT_DESKTOP Hoạt động trong môi trường máy tính.

SafetyPolicy

Các chính sách an toàn được xác định trước để sử dụng máy tính.

Enum
SAFETY_POLICY_UNSPECIFIED Chưa chỉ định chính sách an toàn.
FINANCIAL_TRANSACTIONS Chính sách an toàn đối với giao dịch tài chính.
SENSITIVE_DATA_MODIFICATION Chính sách an toàn đối với việc sửa đổi dữ liệu nhạy cảm.
COMMUNICATION_TOOL Chính sách an toàn cho các công cụ giao tiếp (ví dụ: Gmail, Chat, Meet).
ACCOUNT_CREATION Chính sách an toàn đối với việc tạo tài khoản.
DATA_MODIFICATION Chính sách an toàn đối với việc sửa đổi dữ liệu.
LEGAL_TERMS_AND_AGREEMENTS Chính sách an toàn đối với các điều khoản pháp lý và thoả thuận.

UrlContext

Loại này không có trường nào.

Công cụ hỗ trợ truy xuất bối cảnh URL.

FileSearch

Công cụ FileSearch truy xuất kiến thức từ các kho ngữ liệu Truy xuất ngữ nghĩa. Các tệp được nhập vào các kho ngữ liệu của tính năng Truy xuất ngữ nghĩa bằng cách sử dụng ImportFile API.

Trường
fileSearchStoreNames[] string

Bắt buộc. Tên của fileSearchStores cần truy xuất. Ví dụ: fileSearchStores/my-file-search-store-123

metadataFilter string

Không bắt buộc. Bộ lọc siêu dữ liệu để áp dụng cho các tài liệu và đoạn văn bản truy xuất ngữ nghĩa.

topK integer

Không bắt buộc. Số lượng đoạn truy xuất ngữ nghĩa cần truy xuất.

Biểu diễn dưới dạng JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCPServer là một máy chủ mà mô hình có thể gọi để thực hiện các hành động. Đây là một máy chủ triển khai giao thức MCP. Mã nhận dạng tiếp theo: 6

Trường
name string

Tên của MCPServer.

transport Union type
Phương thức truyền tải dùng để kết nối với MCPServer. transport chỉ có thể là một trong những trạng thái sau:
streamableHttpTransport object (StreamableHttpTransport)

Một phương thức truyền tải có thể truyền trực tuyến các yêu cầu và phản hồi HTTP.

Biểu diễn dưới dạng JSON
{
  "name": string,

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

StreamableHttpTransport

Một phương thức truyền tải có thể truyền trực tuyến các yêu cầu và phản hồi HTTP. Mã nhận dạng tiếp theo: 6

Trường
url string

URL đầy đủ cho điểm cuối MCPServer. Ví dụ: "https://api.example.com/mcp"

headers map (key: string, value: string)

Không bắt buộc: Các trường cho tiêu đề xác thực, thời gian chờ, v.v. (nếu cần).

Một đối tượng chứa danh sách các cặp "key": value. Ví dụ: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Thời gian chờ HTTP cho các hoạt động thông thường.

Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân và kết thúc bằng "s". Ví dụ: "3.5s".

sseReadTimeout string (Duration format)

Thời gian chờ cho các thao tác đọc SSE.

Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân và kết thúc bằng "s". Ví dụ: "3.5s".

terminateOnClose boolean

Xác định xem có đóng phiên ứng dụng khi quá trình truyền dữ liệu đóng hay không.

Biểu diễn dưới dạng JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

Công cụ Google Maps cung cấp ngữ cảnh không gian địa lý cho cụm từ tìm kiếm của người dùng.

Trường
enableWidget boolean

Không bắt buộc. Có trả về mã thông báo ngữ cảnh tiện ích trong GroundingMetadata của phản hồi hay không. Nhà phát triển có thể sử dụng token ngữ cảnh tiện ích để hiển thị một tiện ích Google Maps có bối cảnh không gian địa lý liên quan đến những địa điểm mà mô hình tham chiếu trong câu trả lời.

Biểu diễn dưới dạng JSON
{
  "enableWidget": boolean
}

ToolChoiceType

Loại lựa chọn công cụ.

Enum
TOOL_CHOICE_TYPE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
AUTO Tự động chọn công cụ.
ANY Chọn công cụ bất kỳ.
NONE Không có lựa chọn nào về công cụ.
VALIDATED Lựa chọn công cụ đã được xác thực.

Giá trị

Value biểu thị một giá trị được nhập động, có thể là giá trị rỗng, số, chuỗi, boolean, giá trị cấu trúc đệ quy hoặc danh sách giá trị. Nhà sản xuất giá trị dự kiến sẽ đặt một trong các biến thể này. Nếu không có biến thể nào thì tức là đã xảy ra lỗi.

Trường
kind Union type
Loại giá trị. kind chỉ có thể là một trong những trạng thái sau:
nullValue null

Biểu thị một giá trị rỗng.

numberValue number

Biểu thị một giá trị kiểu double.

stringValue string

Biểu thị một giá trị chuỗi.

boolValue boolean

Biểu thị một giá trị boolean.

structValue object (Struct)

Biểu thị một giá trị có cấu trúc.

listValue object (ListValue)

Đại diện cho một Value lặp lại.

contentValue object (Content)

Biểu thị nội dung đa dạng thức (văn bản, hình ảnh, v.v.).

Biểu diễn dưới dạng JSON
{

  // kind
  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object (Struct)
  },
  "listValue": {
    object (ListValue)
  },
  "contentValue": {
    object (Content)
  }
  // Union type
}

ListValue

ListValue là một trình bao bọc xung quanh một trường lặp lại của các giá trị.

Trường
values[] object (Value)

Trường lặp lại của các giá trị được nhập động.

Biểu diễn dưới dạng JSON
{
  "values": [
    {
      object (Value)
    }
  ]
}

VisualizationMode

Liệt kê cho chế độ trực quan hoá. Cuối cùng, chúng tôi sẽ hỗ trợ một chế độ tương tác, trong đó người dùng có thể chọn có đưa hình ảnh trực quan HTML vào câu trả lời hay không.

Enum
UNSPECIFIED Chế độ trực quan hoá mặc định. Theo mặc định, chế độ này sẽ được đặt thành AUTO.
OFF Không thêm hình ảnh trực quan.
AUTO Tự động thêm các hình ảnh trực quan.

Tài nguyên REST: auth_tokens

Tài nguyên: AuthToken

Yêu cầu tạo mã thông báo xác thực tạm thời.

Trường
name string

Chỉ có đầu ra. Giá trị nhận dạng. Chính mã thông báo.

expireTime string (Timestamp format)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Thời gian không bắt buộc sau đó, khi sử dụng mã thông báo kết quả, các thông báo trong phiên BidiGenerateContent sẽ bị từ chối. (Gemini có thể chủ động đóng phiên sau thời gian này.)

Nếu bạn không đặt chính sách này, thì chính sách này sẽ mặc định là 30 phút sau. Nếu được đặt, giá trị này phải nhỏ hơn 20 giờ trong tương lai.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Thời gian sau đó các phiên Live API mới sử dụng mã thông báo có được từ yêu cầu này sẽ bị từ chối.

Nếu bạn không đặt, thì sau này giá trị này sẽ mặc định là 60 giây. Nếu được đặt, giá trị này phải nhỏ hơn 20 giờ trong tương lai.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Nếu fieldMask trống và không có bidiGenerateContentSetup, thì thông báo BidiGenerateContentSetup có hiệu lực sẽ được lấy từ mối kết nối Live API.

Nếu fieldMask trống và có bidiGenerateContentSetup , thì thông báo BidiGenerateContentSetup có hiệu lực sẽ được lấy hoàn toàn từ bidiGenerateContentSetup trong yêu cầu này. Thông báo thiết lập từ kết nối Live API sẽ bị bỏ qua.

Nếu fieldMask không phải là một trường trống, thì các trường tương ứng trong bidiGenerateContentSetup sẽ ghi đè các trường trong thông báo thiết lập trong kết nối Live API.

Đây là danh sách tên đủ điều kiện của các trường được phân tách bằng dấu phẩy. Ví dụ: "user.displayName,photo"

config Union type
Cấu hình dành riêng cho phương thức của mã thông báo nhận được. config chỉ có thể là một trong những trạng thái sau:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Cấu hình dành riêng cho BidiGenerateContent.

uses integer

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Số lần có thể sử dụng mã thông báo. Nếu giá trị này bằng 0 thì không có giới hạn nào được áp dụng. Việc tiếp tục một phiên Live API không được tính là một lượt sử dụng. Nếu bạn không chỉ định, giá trị mặc định là 1.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

Tin nhắn sẽ được gửi trong BidiGenerateContentClientMessage đầu tiên (và chỉ trong đầu tiên). Chứa cấu hình sẽ áp dụng trong suốt thời gian của RPC truyền phát trực tiếp.

Ứng dụng nên đợi thông báo BidiGenerateContentSetupComplete trước khi gửi thêm thông báo.

Trường
model string

Bắt buộc. Tên tài nguyên của mô hình. Đây là mã nhận dạng để Mô hình sử dụng.

Định dạng models/{model}

generationConfig object (GenerationConfig)

Không bắt buộc. Cấu hình tạo.

Các trường sau không được hỗ trợ:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

Không bắt buộc. Người dùng đã cung cấp hướng dẫn hệ thống cho mô hình.

Lưu ý: Bạn chỉ nên sử dụng văn bản trong các phần và nội dung trong mỗi phần sẽ nằm trong một đoạn văn riêng.

tools[] object (Tool)

Không bắt buộc. Một danh sách Tools mà mô hình có thể dùng để tạo câu trả lời tiếp theo.

Tool là một đoạn mã cho phép hệ thống tương tác với các hệ thống bên ngoài để thực hiện một hành động hoặc một nhóm hành động nằm ngoài kiến thức và phạm vi của mô hình.

realtimeInputConfig object (RealtimeInputConfig)

Không bắt buộc. Định cấu hình cách xử lý dữ liệu đầu vào theo thời gian thực.

sessionResumption object (SessionResumptionConfig)

Không bắt buộc. Định cấu hình cơ chế tiếp tục phiên.

Nếu có, máy chủ sẽ gửi thông báo SessionResumptionUpdate.

contextWindowCompression object (ContextWindowCompressionConfig)

Không bắt buộc. Định cấu hình cơ chế nén cửa sổ ngữ cảnh.

Nếu được đưa vào, máy chủ sẽ tự động giảm kích thước của ngữ cảnh khi ngữ cảnh vượt quá độ dài đã định cấu hình.

inputAudioTranscription object (AudioTranscriptionConfig)

Không bắt buộc. Nếu được đặt, chế độ này sẽ bật tính năng chép lời nội dung nhập bằng giọng nói. Bản chép lời sẽ khớp với ngôn ngữ âm thanh đầu vào (nếu được định cấu hình).

outputAudioTranscription object (AudioTranscriptionConfig)

Không bắt buộc. Nếu được đặt, sẽ bật tính năng chép lời đầu ra âm thanh của mô hình. Bản chép lời sẽ khớp với mã ngôn ngữ được chỉ định cho âm thanh đầu ra (nếu được định cấu hình).

historyConfig object (HistoryConfig)

Không bắt buộc. Định cấu hình việc trao đổi nhật ký giữa ứng dụng và máy chủ.

Biểu diễn dưới dạng 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)
  }
}

GenerationConfig

Các lựa chọn cấu hình để tạo mô hình và đầu ra. Không phải mô hình nào cũng có thể định cấu hình mọi thông số.

Trường
stopSequences[] string

Không bắt buộc. Tập hợp các chuỗi ký tự (tối đa 5) sẽ dừng quá trình tạo đầu ra. Nếu được chỉ định, API sẽ dừng ở lần xuất hiện đầu tiên của stop_sequence. Chuỗi dừng sẽ không được đưa vào câu trả lời.

responseMimeType string

Không bắt buộc. Loại MIME của văn bản đề xuất được tạo. Các loại MIME được hỗ trợ là: text/plain: (mặc định) Đầu ra văn bản. application/json: Phản hồi JSON trong các đề xuất phản hồi. text/x.enum: ENUM dưới dạng phản hồi chuỗi trong các đề xuất phản hồi. Hãy tham khảo tài liệu để biết danh sách tất cả các loại MIME văn bản được hỗ trợ.

responseSchema
(deprecated)
object (Schema)

Không bắt buộc. Giản đồ đầu ra của văn bản đề xuất được tạo. Giản đồ phải là một tập hợp con của giản đồ OpenAPI và có thể là các đối tượng, nguyên hàm hoặc mảng.

Nếu bạn đặt chế độ này, thì bạn cũng phải đặt một responseMimeType tương thích. Các loại MIME tương thích: application/json: Giản đồ cho phản hồi JSON. Hãy tham khảo hướng dẫn tạo văn bản JSON để biết thêm thông tin chi tiết.

_responseJsonSchema
(deprecated)
value (Value format)

Không bắt buộc. Lược đồ đầu ra của câu trả lời được tạo. Đây là một lựa chọn thay thế cho responseSchema, chấp nhận Giản đồ JSON.

Nếu được đặt, bạn phải bỏ qua responseSchema, nhưng phải có responseMimeType.

Mặc dù bạn có thể gửi toàn bộ giản đồ JSON, nhưng không phải tính năng nào cũng được hỗ trợ. Cụ thể, chỉ những thuộc tính sau được hỗ trợ:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (đối với chuỗi và số)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (được diễn giải giống như anyOf)
  • properties
  • additionalProperties
  • required

Bạn cũng có thể đặt thuộc tính propertyOrdering không chuẩn.

Các tham chiếu theo chu kỳ được mở ra ở một mức độ giới hạn và do đó, chỉ có thể được sử dụng trong các thuộc tính không bắt buộc. (Các thuộc tính có thể rỗng là không đủ.) Nếu bạn đặt $ref trên một lược đồ con, thì không thể đặt bất kỳ thuộc tính nào khác, ngoại trừ những thuộc tính bắt đầu bằng $.

responseJsonSchema value (Value format)

Không bắt buộc. Một chi tiết nội bộ. Hãy sử dụng responseJsonSchema thay vì trường này.

responseModalities[] enum (Modality)

Không bắt buộc. Các phương thức phản hồi được yêu cầu. Biểu thị tập hợp các phương thức mà mô hình có thể trả về và dự kiến sẽ có trong phản hồi. Đây là một kết quả khớp chính xác với các phương thức phản hồi.

Một mô hình có thể có nhiều tổ hợp phương thức được hỗ trợ. Nếu các phương thức được yêu cầu không khớp với bất kỳ tổ hợp nào được hỗ trợ, thì hệ thống sẽ trả về lỗi.

Danh sách trống tương đương với việc chỉ yêu cầu văn bản.

candidateCount integer

Không bắt buộc. Số lượng câu trả lời được tạo cần trả về. Nếu bạn không đặt, giá trị này sẽ mặc định là 1. Xin lưu ý rằng tính năng này không hoạt động đối với các mô hình thế hệ trước (dòng Gemini 1.0)

maxOutputTokens integer

Không bắt buộc. Số lượng mã thông báo tối đa cần đưa vào một đề xuất phản hồi.

Lưu ý: Giá trị mặc định tuỳ theo mô hình, hãy xem thuộc tính Model.output_token_limit của Model được trả về từ hàm getModel.

temperature number

Không bắt buộc. Kiểm soát tính ngẫu nhiên của đầu ra.

Lưu ý: Giá trị mặc định tuỳ theo mô hình, hãy xem thuộc tính Model.temperature của Model được trả về từ hàm getModel.

Giá trị có thể nằm trong khoảng [0.0, 2.0].

topP number

Không bắt buộc. Xác suất tích luỹ tối đa của các mã thông báo cần xem xét khi lấy mẫu.

Mô hình này sử dụng phương pháp lấy mẫu kết hợp Top-k và Top-p (hạt nhân).

Các mã thông báo được sắp xếp dựa trên xác suất được chỉ định để chỉ những mã thông báo có khả năng cao nhất mới được xem xét. Phương pháp lấy mẫu k hàng đầu trực tiếp giới hạn số lượng mã thông báo tối đa cần xem xét, trong khi phương pháp lấy mẫu theo hạt nhân giới hạn số lượng mã thông báo dựa trên xác suất tích luỹ.

Lưu ý: Giá trị mặc định thay đổi theo Model và được chỉ định bằng thuộc tính Model.top_p do hàm getModel trả về. Thuộc tính topK trống cho biết mô hình không áp dụng phương pháp lấy mẫu k hàng đầu và không cho phép đặt topK trên các yêu cầu.

topK integer

Không bắt buộc. Số lượng mã thông báo tối đa cần xem xét khi lấy mẫu.

Các mô hình Gemini sử dụng phương pháp lấy mẫu Top-p (hạt nhân) hoặc kết hợp phương pháp lấy mẫu Top-k và hạt nhân. Phương pháp lấy mẫu k hàng đầu xem xét tập hợp topK mã thông báo có khả năng xảy ra nhất. Các mô hình chạy với phương pháp lấy mẫu hạt nhân không cho phép thiết lập topK.

Lưu ý: Giá trị mặc định thay đổi theo Model và được chỉ định bằng thuộc tính Model.top_p do hàm getModel trả về. Thuộc tính topK trống cho biết mô hình không áp dụng phương pháp lấy mẫu k hàng đầu và không cho phép đặt topK trên các yêu cầu.

seed integer

Không bắt buộc. Giá trị ban đầu dùng trong quá trình giải mã. Nếu bạn không đặt, yêu cầu sẽ sử dụng một giá trị ban đầu được tạo ngẫu nhiên.

presencePenalty number

Không bắt buộc. Hình phạt về sự hiện diện được áp dụng cho logprobs của mã thông báo tiếp theo nếu mã thông báo đó đã xuất hiện trong câu trả lời.

Mức phạt này là mức phạt nhị phân (bật/tắt) và không phụ thuộc vào số lần sử dụng mã thông báo (sau lần đầu tiên). Sử dụng frequencyPenalty cho một khoản tiền phạt tăng lên theo mỗi lần sử dụng.

Mức phạt dương sẽ ngăn chặn việc sử dụng các mã thông báo đã được dùng trong câu trả lời, giúp tăng vốn từ vựng.

Mức phạt âm sẽ khuyến khích việc sử dụng các mã thông báo đã được dùng trong câu trả lời, giảm từ vựng.

frequencyPenalty number

Không bắt buộc. Mức phạt tần suất được áp dụng cho logprobs của mã thông báo tiếp theo, nhân với số lần mỗi mã thông báo đã xuất hiện trong phản hồi cho đến nay.

Mức phạt dương sẽ ngăn chặn việc sử dụng các mã thông báo đã được sử dụng, tỷ lệ thuận với số lần mã thông báo đã được sử dụng: Mã thông báo càng được sử dụng nhiều, thì mô hình càng khó sử dụng lại mã thông báo đó, từ đó làm tăng vốn từ vựng của các câu trả lời.

Thận trọng: Mức phạt tiêu cực sẽ khuyến khích mô hình sử dụng lại mã thông báo tương ứng với số lần mã thông báo đã được sử dụng. Các giá trị âm nhỏ sẽ làm giảm từ vựng của câu trả lời. Các giá trị âm lớn hơn sẽ khiến mô hình bắt đầu lặp lại một mã thông báo phổ biến cho đến khi đạt đến giới hạn maxOutputTokens.

responseLogprobs boolean

Không bắt buộc. Nếu đúng, hãy xuất kết quả logprobs trong phản hồi.

logprobs integer

Không bắt buộc. Chỉ hợp lệ nếu responseLogprobs=True. Tham số này đặt số lượng logprob hàng đầu (bao gồm cả đề xuất đã chọn) cần trả về ở mỗi bước giải mã trong Candidate.logprobs_result. Số này phải nằm trong phạm vi [0, 20].

enableEnhancedCivicAnswers boolean

Không bắt buộc. Bật câu trả lời nâng cao về thông tin công dân. Tính năng này có thể không hoạt động trên một số mẫu.

speechConfig object (SpeechConfig)

Không bắt buộc. Cấu hình tạo lời nói.

thinkingConfig object (ThinkingConfig)

Không bắt buộc. Cấu hình cho các tính năng suy nghĩ. Hệ thống sẽ trả về lỗi nếu bạn đặt trường này cho những mô hình không hỗ trợ tính năng suy nghĩ.

imageConfig object (ImageConfig)

Không bắt buộc. Cấu hình để tạo hình ảnh. Hệ thống sẽ trả về lỗi nếu bạn đặt trường này cho những mô hình không hỗ trợ các lựa chọn cấu hình này.

mediaResolution enum (MediaResolution)

Không bắt buộc. Nếu được chỉ định, độ phân giải của nội dung nghe nhìn được chỉ định sẽ được dùng.

enableAffectiveDialog boolean

Không bắt buộc. Nếu được bật, mô hình sẽ phát hiện cảm xúc và điều chỉnh các câu trả lời cho phù hợp.

responseFormat object (ResponseFormatConfig)

Không bắt buộc. Cấu hình cho định dạng đầu ra của phản hồi. Cho phép chỉ định cấu hình đầu ra cho mỗi phương thức (văn bản, âm thanh, hình ảnh) trong một cấu trúc phẳng.

translationConfig object (TranslationConfig)

Không bắt buộc. Cấu hình để dịch.

Biểu diễn dưới dạng 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)
  }
}

Phương thức

Các phương thức được hỗ trợ của câu trả lời.

Enum
MODALITY_UNSPECIFIED Giá trị mặc định.
TEXT Cho biết mô hình sẽ trả về văn bản.
IMAGE Cho biết mô hình sẽ trả về hình ảnh.
AUDIO Cho biết mô hình sẽ trả về âm thanh.

SpeechConfig

Cấu hình để tạo và chép lời.

Trường
voiceConfig object (VoiceConfig)

Cấu hình trong trường hợp đầu ra một giọng nói.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Không bắt buộc. Cấu hình cho chế độ thiết lập nhiều loa. Trường này mang tính loại trừ lẫn nhau với trường voiceConfig.

languageCode string

Không bắt buộc. Mã ngôn ngữ BCP-47 của IETF mà người dùng đã định cấu hình để ứng dụng sử dụng. Được dùng để nhận dạng và tổng hợp lời nói.

Các giá trị hợp lệ là: 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-RUth-TH.

Biểu diễn dưới dạng JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

Cấu hình cho giọng nói sẽ sử dụng.

Trường
voice_config Union type
Cấu hình mà loa sẽ sử dụng. voice_config chỉ có thể là một trong những trạng thái sau:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Cấu hình cho giọng nói được tạo sẵn để sử dụng.

Biểu diễn dưới dạng JSON
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  }
  // Union type
}

PrebuiltVoiceConfig

Cấu hình mà loa dựng sẵn sẽ sử dụng.

Trường
voiceName string

Tên của giọng nói đặt sẵn cần sử dụng.

Biểu diễn dưới dạng JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Cấu hình cho chế độ thiết lập nhiều loa.

Trường
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Bắt buộc. Tất cả giọng nói của người nói đã bật.

Biểu diễn dưới dạng JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

Cấu hình cho một loa trong chế độ thiết lập nhiều loa.

Trường
speaker string

Bắt buộc. Tên của loa cần sử dụng. Phải giống như trong câu lệnh.

voiceConfig object (VoiceConfig)

Bắt buộc. Cấu hình cho giọng nói sẽ sử dụng.

Biểu diễn dưới dạng JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Cấu hình cho các tính năng suy nghĩ.

Trường
includeThoughts boolean

Cho biết có nên đưa suy nghĩ vào câu trả lời hay không. Nếu đúng, suy nghĩ chỉ được trả về khi có sẵn.

thinkingBudget integer

Số lượng mã thông báo suy nghĩ mà mô hình sẽ tạo.

thinkingLevel enum (ThinkingLevel)

Không bắt buộc. Kiểm soát độ sâu tối đa của quy trình suy luận nội bộ của mô hình trước khi mô hình tạo ra một câu trả lời. Giá trị mặc định phụ thuộc vào mô hình. Hãy tham khảo Hướng dẫn về các cấp độ tư duy để biết thêm thông tin chi tiết. Dành cho các mô hình Gemini 3 trở lên. Việc sử dụng với các mô hình cũ hơn sẽ dẫn đến lỗi.

Biểu diễn dưới dạng JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Cho phép người dùng chỉ định mức cần nghĩ bằng cách sử dụng enum thay vì ngân sách số nguyên.

Enum
THINKING_LEVEL_UNSPECIFIED Giá trị mặc định.
MINIMAL Không cần suy nghĩ nhiều.
LOW Cấp độ tư duy thấp.
MEDIUM Cấp độ tư duy trung bình.
HIGH Cấp độ tư duy cao.

ImageConfig

Cấu hình cho các tính năng tạo hình ảnh.

Trường
aspectRatio string

Không bắt buộc. Tỷ lệ khung hình của hình ảnh cần tạo. Tỷ lệ khung hình được hỗ trợ: 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 hoặc 21:9.

Nếu bạn không chỉ định, mô hình sẽ chọn tỷ lệ khung hình mặc định dựa trên mọi hình ảnh tham khảo được cung cấp.

imageSize string

Không bắt buộc. Chỉ định kích thước của hình ảnh được tạo. Các giá trị được hỗ trợ là 512, 1K, 2K, 4K. Nếu bạn không chỉ định, mô hình sẽ sử dụng giá trị mặc định 1K.

Biểu diễn dưới dạng JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Độ phân giải của nội dung nghe nhìn đầu vào.

Enum
MEDIA_RESOLUTION_UNSPECIFIED Chưa đặt độ phân giải cho nội dung nghe nhìn.
MEDIA_RESOLUTION_LOW Độ phân giải của nội dung nghe nhìn được đặt ở mức thấp (64 mã thông báo).
MEDIA_RESOLUTION_MEDIUM Độ phân giải của nội dung nghe nhìn được đặt ở mức trung bình (256 mã thông báo).
MEDIA_RESOLUTION_HIGH Độ phân giải của nội dung nghe nhìn được đặt ở mức cao (tái khung hình được phóng to với 256 mã thông báo).

ResponseFormatConfig

Cấu hình cho định dạng đầu ra của phản hồi. Đây là một đối tượng cố định, trong đó mỗi cấu hình trường phụ không bắt buộc sẽ định cấu hình một phương thức đầu ra cụ thể.

Trường
text object (TextResponseFormat)

Không bắt buộc. Cấu hình định dạng đầu ra văn bản.

audio object (AudioResponseFormat)

Không bắt buộc. Cấu hình định dạng đầu ra âm thanh.

image object (ImageResponseFormat)

Không bắt buộc. Cấu hình định dạng đầu ra của hình ảnh.

Biểu diễn dưới dạng JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Cấu hình cho định dạng đầu ra văn bản.

Trường
mimeType enum (MimeType)

Không bắt buộc. Loại MIME của đầu ra văn bản.

schema value (Value format)

Không bắt buộc. Giản đồ JSON mà đầu ra phải tuân thủ. Chỉ áp dụng khi mimeType là APPLICATION_JSON.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

Các loại MIME được hỗ trợ cho đầu ra văn bản.

Enum
MIME_TYPE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
APPLICATION_JSON Định dạng đầu ra JSON.
TEXT_PLAIN Định dạng đầu ra văn bản thuần tuý.

AudioResponseFormat

Cấu hình cho định dạng đầu ra âm thanh.

Trường
mimeType enum (MimeType)

Không bắt buộc. Loại MIME của đầu ra âm thanh.

delivery enum (Delivery)

Không bắt buộc. Chế độ phân phối cho đầu ra âm thanh.

sampleRate integer

Không bắt buộc. Tốc độ lấy mẫu tính bằng Hz.

bitRate integer

Không bắt buộc. Tốc độ bit tính bằng bit trên giây (bps). Chỉ áp dụng cho các định dạng nén (MP3, Opus).

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

Các loại MIME được hỗ trợ cho đầu ra âm thanh.

Enum
MIME_TYPE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
AUDIO_MP3 Định dạng âm thanh MP3.
AUDIO_OGG_OPUS Định dạng âm thanh OGG Opus.
AUDIO_L16 Định dạng âm thanh PCM thô (L16).
AUDIO_WAV Định dạng âm thanh WAV.
AUDIO_ALAW Định dạng âm thanh A-law.
AUDIO_MULAW Định dạng âm thanh Mu-law.

Giao hàng

Chế độ phân phối cho đầu ra âm thanh.

Enum
DELIVERY_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
INLINE Dữ liệu âm thanh được trả về nội tuyến trong phản hồi.
URI Dữ liệu âm thanh được trả về dưới dạng một URI.

ImageResponseFormat

Cấu hình cho định dạng đầu ra của hình ảnh.

Trường
mimeType enum (MimeType)

Không bắt buộc. Loại MIME của đầu ra hình ảnh.

delivery enum (Delivery)

Không bắt buộc. Chế độ phân phối cho đầu ra hình ảnh.

aspectRatio enum (AspectRatio)

Không bắt buộc. Tỷ lệ khung hình cho đầu ra hình ảnh.

imageSize enum (ImageSize)

Không bắt buộc. Kích thước của đầu ra hình ảnh.

Biểu diễn dưới dạng JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

Các loại MIME được hỗ trợ cho đầu ra hình ảnh.

Enum
MIME_TYPE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
IMAGE_JPEG Định dạng hình ảnh JPEG.

Giao hàng

Chế độ phân phối cho đầu ra hình ảnh.

Enum
DELIVERY_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
INLINE Dữ liệu hình ảnh được trả về cùng dòng trong phản hồi.
URI Dữ liệu hình ảnh được trả về dưới dạng URI.

AspectRatio

Tỷ lệ khung hình được hỗ trợ cho đầu ra hình ảnh.

Enum
ASPECT_RATIO_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
ASPECT_RATIO_ONE_BY_ONE Tỷ lệ khung hình 1:1.
ASPECT_RATIO_TWO_BY_THREE Tỷ lệ khung hình 2:3.
ASPECT_RATIO_THREE_BY_TWO Tỷ lệ khung hình 3:2.
ASPECT_RATIO_THREE_BY_FOUR Tỷ lệ khung hình 3:4.
ASPECT_RATIO_FOUR_BY_THREE Tỷ lệ khung hình 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Tỷ lệ khung hình 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Tỷ lệ khung hình 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Tỷ lệ khung hình 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Tỷ lệ khung hình 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Tỷ lệ khung hình 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Tỷ lệ khung hình 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Tỷ lệ khung hình 8:1.
ASPECT_RATIO_ONE_BY_FOUR Tỷ lệ khung hình 1:4.
ASPECT_RATIO_FOUR_BY_ONE Tỷ lệ khung hình 4:1.

ImageSize

Kích thước hình ảnh được hỗ trợ cho đầu ra hình ảnh.

Enum
IMAGE_SIZE_UNSPECIFIED Giá trị mặc định. Giá trị này không được dùng.
IMAGE_SIZE_FIVE_TWELVE Kích thước hình ảnh 512px.
IMAGE_SIZE_ONE_K Kích thước hình ảnh là 1K.
IMAGE_SIZE_TWO_K Kích thước hình ảnh 2K.
IMAGE_SIZE_FOUR_K Kích thước hình ảnh 4K.

TranslationConfig

Cấu hình cho các tính năng dịch.

Trường
targetLanguageCode string

Bắt buộc. Ngôn ngữ đích của bản dịch. Giá trị được hỗ trợ là mã ngôn ngữ BCP-47 (ví dụ: "en", "es", "fr").

echoTargetLanguage boolean

Không bắt buộc. Nếu đúng, mô hình sẽ tạo âm thanh khi ngôn ngữ đích được nói, về cơ bản, mô hình sẽ bắt chước nội dung đầu vào. Nếu là false, chúng tôi sẽ không tạo âm thanh cho ngôn ngữ mục tiêu.

Biểu diễn dưới dạng JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

RealtimeInputConfig

Định cấu hình hành vi nhập liệu theo thời gian thực trong BidiGenerateContent.

Trường
automaticActivityDetection object (AutomaticActivityDetection)

Không bắt buộc. Nếu bạn không đặt, thì tính năng tự động phát hiện hoạt động sẽ được bật theo mặc định. Nếu tính năng tự động phát hiện giọng nói bị tắt, thì ứng dụng phải gửi tín hiệu hoạt động.

activityHandling enum (ActivityHandling)

Không bắt buộc. Xác định hiệu ứng của hoạt động.

turnCoverage enum (TurnCoverage)

Không bắt buộc. Xác định dữ liệu đầu vào nào được đưa vào lượt của người dùng.

Biểu diễn dưới dạng JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

Định cấu hình tính năng tự động phát hiện hoạt động.

Trường
disabled boolean

Không bắt buộc. Nếu được bật (mặc định), thì giọng nói và văn bản đã phát hiện sẽ được tính là hoạt động. Nếu bị vô hiệu hoá, ứng dụng phải gửi tín hiệu hoạt động.

startOfSpeechSensitivity enum (StartSensitivity)

Không bắt buộc. Xác định khả năng phát hiện lời nói.

prefixPaddingMs integer

Không bắt buộc. Thời lượng bắt buộc của lời nói được phát hiện trước khi bắt đầu lời nói được cam kết. Giá trị này càng thấp thì tính năng phát hiện bắt đầu lời nói càng nhạy và lời nói càng ngắn thì càng được nhận dạng. Tuy nhiên, điều này cũng làm tăng khả năng có kết quả dương tính giả.

endOfSpeechSensitivity enum (EndSensitivity)

Không bắt buộc. Xác định khả năng lời nói được phát hiện đã kết thúc.

silenceDurationMs integer

Không bắt buộc. Thời lượng bắt buộc của đoạn không phải lời nói được phát hiện (ví dụ: khoảng lặng) trước khi kết thúc lời nói. Giá trị này càng lớn thì khoảng trống trong lời nói có thể càng dài mà không làm gián đoạn hoạt động của người dùng, nhưng điều này sẽ làm tăng độ trễ của mô hình.

Biểu diễn dưới dạng JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

Xác định cách phát hiện điểm bắt đầu của lời nói.

Enum
START_SENSITIVITY_UNSPECIFIED Giá trị mặc định là START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH Tính năng tự động phát hiện sẽ phát hiện điểm bắt đầu của lời nói thường xuyên hơn.
START_SENSITIVITY_LOW Tính năng phát hiện tự động sẽ ít phát hiện được điểm bắt đầu của lời nói hơn.

EndSensitivity

Xác định cách phát hiện phần cuối của lời nói.

Enum
END_SENSITIVITY_UNSPECIFIED Giá trị mặc định là END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Tính năng tự động phát hiện thường kết thúc lời nói.
END_SENSITIVITY_LOW Tính năng tự động phát hiện ít khi kết thúc lời nói.

ActivityHandling

Các cách xử lý hoạt động của người dùng.

Enum
ACTIVITY_HANDLING_UNSPECIFIED Nếu bạn không chỉ định, hành vi mặc định sẽ là START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Nếu đúng, hoạt động bắt đầu sẽ làm gián đoạn phản hồi của mô hình (còn gọi là "barge in"). Câu trả lời hiện tại của mô hình sẽ bị cắt ngang khi có yêu cầu mới. Đây là hành vi mặc định.
NO_INTERRUPTION Câu trả lời của mô hình sẽ không bị gián đoạn.

TurnCoverage

Các lựa chọn về dữ liệu đầu vào có trong lượt của người dùng.

Enum
TURN_COVERAGE_UNSPECIFIED Nếu bạn không chỉ định, hệ thống sẽ chọn một hành vi mặc định dựa trên mô hình. Ví dụ: đối với Gemini 2.5, giá trị mặc định là TURN_INCLUDES_ONLY_ACTIVITY, còn đối với Gemini 3.1 trở lên, giá trị mặc định là TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Bao gồm hoạt động kể từ lượt gần đây nhất, không bao gồm thời gian không hoạt động (ví dụ: không có âm thanh trong luồng âm thanh).
TURN_INCLUDES_ALL_INPUT Bao gồm tất cả dữ liệu đầu vào theo thời gian thực kể từ lượt gần đây nhất, kể cả thời gian không hoạt động (ví dụ: không có âm thanh trong luồng âm thanh).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Bao gồm hoạt động âm thanh và tất cả video kể từ lượt tương tác gần đây nhất. Với tính năng tự động phát hiện hoạt động, hoạt động âm thanh có nghĩa là lời nói và không bao gồm khoảng lặng.

SessionResumptionConfig

Cấu hình tiếp tục phiên.

Thông báo này có trong cấu hình phiên dưới dạng BidiGenerateContentSetup.session_resumption. Nếu được định cấu hình, máy chủ sẽ gửi thông báo SessionResumptionUpdate.

Trường
handle string

Xử lý một phiên trước đó. Nếu không có, thì một phiên mới sẽ được tạo.

Xử lý phiên đến từ các giá trị SessionResumptionUpdate.token trong các kết nối trước đó.

Biểu diễn dưới dạng JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Cho phép nén cửa sổ ngữ cảnh – một cơ chế để quản lý cửa sổ ngữ cảnh của mô hình sao cho cửa sổ này không vượt quá một độ dài nhất định.

Trường
compression_mechanism Union type
Cơ chế nén cửa sổ ngữ cảnh được sử dụng. compression_mechanism chỉ có thể là một trong những trạng thái sau:
slidingWindow object (SlidingWindow)

Cơ chế cửa sổ trượt.

triggerTokens string (int64 format)

Số lượng mã thông báo (trước khi chạy một lượt) cần thiết để kích hoạt quá trình nén cửa sổ ngữ cảnh.

Bạn có thể dùng tham số này để cân bằng chất lượng với độ trễ vì cửa sổ ngữ cảnh ngắn hơn có thể giúp mô hình phản hồi nhanh hơn. Tuy nhiên, mọi thao tác nén sẽ làm tăng độ trễ tạm thời, vì vậy, bạn không nên kích hoạt các thao tác này thường xuyên.

Nếu bạn không đặt giá trị này, thì giá trị mặc định là 80% giới hạn cửa sổ ngữ cảnh của mô hình. Điều này còn lại 20% cho yêu cầu tiếp theo của người dùng/phản hồi của mô hình.

Biểu diễn dưới dạng JSON
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

Phương thức SlidingWindow hoạt động bằng cách loại bỏ nội dung ở đầu cửa sổ ngữ cảnh. Ngữ cảnh thu được sẽ luôn bắt đầu từ đầu lượt của vai trò NGƯỜI DÙNG. Hướng dẫn hệ thống và mọi BidiGenerateContentSetup.prefix_turns sẽ luôn nằm ở đầu kết quả.

Trường
targetTokens string (int64 format)

Số lượng mã thông báo mục tiêu cần giữ lại. Giá trị mặc định là triggerTokens/2.

Việc loại bỏ các phần của cửa sổ ngữ cảnh sẽ làm tăng độ trễ tạm thời, vì vậy, bạn nên hiệu chỉnh giá trị này để tránh các thao tác nén thường xuyên.

Biểu diễn dưới dạng JSON
{
  "targetTokens": string
}

AudioTranscriptionConfig

Cấu hình bản chép lời.

Trường
adaptationPhrases[]
(deprecated)
string

Không bắt buộc. Danh sách các cụm từ được dùng để điều chỉnh lời nói, giúp mô hình ASR cải thiện khả năng nhận dạng các cụm từ cụ thể này.

customVocabulary[] string

Không bắt buộc. Danh sách các cụm từ từ vựng tuỳ chỉnh để điều chỉnh mô hình nhận dạng lời nói nhằm nhận dạng các thuật ngữ cụ thể (tên sản phẩm, danh từ riêng, thuật ngữ chuyên ngành).

language_config Union type
Cấu hình ngôn ngữ cho bản chép lời. Đối với các mô hình ASR, bạn phải đặt tham số này. Nếu không, hệ thống sẽ trả về lỗi. language_config chỉ có thể là một trong những trạng thái sau:
languageAuto object (LanguageAuto)

Không bắt buộc. Mô hình này sẽ tự động phát hiện ngôn ngữ.

languageHints object (LanguageHints)

Không bắt buộc. Chỉ định một hoặc nhiều ngôn ngữ trong âm thanh.

Biểu diễn dưới dạng JSON
{
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

Loại này không có trường nào.

Cho biết ngôn ngữ của âm thanh sẽ được tự động phát hiện.

LanguageHints

Cung cấp gợi ý cho mô hình về những ngôn ngữ có thể có trong âm thanh.

Trường
languageCodes[] string

Bắt buộc. Mã ngôn ngữ BCP-47.

Biểu diễn dưới dạng JSON
{
  "languageCodes": [
    string
  ]
}

HistoryConfig

Cấu hình nhật ký.

Thông báo này có trong cấu hình phiên dưới dạng BidiGenerateContentSetup.history_config. Định cấu hình việc trao đổi tin nhắn trong nhật ký.

Trường
initialHistoryInClientContent boolean

Không bắt buộc. Nếu đúng, sau khi gửi setupComplete, máy chủ sẽ đợi và trước tiên xử lý các thông báo clientContent cho đến khi turnCompletetrue. Nhật ký ban đầu này sẽ không kích hoạt lệnh gọi mô hình và có thể kết thúc bằng vai trò MODEL. Sau khi turnCompletetrue, ứng dụng có thể bắt đầu cuộc trò chuyện theo thời gian thực thông qua realtimeInput.

Biểu diễn dưới dạng JSON
{
  "initialHistoryInClientContent": boolean
}

Phương thức: auth_tokens.create

Tạo một mã thông báo có thể dùng để hạn chế hành vi của một phiên BidiGenerateContent.

Điểm cuối

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

Nội dung yêu cầu

Nội dung yêu cầu chứa một bản sao của AuthToken.

Trường
expireTime string (Timestamp format)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Thời gian không bắt buộc sau đó, khi sử dụng mã thông báo kết quả, các thông báo trong phiên BidiGenerateContent sẽ bị từ chối. (Gemini có thể chủ động đóng phiên sau thời gian này.)

Nếu bạn không đặt chính sách này, thì chính sách này sẽ mặc định là 30 phút sau. Nếu được đặt, giá trị này phải nhỏ hơn 20 giờ trong tương lai.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Thời gian sau đó các phiên Live API mới sử dụng mã thông báo có được từ yêu cầu này sẽ bị từ chối.

Nếu bạn không đặt, thì sau này giá trị này sẽ mặc định là 60 giây. Nếu được đặt, giá trị này phải nhỏ hơn 20 giờ trong tương lai.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Nếu fieldMask trống và không có bidiGenerateContentSetup, thì thông báo BidiGenerateContentSetup có hiệu lực sẽ được lấy từ mối kết nối Live API.

Nếu fieldMask trống và có bidiGenerateContentSetup , thì thông báo BidiGenerateContentSetup có hiệu lực sẽ được lấy hoàn toàn từ bidiGenerateContentSetup trong yêu cầu này. Thông báo thiết lập từ kết nối Live API sẽ bị bỏ qua.

Nếu fieldMask không phải là một trường trống, thì các trường tương ứng trong bidiGenerateContentSetup sẽ ghi đè các trường trong thông báo thiết lập trong kết nối Live API.

Đây là danh sách tên đủ điều kiện của các trường được phân tách bằng dấu phẩy. Ví dụ: "user.displayName,photo"

config Union type
Cấu hình dành riêng cho phương thức của mã thông báo nhận được. config chỉ có thể là một trong những trạng thái sau:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Cấu hình dành riêng cho BidiGenerateContent.

uses integer

Không bắt buộc. Chỉ có đầu vào. Không thể thay đổi. Số lần có thể sử dụng mã thông báo. Nếu giá trị này bằng 0 thì không có giới hạn nào được áp dụng. Việc tiếp tục một phiên Live API không được tính là một lượt sử dụng. Nếu bạn không chỉ định, giá trị mặc định là 1.

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một thực thể mới tạo của AuthToken.