Generating content

Gemini API mendukung pembuatan konten dengan gambar, audio, kode, alat, dan lainnya. Untuk mengetahui detail tentang setiap fitur ini, baca terus dan lihat kode contoh yang berfokus pada tugas, atau baca panduan lengkapnya.

Metode: models.generateContent

Menghasilkan respons model berdasarkan input GenerateContentRequest. Lihat panduan pembuatan teks untuk mengetahui informasi penggunaan yang mendetail. Kemampuan input berbeda-beda di antara model, termasuk model yang disesuaikan. Lihat panduan model dan panduan penyesuaian untuk mengetahui detailnya.

Endpoint

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

Parameter jalur

model string

Wajib. Nama Model yang akan digunakan untuk membuat penyelesaian.

Format: models/{model}. Formatnya adalah models/{model}.

Isi permintaan

Isi permintaan memuat data dengan struktur berikut:

Kolom
contents[] object (Content)

Wajib. Konten percakapan saat ini dengan model.

Untuk kueri satu giliran, ini adalah satu instance. Untuk kueri multi-giliran seperti chat, ini adalah kolom berulang yang berisi histori percakapan dan permintaan terbaru.

tools[] object (Tool)

Opsional. Daftar Tools yang dapat digunakan Model untuk menghasilkan respons berikutnya.

Tool adalah bagian kode yang memungkinkan sistem berinteraksi dengan sistem eksternal untuk melakukan tindakan, atau serangkaian tindakan, di luar pengetahuan dan cakupan Model. Tool yang didukung adalah Function dan codeExecution. Lihat panduan Pemanggilan fungsi dan Eksekusi kode untuk mempelajari lebih lanjut.

toolConfig object (ToolConfig)

Opsional. Konfigurasi alat untuk Tool yang ditentukan dalam permintaan. Lihat Panduan panggilan fungsi untuk mengetahui contoh penggunaan.

safetySettings[] object (SafetySetting)

Opsional. Daftar instance SafetySetting unik untuk memblokir konten tidak aman.

Kebijakan ini akan diterapkan pada GenerateContentRequest.contents dan GenerateContentResponse.candidates. Tidak boleh ada lebih dari satu setelan untuk setiap jenis SafetyCategory. API akan memblokir konten dan respons apa pun yang tidak memenuhi nilai minimum yang ditetapkan oleh setelan ini. Daftar ini menggantikan setelan default untuk setiap SafetyCategory yang ditentukan dalam safetySettings. Jika tidak ada SafetySetting untuk SafetyCategory tertentu yang disediakan dalam daftar, API akan menggunakan setelan keamanan default untuk kategori tersebut. Kategori bahaya HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK didukung. Lihat panduan untuk mengetahui informasi mendetail tentang setelan keamanan yang tersedia. Lihat juga Panduan keamanan untuk mempelajari cara menyertakan pertimbangan keamanan dalam aplikasi AI Anda.

continuationToken string (bytes format)

Opsional. Token lanjutan buram yang digunakan untuk melanjutkan pembuatan dari respons models.generateContent atau models.streamGenerateContent sebelumnya yang berhenti dengan finishReason ditetapkan ke CONTINUATION. Perhatikan bahwa contents bersifat wajib dan harus mereplikasi perintah dan histori percakapan secara identik dari permintaan awal saat token kelanjutan diberikan dalam permintaan.

String berenkode base64.

labels map (key: string, value: string)

Opsional. Label dengan metadata yang ditentukan pengguna untuk permintaan.

Opsional. Label harus mengikuti persyaratan label Cloud terpadu standar: - Kunci label harus diawali dengan huruf. - Kunci dan nilai label tidak boleh melampaui 63 karakter (codepoint Unicode) dan hanya boleh berisi huruf kecil, karakter numerik, garis bawah, dan tanda hubung. - Karakter internasional diperbolehkan.

Penggunaan: - ID keamanan dari agregator: Gunakan kunci safety_identifier (misalnya, {"safety_identifier": "user_session_123"})

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

systemInstruction object (Content)

Opsional. Petunjuk sistem yang ditetapkan developer. Saat ini, hanya teks.

generationConfig object (GenerationConfig)

Opsional. Opsi konfigurasi untuk pembuatan dan output model.

cachedContent string

Opsional. Nama konten yang di-cache untuk digunakan sebagai konteks guna menyajikan prediksi. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opsional. Tingkat layanan permintaan.

store boolean

Opsional. Mengonfigurasi perilaku logging untuk permintaan tertentu. Jika ditetapkan, konfigurasi ini akan lebih diprioritaskan daripada konfigurasi logging level project.

Contoh permintaan

Teks

Python

from google import genai

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

Node.js

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

const response = await ai.models.generateContent({
  model: 'gemini-3.8-flash',
  contents: 'Write a story about a magic backpack.',
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

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

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

Gambar

Python

from google import genai
import PIL.Image

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

Node.js

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

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

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

Go

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

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

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

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

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

Audio

Python

from google import genai

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

Node.js

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

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

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

Go

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

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

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

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

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

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.8-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

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

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

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

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

Go

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

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

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

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

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

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

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

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.8-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

Go

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

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

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

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

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

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

Chat

Python

from google import genai
from google.genai import types

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

Node.js

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

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

const response2 = await chat.sendMessage({
  message: 'How many paws are in my house?',
});
console.log('Chat response 2:', response2.text);

Go

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

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

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

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

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

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.8-flash",
        GenerateContentConfig.builder()
            .systemInstruction(userContent)
            .systemInstruction(modelContent)
            .build());

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

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

Cache

Python

from google import genai
from google.genai import types

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

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

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

Node.js

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

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

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

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

Go

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

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

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

Model yang Disesuaikan

Python

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

Mode JSON

Python

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

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

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

Node.js

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

Go

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

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

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

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

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

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

Eksekusi kode

Python

from google import genai
from google.genai import types

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

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

Go

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

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

// Print the response.
printResponse(response)

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

Java

Client client = new Client();

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

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

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

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

Pemanggilan Fungsi

Python

from google import genai
from google.genai import types

client = genai.Client()

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

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

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

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

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

Go

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

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

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

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

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

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

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

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

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

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

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

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

printResponse(finalResponse)

Node.js

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.8-flash",
        "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
        config);

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

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

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

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

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

System.out.println(result);

Konfigurasi pembuatan

Python

from google import genai
from google.genai import types

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

Node.js

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

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

console.log(response.text);

Go

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

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

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

printResponse(response)

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

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

Setelan Keselamatan

Python

from google import genai
from google.genai import types

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

print(response.candidates[0].safety_ratings)

Node.js

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

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

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

Go

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

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

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

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

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

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.8-flash", unsafePrompt, config);

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

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

Petunjuk Sistem

Python

from google import genai
from google.genai import types

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

Node.js

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

Go

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

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

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

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

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

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

Isi respons

Jika berhasil, isi respons memuat instance GenerateContentResponse.

Metode: models.streamGenerateContent

Menghasilkan respons yang di-streaming dari model dengan input GenerateContentRequest.

Endpoint

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

Parameter jalur

model string

Wajib. Nama Model yang akan digunakan untuk membuat penyelesaian.

Format: models/{model}. Formatnya adalah models/{model}.

Isi permintaan

Isi permintaan memuat data dengan struktur berikut:

Kolom
contents[] object (Content)

Wajib. Konten percakapan saat ini dengan model.

Untuk kueri satu giliran, ini adalah satu instance. Untuk kueri multi-giliran seperti chat, ini adalah kolom berulang yang berisi histori percakapan dan permintaan terbaru.

tools[] object (Tool)

Opsional. Daftar Tools yang dapat digunakan Model untuk menghasilkan respons berikutnya.

Tool adalah bagian kode yang memungkinkan sistem berinteraksi dengan sistem eksternal untuk melakukan tindakan, atau serangkaian tindakan, di luar pengetahuan dan cakupan Model. Tool yang didukung adalah Function dan codeExecution. Lihat panduan Pemanggilan fungsi dan Eksekusi kode untuk mempelajari lebih lanjut.

toolConfig object (ToolConfig)

Opsional. Konfigurasi alat untuk Tool yang ditentukan dalam permintaan. Lihat Panduan panggilan fungsi untuk mengetahui contoh penggunaan.

safetySettings[] object (SafetySetting)

Opsional. Daftar instance SafetySetting unik untuk memblokir konten tidak aman.

Kebijakan ini akan diterapkan pada GenerateContentRequest.contents dan GenerateContentResponse.candidates. Tidak boleh ada lebih dari satu setelan untuk setiap jenis SafetyCategory. API akan memblokir konten dan respons apa pun yang tidak memenuhi nilai minimum yang ditetapkan oleh setelan ini. Daftar ini menggantikan setelan default untuk setiap SafetyCategory yang ditentukan dalam safetySettings. Jika tidak ada SafetySetting untuk SafetyCategory tertentu yang disediakan dalam daftar, API akan menggunakan setelan keamanan default untuk kategori tersebut. Kategori bahaya HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK didukung. Lihat panduan untuk mengetahui informasi mendetail tentang setelan keamanan yang tersedia. Lihat juga Panduan keamanan untuk mempelajari cara menyertakan pertimbangan keamanan dalam aplikasi AI Anda.

continuationToken string (bytes format)

Opsional. Token lanjutan buram yang digunakan untuk melanjutkan pembuatan dari respons models.generateContent atau models.streamGenerateContent sebelumnya yang berhenti dengan finishReason ditetapkan ke CONTINUATION. Perhatikan bahwa contents bersifat wajib dan harus mereplikasi perintah dan histori percakapan secara identik dari permintaan awal saat token kelanjutan diberikan dalam permintaan.

String berenkode base64.

labels map (key: string, value: string)

Opsional. Label dengan metadata yang ditentukan pengguna untuk permintaan.

Opsional. Label harus mengikuti persyaratan label Cloud terpadu standar: - Kunci label harus diawali dengan huruf. - Kunci dan nilai label tidak boleh melampaui 63 karakter (codepoint Unicode) dan hanya boleh berisi huruf kecil, karakter numerik, garis bawah, dan tanda hubung. - Karakter internasional diperbolehkan.

Penggunaan: - ID keamanan dari agregator: Gunakan kunci safety_identifier (misalnya, {"safety_identifier": "user_session_123"})

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

systemInstruction object (Content)

Opsional. Petunjuk sistem yang ditetapkan developer. Saat ini, hanya teks.

generationConfig object (GenerationConfig)

Opsional. Opsi konfigurasi untuk pembuatan dan output model.

cachedContent string

Opsional. Nama konten yang di-cache untuk digunakan sebagai konteks guna menyajikan prediksi. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opsional. Tingkat layanan permintaan.

store boolean

Opsional. Mengonfigurasi perilaku logging untuk permintaan tertentu. Jika ditetapkan, konfigurasi ini akan lebih diprioritaskan daripada konfigurasi logging level project.

Contoh permintaan

Teks

Python

from google import genai

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

Node.js

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

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: 'Write a story about a magic backpack.',
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

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

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

responseStream.close();

Gambar

Python

from google import genai
import PIL.Image

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

Node.js

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

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

const response = await ai.models.generateContentStream({
  model: 'gemini-3.8-flash',
  contents: [
    createUserContent([
      'Tell me about this instrument',
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = '';
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx,
	filepath.Join(getMedia(), "organ.jpg"),
	&genai.UploadFileConfig{
		MIMEType: "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.8-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

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

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

responseStream.close();

Audio

Python

from google import genai

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

Go

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

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

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

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

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

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.8-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

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

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

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

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

Go

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

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

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

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

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

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

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

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.8-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

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

Go

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

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

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

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

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

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

Chat

Python

from google import genai
from google.genai import types

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

print(chat.get_history())

Node.js

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

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

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

console.log(chat.getHistory());

Go

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

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

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

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

fmt.Println(chat.History(false))

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"

Isi respons

Jika berhasil, isi respons akan berisi aliran instance GenerateContentResponse.

GenerateContentResponse

Respons dari model yang mendukung beberapa respons kandidat.

Rating keamanan dan pemfilteran konten dilaporkan untuk perintah di GenerateContentResponse.prompt_feedback dan untuk setiap kandidat di finishReason dan di safetyRatings. API: - Menampilkan semua kandidat yang diminta atau tidak sama sekali - Tidak menampilkan kandidat sama sekali hanya jika ada yang salah dengan perintah (periksa promptFeedback) - Melaporkan masukan untuk setiap kandidat di finishReason dan safetyRatings.

Kolom
candidates[] object (Candidate)

Respons kandidat dari model.

promptFeedback object (PromptFeedback)

Menampilkan masukan perintah yang terkait dengan filter konten.

usageMetadata object (UsageMetadata)

Hanya output. Metadata tentang penggunaan token permintaan pembuatan.

modelVersion string

Hanya output. Versi model yang digunakan untuk menghasilkan respons.

responseId string

Khusus output. responseId digunakan untuk mengidentifikasi setiap respons.

modelStatus object (ModelStatus)

Hanya output. Status model saat ini dari model ini.

Representasi JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

Serangkaian metadata masukan yang ditentukan perintah di GenerateContentRequest.content.

Kolom
blockReason enum (BlockReason)

Opsional. Jika ditetapkan, perintah akan diblokir dan tidak ada kandidat yang ditampilkan. Susun ulang kata-kata pada perintah Anda.

safetyRatings[] object (SafetyRating)

Rating untuk keamanan perintah. Maksimal satu rating per kategori.

Representasi JSON
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

Menentukan alasan perintah diblokir.

Enum
BLOCK_REASON_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
SAFETY Perintah diblokir karena alasan keamanan. Periksa safetyRatings untuk memahami kategori keamanan mana yang memblokirnya.
OTHER Perintah diblokir karena alasan yang tidak diketahui.
BLOCKLIST Perintah diblokir karena istilah yang disertakan dari daftar yang tidak diizinkan.
PROHIBITED_CONTENT Perintah diblokir karena konten terlarang.
IMAGE_SAFETY Kandidat diblokir karena konten pembuatan gambar yang tidak aman.

UsageMetadata

Metadata tentang penggunaan token permintaan pembuatan.

Kolom
promptTokenCount integer

Jumlah token dalam perintah. Jika cachedContent ditetapkan, ini tetap merupakan total ukuran perintah efektif, yang berarti ini mencakup jumlah token dalam konten yang di-cache.

cachedContentTokenCount integer

Jumlah token di bagian prompt yang di-cache (konten yang di-cache)

candidatesTokenCount integer

Jumlah total token di semua kandidat respons yang dihasilkan.

toolUsePromptTokenCount integer

Hanya output. Jumlah token yang ada dalam perintah penggunaan alat.

thoughtsTokenCount integer

Hanya output. Jumlah token pemikiran untuk model penalaran.

totalTokenCount integer

Jumlah total token untuk permintaan pembuatan (perintah + perintah penggunaan alat + pemikiran + kandidat respons).

promptTokensDetails[] object (ModalityTokenCount)

Hanya output. Daftar modalitas yang diproses dalam input permintaan.

cacheTokensDetails[] object (ModalityTokenCount)

Hanya output. Daftar modalitas konten yang di-cache dalam input permintaan.

candidatesTokensDetails[] object (ModalityTokenCount)

Hanya output. Daftar modalitas yang ditampilkan dalam respons.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Hanya output. Daftar modalitas yang diproses untuk input permintaan penggunaan alat.

serviceTier enum (ServiceTier)

Hanya output. Paket layanan permintaan.

Representasi 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

Status model yang mendasarinya. Ini digunakan untuk menunjukkan tahap model yang mendasarinya dan waktu penghentian jika berlaku.

Kolom
modelStage enum (ModelStage)

Tahap model yang mendasarinya.

retirementTime string (Timestamp format)

Waktu saat model akan dihentikan.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

message string

Pesan yang menjelaskan status model.

Representasi JSON
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Menentukan tahap model yang mendasarinya.

Enum
MODEL_STAGE_UNSPECIFIED Tahap model tidak ditentukan.
UNSTABLE_EXPERIMENTAL

Model yang mendasarinya tunduk pada banyak penyesuaian.

EXPERIMENTAL Model dalam tahap ini hanya untuk tujuan eksperimental.
PREVIEW Model dalam tahap ini lebih matang daripada model eksperimental.
STABLE Model dalam tahap ini dianggap stabil dan siap untuk penggunaan produksi.
LEGACY Jika model berada di tahap ini, berarti model ini sedang dalam proses penghentian dalam waktu dekat. Hanya pelanggan lama yang dapat menggunakan model ini.
DEPRECATED

Model dalam tahap ini tidak digunakan lagi. Model ini tidak dapat digunakan.

RETIRED Model dalam tahap ini dihentikan. Model ini tidak dapat digunakan.

Kandidat

Kandidat respons yang dihasilkan dari model.

Kolom
content object (Content)

Hanya output. Konten yang dihasilkan yang ditampilkan dari model.

finishReason enum (FinishReason)

Opsional. Hanya output. Alasan model berhenti menghasilkan token.

Jika kosong, berarti model belum berhenti menghasilkan token.

safetyRatings[] object (SafetyRating)

Daftar rating untuk keamanan kandidat respons.

Maksimal satu rating per kategori.

citationMetadata object (CitationMetadata)

Hanya output. Informasi kutipan untuk kandidat yang dihasilkan model.

Kolom ini dapat diisi dengan informasi pembacaan untuk teks apa pun yang disertakan dalam content. Teks ini adalah teks yang "dibacakan" dari materi yang dilindungi hak cipta dalam data pelatihan LLM dasar.

tokenCount integer

Hanya output. Jumlah token untuk kandidat ini.

groundingAttributions[] object (GroundingAttribution)

Hanya output. Informasi atribusi untuk sumber yang berkontribusi pada jawaban yang di-grounding.

Kolom ini diisi untuk panggilan GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Hanya output. Metadata grounding untuk kandidat.

Kolom ini diisi untuk panggilan GenerateContent.

avgLogprobs number

Hanya output. Skor probabilitas log rata-rata kandidat.

logprobsResult object (LogprobsResult)

Hanya output. Skor log-likelihood untuk token respons dan token teratas

urlContextMetadata object (UrlContextMetadata)

Hanya output. Metadata yang terkait dengan alat pengambilan konteks URL.

continuationToken string (bytes format)

Token kelanjutan buram opsional yang ditampilkan saat finishReason adalah CONTINUATION. Klien dapat meneruskan token ini dalam GenerateContentRequest berikutnya untuk melanjutkan pembuatan.

String berenkode base64.

index integer

Hanya output. Indeks kandidat dalam daftar kandidat respons.

finishMessage string

Opsional. Hanya output. Menjelaskan alasan model berhenti menghasilkan token. Kolom ini hanya diisi jika finishReason ditetapkan.

Representasi JSON
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "continuationToken": string,
  "index": integer,
  "finishMessage": string
}

FinishReason

Menentukan alasan model berhenti menghasilkan token.

Enum
FINISH_REASON_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
STOP Titik perhentian alami model atau urutan penghentian yang disediakan.
MAX_TOKENS Jumlah maksimum token seperti yang ditentukan dalam permintaan telah tercapai.
SAFETY Konten kandidat respons ditandai karena alasan keamanan.
RECITATION Konten kandidat respons ditandai karena alasan pengutipan.
LANGUAGE Konten kandidat respons ditandai karena menggunakan bahasa yang tidak didukung.
OTHER Alasan tidak diketahui.
BLOCKLIST Pembuatan token dihentikan karena konten berisi istilah yang dilarang.
PROHIBITED_CONTENT Pembuatan token dihentikan karena berpotensi berisi konten terlarang.
SPII Pembuatan token dihentikan karena konten berpotensi berisi Informasi Identitas Pribadi yang Bersifat Sensitif (SPII).
MALFORMED_FUNCTION_CALL Panggilan fungsi yang dihasilkan oleh model tidak valid.
IMAGE_SAFETY Pembuatan token dihentikan karena gambar generatif yang dihasilkan berisi pelanggaran keamanan.
IMAGE_PROHIBITED_CONTENT Pembuatan gambar dihentikan karena gambar yang dihasilkan berisi konten terlarang lainnya.
IMAGE_OTHER Pembuatan gambar dihentikan karena masalah lain-lain.
NO_IMAGE Model diharapkan membuat gambar, tetapi tidak ada gambar yang dibuat.
IMAGE_RECITATION Pembuatan gambar dihentikan karena pengutipan.
UNEXPECTED_TOOL_CALL Model membuat panggilan alat, tetapi tidak ada alat yang diaktifkan dalam permintaan.
TOO_MANY_TOOL_CALLS Model memanggil terlalu banyak alat secara berturut-turut, sehingga sistem keluar dari eksekusi.
MISSING_THOUGHT_SIGNATURE Permintaan tidak memiliki setidaknya satu tanda tangan pemikiran.
MALFORMED_RESPONSE Selesai karena respons salah format.
ESCALATION Permintaan difilter oleh aturan eskalasi.
PUP_LIMITED_DISABLED Menunjukkan bahwa pembuatan token dihentikan karena akun pengguna dibatasi atau dinonaktifkan akibat pelanggaran Kebijakan Penggunaan Terlarang (PUP).
CONTINUATION Pembuatan token dihentikan karena respons mencapai batas token per permintaan, tetapi pembuatan belum selesai. Respons model dapat dilanjutkan melalui permintaan berikutnya menggunakan continuationToken yang ditampilkan. Perhatikan bahwa maxOutputTokens bersifat kumulatif di seluruh hop kelanjutan dan harus ditingkatkan atau dihilangkan secara monoton.

GroundingAttribution

Atribusi untuk sumber yang berkontribusi pada jawaban.

Kolom
sourceId object (AttributionSourceId)

Hanya output. ID untuk sumber yang berkontribusi pada atribusi ini.

content object (Content)

Konten sumber grounding yang membentuk atribusi ini.

Representasi JSON
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

ID untuk sumber yang berkontribusi pada atribusi ini.

Kolom
source Union type
Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
groundingPassage object (GroundingPassageId)

ID untuk teks inline.

semanticRetrieverChunk object (SemanticRetrieverChunk)

ID untuk Chunk yang diambil melalui Semantic Retriever.

Akhir kolom yang saling eksklusif.
Representasi JSON
{

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

GroundingPassageId

ID untuk bagian dalam GroundingPassage.

Kolom
passageId string

Hanya output. ID teks yang cocok dengan GroundingPassage.id GenerateAnswerRequest.

partIndex integer

Hanya output. Indeks bagian dalam GroundingPassage.content GenerateAnswerRequest.

Representasi JSON
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

ID untuk Chunk yang diambil melalui Pengambil Semantik yang ditentukan dalam GenerateAnswerRequest menggunakan SemanticRetrieverConfig.

Kolom
source string

Hanya output. Nama sumber yang cocok dengan SemanticRetrieverConfig.source permintaan. Contoh: corpora/123 atau corpora/123/documents/abc

chunk string

Hanya output. Nama Chunk yang berisi teks yang diatribusikan. Contoh: corpora/123/documents/abc/chunks/xyz

Representasi JSON
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Metadata yang ditampilkan ke klien saat grounding diaktifkan.

Kolom
groundingChunks[] object (GroundingChunk)

Daftar referensi pendukung yang diambil dari sumber grounding yang ditentukan. Saat melakukan streaming, ini hanya berisi potongan grounding yang belum disertakan dalam metadata grounding respons sebelumnya.

groundingSupports[] object (GroundingSupport)

Daftar dukungan grounding.

webSearchQueries[] string

Kueri penelusuran web untuk penelusuran web lanjutan.

imageSearchQueries[] string

Kueri penelusuran gambar yang digunakan untuk grounding.

searchEntryPoint object (SearchEntryPoint)

Opsional. Entri Google Penelusuran untuk penelusuran web lanjutan.

retrievalMetadata object (RetrievalMetadata)

Metadata yang terkait dengan pengambilan dalam alur grounding.

googleMapsWidgetContextToken string

Opsional. Nama resource token konteks widget Google Maps yang dapat digunakan dengan widget PlacesContextElement untuk merender data kontekstual. Hanya diisi jika Grounding with Google Maps diaktifkan.

Representasi JSON
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Titik entri Google Penelusuran.

Kolom
renderedContent string

Opsional. Cuplikan konten web yang dapat disematkan di halaman web atau webview aplikasi.

sdkBlob string (bytes format)

Opsional. JSON berenkode Base64 yang mewakili array tuple <istilah penelusuran, URL penelusuran>.

String berenkode base64.

Representasi JSON
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

GroundingChunk mewakili segmen bukti pendukung yang mendasari respons model. Informasi ini dapat berupa potongan dari web, konteks yang diambil dari file, atau informasi dari Google Maps.

Kolom
chunk_type Union type
Jenis bagian. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
web object (Web)

Grounding chunk dari web.

image object (Image)

Opsional. Grounding chunk dari penelusuran gambar.

retrievedContext object (RetrievedContext)

Opsional. Grounding chunk dari konteks yang diambil oleh alat penelusuran file.

maps object (Maps)

Opsional. Grounding chunk dari Google Maps.

Akhir kolom yang saling eksklusif.
Representasi JSON
{

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

Web

Potongan dari web.

Kolom
uri string

Hanya output. Referensi URI potongan.

title string

Hanya output. Judul potongan.

Representasi JSON
{
  "uri": string,
  "title": string
}

Gambar

Chunk dari penelusuran gambar.

Kolom
sourceUri string

URI halaman web untuk atribusi.

imageUri string

URL aset gambar.

title string

Judul halaman web tempat gambar berasal.

domain string

Domain root halaman web tempat gambar berasal, misalnya, "example.com".

Representasi JSON
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Penggalan dari konteks yang diambil oleh alat penelusuran file.

Kolom
customMetadata[] object (CustomMetadata)

Opsional. Metadata yang disediakan pengguna tentang konteks yang diambil.

uri string

Opsional. Referensi URI dokumen pengambilan semantik.

title string

Opsional. Judul dokumen.

text string

Opsional. Teks potongan.

fileSearchStore string

Opsional. Nama FileSearchStore yang berisi dokumen. Contoh: fileSearchStores/123

pageNumber integer

Opsional. Nomor halaman konteks yang diambil, jika ada.

mediaId string

Opsional. Nama resource blob media untuk hasil penelusuran file multimodal. Format: fileSearchStores/{file_search_store_id}/media/{blobId}

Representasi JSON
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

Metadata yang disediakan pengguna tentang GroundingFact.

Kolom
key string

Kunci metadata.

value Union type
Nilai metadata. Dapat berupa string, daftar string, atau angka. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
stringValue string

Opsional. Nilai string metadata.

stringListValue object (StringList)

Opsional. Daftar nilai string untuk metadata.

numericValue number

Opsional. Nilai numerik metadata. Rentang yang diharapkan untuk nilai ini bergantung pada key tertentu yang digunakan.

Akhir kolom yang saling eksklusif.
Representasi JSON
{
  "key": string,

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

StringList

Daftar nilai string.

Kolom
values[] string

Nilai string daftar.

Representasi JSON
{
  "values": [
    string
  ]
}

Maps

Grounding chunk dari Google Maps. Satu potongan Maps sesuai dengan satu tempat.

Kolom
uri string

Referensi URI tempat.

title string

Judul tempat.

text string

Deskripsi teks jawaban tempat.

placeId string

ID tempat, dalam format places/{placeId}. Pengguna dapat menggunakan ID ini untuk mencari tempat tersebut.

placeAnswerSources object (PlaceAnswerSources)

Sumber yang memberikan jawaban tentang fitur tempat tertentu di Google Maps.

Representasi JSON
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Kumpulan sumber yang memberikan jawaban tentang fitur tempat tertentu di Google Maps. Setiap pesan PlaceAnswerSources sesuai dengan tempat tertentu di Google Maps. Alat Google Maps menggunakan sumber ini untuk menjawab pertanyaan tentang fitur tempat (misalnya: "apakah Bar Foo memiliki Wi-Fi" atau "apakah Foo Bar dapat diakses dengan kursi roda?"). Saat ini, kami hanya mendukung cuplikan ulasan sebagai sumber.

Kolom
reviewSnippets[] object (ReviewSnippet)

Cuplikan ulasan yang digunakan untuk menghasilkan jawaban tentang fitur tempat tertentu di Google Maps.

Representasi JSON
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Merangkum cuplikan ulasan pengguna yang menjawab pertanyaan tentang fitur tempat tertentu di Google Maps.

Kolom
reviewId string

ID cuplikan ulasan.

googleMapsUri string

Link yang sesuai dengan ulasan pengguna di Google Maps.

title string

Judul ulasan.

Representasi JSON
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Dukungan perujukan.

Kolom
groundingChunkIndices[] integer

Opsional. Daftar indeks (ke 'grounding_chunk' di response.candidate.grounding_metadata) yang menentukan kutipan yang terkait dengan klaim. Misalnya, [1,3,4] berarti grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] adalah konten yang diambil yang diatribusikan ke klaim. Jika respons di-streaming, groundingChunkIndices merujuk ke indeks di semua respons. Klien bertanggung jawab untuk mengumpulkan potongan grounding dari semua respons (sambil mempertahankan urutan yang sama).

confidenceScores[] number

Opsional. Skor keyakinan referensi pendukung. Rentang dari 0 hingga 1. 1 adalah yang paling yakin. Daftar ini harus memiliki ukuran yang sama dengan groundingChunkIndices.

renderedParts[] integer

Hanya output. Indeks ke dalam kolom parts konten kandidat. Indeks ini menentukan bagian yang dirender yang terkait dengan sumber dukungan ini.

segment object (Segment)

Segmen konten yang terkait dengan dukungan ini.

Representasi JSON
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Segmen

Segmen konten.

Kolom
partIndex integer

Indeks objek Part dalam objek Content induknya.

startIndex integer

Mulai indeks di Bagian tertentu, diukur dalam byte. Offset dari awal Bagian, inklusif, dimulai dari nol.

endIndex integer

Indeks akhir di Bagian yang diberikan, diukur dalam byte. Offset dari awal Bagian, eksklusif, dimulai dari nol.

text string

Teks yang sesuai dengan segmen dari respons.

Representasi JSON
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Metadata yang terkait dengan pengambilan dalam alur grounding.

Kolom
googleSearchDynamicRetrievalScore number

Opsional. Skor yang menunjukkan seberapa besar kemungkinan informasi dari Google Penelusuran dapat membantu menjawab perintah. Skor berada dalam rentang [0, 1], dengan 0 adalah yang paling tidak mungkin dan 1 adalah yang paling mungkin. Skor ini hanya diisi jika grounding Google Penelusuran dan pengambilan dinamis diaktifkan. Skor ini akan dibandingkan dengan nilai minimum untuk menentukan apakah akan memicu Google Penelusuran.

Representasi JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Hasil Logprobs

Kolom
topCandidates[] object (TopCandidates)

Panjang = jumlah total langkah decoding.

chosenCandidates[] object (Candidate)

Panjang = jumlah total langkah decoding. Kandidat yang dipilih mungkin ada atau tidak ada di topCandidates.

logProbabilitySum number

Jumlah probabilitas log untuk semua token.

Representasi JSON
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

Kandidat dengan probabilitas log teratas di setiap langkah decoding.

Kolom
candidates[] object (Candidate)

Diurutkan berdasarkan probabilitas log dalam urutan menurun.

Representasi JSON
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Kandidat

Kandidat untuk token dan skor logprob.

Kolom
token string

Nilai string token kandidat.

tokenId integer

Nilai ID token kandidat.

logProbability number

Probabilitas log kandidat.

Representasi JSON
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Metadata yang terkait dengan alat pengambilan konteks URL.

Kolom
urlMetadata[] object (UrlMetadata)

Daftar konteks URL.

Representasi JSON
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Konteks pengambilan satu URL.

Kolom
retrievedUrl string

URL yang diambil oleh alat.

urlRetrievalStatus enum (UrlRetrievalStatus)

Status pengambilan URL.

Representasi JSON
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

Status pengambilan URL.

Enum
URL_RETRIEVAL_STATUS_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
URL_RETRIEVAL_STATUS_SUCCESS Pengambilan URL berhasil.
URL_RETRIEVAL_STATUS_ERROR Pengambilan URL gagal karena terjadi error.
URL_RETRIEVAL_STATUS_PAYWALL Pengambilan URL gagal karena konten berada di balik penghalang konten berbayar.
URL_RETRIEVAL_STATUS_UNSAFE Pengambilan URL gagal karena konten tidak aman.

CitationMetadata

Kumpulan atribusi sumber untuk suatu konten.

Kolom
citationSources[] object (CitationSource)

Kutipan ke sumber untuk respons tertentu.

Representasi JSON
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Kutipan ke sumber untuk bagian dari respons tertentu.

Kolom
startIndex integer

Opsional. Awal segmen respons yang diatribusikan ke sumber ini.

Indeks menunjukkan awal segmen, yang diukur dalam byte.

endIndex integer

Opsional. Akhir segmen yang diatribusikan, eksklusif.

uri string

Opsional. URI yang diatribusikan sebagai sumber untuk sebagian teks.

license string

Opsional. Lisensi untuk project GitHub yang diatribusikan sebagai sumber untuk segmen.

Info lisensi diperlukan untuk kutipan kode.

Representasi JSON
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

Kategori rating.

Kategori ini mencakup berbagai jenis bahaya yang mungkin ingin disesuaikan oleh developer.

Enum
HARM_CATEGORY_UNSPECIFIED Kategori tidak ditentukan.
HARM_CATEGORY_DEROGATORY

PaLM - Komentar negatif atau berbahaya yang menargetkan atribut identitas dan/atau dilindungi. TIDAK DIGUNAKAN LAGI: Kategori khusus PaLM, tidak didukung oleh model Gemini.

HARM_CATEGORY_TOXICITY

PaLM - Konten yang kasar, tidak sopan, atau tidak senonoh. TIDAK DIGUNAKAN LAGI: Kategori khusus PaLM, tidak didukung oleh model Gemini.

HARM_CATEGORY_VIOLENCE

PaLM - Menjelaskan skenario yang menggambarkan kekerasan terhadap individu atau kelompok, atau deskripsi umum tentang adegan menyeramkan. TIDAK DIGUNAKAN LAGI: Kategori khusus PaLM, tidak didukung oleh model Gemini.

HARM_CATEGORY_SEXUAL

PaLM - Berisi referensi ke tindakan seksual atau konten cabul lainnya. TIDAK DIGUNAKAN LAGI: Kategori khusus PaLM, tidak didukung oleh model Gemini.

HARM_CATEGORY_MEDICAL

PaLM - Mempromosikan saran medis yang belum diperiksa. TIDAK DIGUNAKAN LAGI: Kategori khusus PaLM, tidak didukung oleh model Gemini.

HARM_CATEGORY_DANGEROUS

PaLM - Konten berbahaya yang mempromosikan, memfasilitasi, atau mendorong tindakan berbahaya. TIDAK DIGUNAKAN LAGI: Kategori khusus PaLM, tidak didukung oleh model Gemini.

HARM_CATEGORY_HARASSMENT Gemini - Konten yang melecehkan.
HARM_CATEGORY_HATE_SPEECH Gemini - Konten dan ujaran kebencian.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - Konten seksual vulgar.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - Konten berbahaya.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini - Konten yang dapat digunakan untuk membahayakan integritas sipil. TIDAK DIGUNAKAN LAGI: gunakan enableEnhancedCivicAnswers sebagai gantinya.

HARM_CATEGORY_JAILBREAK Gemini - Perintah yang mencoba mengabaikan atau melanggar panduan keamanan model (upaya jailbreak).

ModalityTokenCount

Menampilkan info penghitungan token untuk satu modalitas.

Kolom
modality enum (Modality)

Modalitas yang terkait dengan jumlah token ini.

tokenCount integer

Jumlah token.

Representasi JSON
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Metode

Modalitas Bagian Konten

Enum
MODALITY_UNSPECIFIED Modalitas tidak ditentukan.
TEXT Teks biasa.
IMAGE Gambar.
VIDEO Video.
AUDIO Audio.
DOCUMENT Dokumen, misalnya PDF.

SafetyRating

Rating keamanan untuk suatu konten.

Rating keamanan berisi kategori bahaya dan tingkat probabilitas bahaya dalam kategori tersebut untuk suatu konten. Konten diklasifikasikan untuk keamanan di sejumlah kategori bahaya dan probabilitas klasifikasi bahaya disertakan di sini.

Kolom
category enum (HarmCategory)

Wajib. Kategori untuk rating ini.

probability enum (HarmProbability)

Wajib. Kemungkinan bahaya untuk konten ini.

blocked boolean

Apakah konten ini diblokir karena rating ini?

Representasi JSON
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

Probabilitas bahwa suatu konten berbahaya.

Sistem klasifikasi memberikan probabilitas konten tidak aman. Hal ini tidak menunjukkan tingkat keparahan bahaya untuk suatu konten.

Enum
HARM_PROBABILITY_UNSPECIFIED Probabilitas tidak ditentukan.
NEGLIGIBLE Konten memiliki peluang yang dapat diabaikan untuk menjadi tidak aman.
LOW Konten memiliki peluang rendah untuk tidak aman.
MEDIUM Konten memiliki peluang sedang untuk tidak aman.
HIGH Konten memiliki peluang tinggi sebagai tidak aman.

SafetySetting

Setelan keamanan, yang memengaruhi perilaku pemblokiran keamanan.

Meneruskan setelan keamanan untuk suatu kategori akan mengubah probabilitas yang diizinkan untuk memblokir konten.

Kolom
category enum (HarmCategory)

Wajib. Kategori untuk setelan ini.

threshold enum (HarmBlockThreshold)

Wajib. Mengontrol nilai minimum probabilitas pemblokiran bahaya.

Representasi JSON
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Memblokir pada dan di atas probabilitas bahaya yang ditentukan.

Enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED Nilai minimum tidak ditentukan.
BLOCK_LOW_AND_ABOVE Konten dengan tingkat keparahan NEGLIGIBLE akan diizinkan.
BLOCK_MEDIUM_AND_ABOVE Konten dengan tingkat keparahan NEGLIGIBLE dan LOW akan diizinkan.
BLOCK_ONLY_HIGH Konten dengan tingkat NEGLIGIBLE, LOW, dan MEDIUM akan diizinkan.
BLOCK_NONE Semua konten akan diizinkan.
OFF Nonaktifkan filter keamanan.

ServiceTier

Paket layanan permintaan.

Enum
unspecified Paket layanan default, yaitu standar.
standard Paket layanan standar.
flex Paket layanan Flex.
priority Tingkat layanan prioritas.

Konten

Jenis data terstruktur dasar yang berisi konten multibagian dari sebuah pesan.

Content menyertakan kolom role yang menentukan produsen Content dan kolom parts yang berisi data multi-bagian yang berisi konten giliran pesan.

Kolom
parts[] object (Part)

Parts yang diurutkan yang membentuk satu pesan. Bagian mungkin memiliki jenis MIME yang berbeda.

role string

Opsional. Produsen konten. Harus berupa 'user' atau 'model'.

Berguna untuk ditetapkan dalam percakapan multi-giliran, atau dapat dibiarkan kosong atau tidak ditetapkan.

Representasi JSON
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Bagian

Jenis data yang berisi media yang merupakan bagian dari pesan Content multi-bagian.

Part terdiri dari data yang memiliki jenis data terkait. Part hanya dapat berisi salah satu jenis yang diterima di Part.data.

Part harus memiliki jenis MIME IANA tetap yang mengidentifikasi jenis dan subjenis media jika kolom inlineData diisi dengan byte mentah.

Kolom
thought boolean

Opsional. Menunjukkan apakah bagian tersebut merupakan pemikiran dari model.

thoughtSignature string (bytes format)

Opsional. Tanda tangan non-transparan untuk pemikiran sehingga dapat digunakan kembali dalam permintaan berikutnya.

String berenkode base64.

partMetadata object (Struct format)

Metadata kustom yang terkait dengan Bagian. Agen yang menggunakan genai.Part sebagai representasi konten mungkin perlu melacak informasi tambahan. Misalnya, metadata ini dapat berupa nama file/sumber asal Part atau cara untuk melakukan multiplexing beberapa streaming Part.

mediaResolution object (MediaResolution)

Opsional. Resolusi media untuk media input.

mediaProcessing enum (MediaProcessing)

Opsional. Cara model memproses media bagian ini untuk pemahaman. Hanya bermakna untuk bagian video (inlineData atau fileData dengan mime video). Bagian non-video mengabaikan kolom ini.

audioTranscription object (AudioTranscription)

Opsional. Transkripsi audio (input atau output). Ini hanya ditetapkan jika Bagian ini berisi data audio.

speechMetadata object (SpeechMetadata)

Opsional. Metadata yang diterapkan ke bagian teks untuk menyesuaikan cara pengucapan atau sintesisnya, seperti menentukan identitas pembicara atau gaya berbicara.

data Union type
Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
text string

Teks inline.

inlineData object (Blob)

Byte media inline.

functionCall object (FunctionCall)

FunctionCall yang diprediksi dan ditampilkan dari model yang berisi string yang mewakili FunctionDeclaration.name dengan argumen dan nilainya.

functionResponse object (FunctionResponse)

Output hasil FunctionCall yang berisi string yang mewakili FunctionDeclaration.name dan objek JSON terstruktur yang berisi output apa pun dari fungsi digunakan sebagai konteks untuk model.

fileData object (FileData)

Data berbasis URI.

executableCode object (ExecutableCode)

Kode yang dihasilkan oleh model yang dimaksudkan untuk dieksekusi.

codeExecutionResult object (CodeExecutionResult)

Hasil dari eksekusi ExecutableCode.

toolCall object (ToolCall)

Panggilan alat sisi server. Kolom ini diisi saat model memprediksi pemanggilan alat yang harus dijalankan di server. Klien diharapkan menggemakan pesan ini kembali ke API.

toolResponse object (ToolResponse)

Output dari eksekusi ToolCall sisi server. Kolom ini diisi oleh klien dengan hasil eksekusi ToolCall yang sesuai.

Akhir kolom yang saling eksklusif.
metadata Union type
Mengontrol pra-pemrosesan data tambahan. Tetapkan ini saat inline_data atau file_data ada untuk mengonfigurasi pra-pemrosesan media statis per bagian. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
videoMetadata object (VideoMetadata)

Opsional. Metadata video. Metadata hanya boleh ditentukan saat data video ditampilkan di inlineData atau fileData.

Akhir kolom yang saling eksklusif.
Representasi JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),
  "audioTranscription": {
    object (AudioTranscription)
  },
  "speechMetadata": {
    object (SpeechMetadata)
  },

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

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

Blob

Byte media mentah.

Teks tidak boleh dikirim sebagai byte mentah, gunakan kolom 'text'.

Kolom
mimeType string

Jenis MIME standar IANA dari data sumber. Contoh jenis yang didukung: - Gambar: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Audio: audio/*, video/audio/s16le, video/audio/wav - Video: video/* - Teks: text/plain, text/html, text/css, text/javascript, text/x-typescript, text/csv, text/markdown, text/x-python, text/xml, text/rtf, video/text/timestamp - Aplikasi: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Untuk konteks tambahan, lihat Format file yang didukung. //

data string (bytes format)

Byte mentah untuk format media.

String berenkode base64.

displayName string

Opsional. Menentukan nama yang digunakan untuk merujuk ke blob ini ke model (misalnya, "my_blob.png"). Digunakan sebagai ID referensi blob saat verbalizationMode ditetapkan ke REFERENCE_ONLY.

Representasi JSON
{
  "mimeType": string,
  "data": string,
  "displayName": string
}

FunctionCall

FunctionCall yang diprediksi dan ditampilkan dari model yang berisi string yang mewakili FunctionDeclaration.name dengan argumen dan nilainya.

Kolom
id string

Opsional. ID unik panggilan fungsi. Jika diisi, klien akan menjalankan functionCall dan menampilkan respons dengan id yang cocok.

name string

Wajib. Nama fungsi yang akan dipanggil. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah dan tanda hubung, dengan panjang maksimum 128.

args object (Struct format)

Opsional. Parameter dan nilai fungsi dalam format objek JSON.

Representasi JSON
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Output hasil dari FunctionCall yang berisi string yang mewakili FunctionDeclaration.name dan objek JSON terstruktur yang berisi output apa pun dari fungsi digunakan sebagai konteks untuk model. Kolom ini harus berisi hasil FunctionCall yang dibuat berdasarkan prediksi model.

Kolom
id string

Opsional. ID panggilan fungsi yang menjadi tujuan respons ini. Diisi oleh klien agar sesuai dengan panggilan fungsi id yang sesuai.

name string

Wajib. Nama fungsi yang akan dipanggil. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah dan tanda hubung, dengan panjang maksimum 128.

response object (Struct format)

Wajib. Respons fungsi dalam format objek JSON. Pemanggil dapat menggunakan kunci apa pun yang mereka pilih yang sesuai dengan sintaksis fungsi untuk menampilkan output fungsi, misalnya "output", "result", dll. Secara khusus, jika panggilan fungsi gagal dieksekusi, respons dapat memiliki kunci "error" untuk menampilkan detail error ke model.

Multimedia dapat disertakan menggunakan subobjek yang berisi satu kunci "$ref" yang nilainya adalah inlineData.display_name dari FunctionResponsePart yang menyimpan multimedia. Lihat https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Opsional. Parts yang diurutkan yang merupakan respons fungsi. Bagian mungkin memiliki jenis MIME IANA yang berbeda.

willContinue boolean

Opsional. Menandakan bahwa panggilan fungsi berlanjut, dan lebih banyak respons akan ditampilkan, sehingga mengubah panggilan fungsi menjadi generator. Hanya berlaku untuk panggilan fungsi NON_BLOCKING, jika tidak, akan diabaikan. Jika disetel ke salah (false), respons mendatang tidak akan dipertimbangkan. Fungsi ini diizinkan untuk menampilkan response kosong dengan willContinue=False untuk menandakan bahwa panggilan fungsi telah selesai. Tindakan ini mungkin masih memicu pembuatan model. Untuk menghindari pemicuan pembuatan dan menyelesaikan panggilan fungsi, tetapkan juga scheduling ke SILENT.

scheduling enum (Scheduling)

Opsional. Menentukan cara respons dijadwalkan dalam percakapan. Hanya berlaku untuk panggilan fungsi NON_BLOCKING, jika tidak, akan diabaikan. Default-nya adalah WHEN_IDLE.

Representasi JSON
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

Jenis data yang berisi media yang merupakan bagian dari pesan FunctionResponse.

FunctionResponsePart terdiri dari data yang memiliki jenis data terkait. FunctionResponsePart hanya dapat berisi salah satu jenis yang diterima di FunctionResponsePart.data.

FunctionResponsePart harus memiliki jenis MIME IANA tetap yang mengidentifikasi jenis dan subjenis media jika kolom inlineData diisi dengan byte mentah.

Kolom
data Union type
Data bagian respons fungsi. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
inlineData object (FunctionResponseBlob)

Byte media inline.

Akhir kolom yang saling eksklusif.
Representasi JSON
{

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

FunctionResponseBlob

Byte media mentah untuk respons fungsi.

Teks tidak boleh dikirim sebagai byte mentah, gunakan kolom 'FunctionResponse.response'.

Kolom
mimeType string

Jenis MIME standar IANA dari data sumber. Contoh: - image/png - image/jpeg Jika jenis MIME yang tidak didukung diberikan, error akan ditampilkan. Untuk mengetahui daftar lengkap jenis yang didukung, lihat Format file yang didukung.

data string (bytes format)

Byte mentah untuk format media.

String berenkode base64.

Representasi JSON
{
  "mimeType": string,
  "data": string
}

Penjadwalan

Menentukan cara respons dijadwalkan dalam percakapan.

Enum
SCHEDULING_UNSPECIFIED Nilai ini tidak digunakan.
SILENT Hanya tambahkan hasil ke konteks percakapan, jangan menginterupsi atau memicu pembuatan.
WHEN_IDLE Menambahkan hasil ke konteks percakapan, dan memberikan perintah untuk menghasilkan output tanpa mengganggu pembuatan yang sedang berlangsung.
INTERRUPT Menambahkan hasil ke konteks percakapan, menghentikan pembuatan yang sedang berlangsung, dan meminta untuk membuat output.

FileData

Data berbasis URI.

Kolom
mimeType string

Opsional. Jenis MIME standar IANA dari data sumber.

fileUri string

Wajib. URI.

displayName string

Opsional. Menentukan nama yang digunakan untuk merujuk ke file ini ke model (misalnya, "my_file.pdf"). Digunakan sebagai ID referensi file saat verbalizationMode ditetapkan ke REFERENCE_ONLY.

Representasi JSON
{
  "mimeType": string,
  "fileUri": string,
  "displayName": string
}

ExecutableCode

Kode yang dihasilkan oleh model yang dimaksudkan untuk dieksekusi, dan hasilnya ditampilkan ke model.

Hanya dibuat saat menggunakan alat CodeExecution, yang kodenya akan otomatis dieksekusi, dan CodeExecutionResult yang sesuai juga akan dibuat.

Kolom
id string

Opsional. ID unik bagian ExecutableCode. Server menampilkan CodeExecutionResult dengan id yang cocok.

language enum (Language)

Wajib. Bahasa pemrograman code.

code string

Wajib. Kode yang akan dieksekusi.

Representasi JSON
{
  "id": string,
  "language": enum (Language),
  "code": string
}

Language

Bahasa pemrograman yang didukung untuk kode yang dihasilkan.

Enum
LANGUAGE_UNSPECIFIED Bahasa tidak ditentukan. Nilai ini tidak boleh digunakan.
PYTHON Python >= 3.10, dengan numpy dan simpy tersedia. Python adalah bahasa default.

CodeExecutionResult

Hasil dari eksekusi ExecutableCode.

Hanya dibuat saat alat CodeExecution digunakan.

Kolom
id string

Opsional. ID bagian ExecutableCode yang terkait dengan hasil ini. Hanya diisi jika ExecutableCode yang sesuai memiliki ID.

outcome enum (Outcome)

Wajib. Hasil eksekusi kode.

output string

Opsional. Berisi stdout jika eksekusi kode berhasil, stderr, atau deskripsi lainnya jika tidak berhasil.

Representasi JSON
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

Hasil

Enumerasi kemungkinan hasil eksekusi kode.

Enum
OUTCOME_UNSPECIFIED Status tidak ditentukan. Nilai ini tidak boleh digunakan.
OUTCOME_OK Eksekusi kode berhasil diselesaikan. output berisi stdout, jika ada.
OUTCOME_FAILED Eksekusi kode gagal. output berisi stderr dan stdout, jika ada.
OUTCOME_DEADLINE_EXCEEDED Eksekusi kode berjalan terlalu lama, dan dibatalkan. Mungkin ada atau tidak ada output parsial.

ToolCall

ToolCall sisi server yang diprediksi yang ditampilkan dari model. Pesan ini berisi informasi tentang alat yang ingin dipanggil oleh model. Klien TIDAK diharapkan untuk menjalankan ToolCall ini. Sebagai gantinya, klien harus meneruskan ToolCall ini kembali ke API dalam giliran berikutnya dalam pesan Content, bersama dengan ToolResponse yang sesuai.

Kolom
id string

Opsional. ID unik panggilan alat. Server menampilkan respons alat dengan id yang cocok.

toolName string

Opsional. Nama alat yang dipanggil.

toolType enum (ToolType)

Wajib. Jenis alat yang dipanggil.

args object (Struct format)

Opsional. Argumen panggilan alat. Contoh: {"arg1" : "value1", "arg2" : "value2" , ...}

Representasi JSON
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

Jenis alat dalam panggilan fungsi.

Enum
TOOL_TYPE_UNSPECIFIED Jenis alat tidak ditentukan.
GOOGLE_SEARCH_WEB Alat Google Penelusuran, dipetakan ke Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Alat penelusuran gambar, dipetakan ke Tool.google_search.search_types.image_search.
URL_CONTEXT Alat konteks URL, dipetakan ke Tool.url_context.
GOOGLE_MAPS Alat Google Maps, dipetakan ke Tool.google_maps.

ToolResponse

Output dari eksekusi ToolCall sisi server. Pesan ini berisi hasil pemanggilan alat yang dimulai oleh ToolCall dari model. Klien harus meneruskan ToolResponse ini kembali ke API dalam giliran berikutnya dalam pesan Content, bersama dengan ToolCall yang sesuai.

Kolom
id string

Opsional. ID panggilan alat yang menjadi tujuan respons ini.

toolType enum (ToolType)

Wajib. Jenis alat yang dipanggil, yang cocok dengan toolType di ToolCall yang sesuai.

response object (Struct format)

Opsional. Respons alat.

Representasi JSON
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

Metadata mendeskripsikan konten video input. Tetapkan ini di Part.video_metadata atau FunctionResponsePart.video_metadata saat inlineData atau fileData berisi video untuk mengonfigurasi pra-pemrosesan video statis (seperti pemotongan waktu, kecepatan frame, jumlah frame maksimum, atau lapisan konten yang diekstrak).

Kolom
startOffset string (Duration format)

Opsional. Offset awal video.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

endOffset string (Duration format)

Opsional. Offset akhir video.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

fps number

Opsional. Kecepatan frame video yang dikirim ke model. Jika tidak ditentukan, nilai defaultnya adalah 1,0. Rentang fps adalah (0,0, 24,0].

Representasi JSON
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

Resolusi media untuk tokenisasi.

Kolom
value Union type
Tingkat resolusi media. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
level enum (Level)

Kualitas tokenisasi yang digunakan untuk media tertentu. untuk dukungan Gemini API .

Akhir kolom yang saling eksklusif.
Representasi JSON
{

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

Level

Tingkat resolusi media.

Enum
MEDIA_RESOLUTION_UNSPECIFIED Resolusi media belum ditetapkan.
MEDIA_RESOLUTION_LOW Resolusi media disetel ke rendah.
MEDIA_RESOLUTION_MEDIUM Resolusi media ditetapkan ke sedang.
MEDIA_RESOLUTION_HIGH Resolusi media ditetapkan ke tinggi.
MEDIA_RESOLUTION_ULTRA_HIGH Resolusi media ditetapkan ke ultra tinggi.

MediaProcessing

Cara model memproses media input untuk pemahaman.

Enum
MEDIA_PROCESSING_UNSPECIFIED Setelan default-nya adalah pemrosesan khusus model.
STATIC Ekstraksi frame dengan kecepatan tetap. Semua frame ditempatkan dalam konteks.
AGENTIC Navigasi dinamis berbasis model. Direkomendasikan untuk sebagian besar kasus penggunaan.

AudioTranscription

Transkripsi bagian audio. Untuk audio multi-pembicara, setiap segmen pembicara adalah Bagian terpisah dengan AudioTranscription-nya sendiri yang membawa speakerLabel.

Kolom
text string

Wajib. Teks transkripsi segmen audio ini.

speakerLabel string

Opsional. Label yang mengidentifikasi pembicara segmen audio ini (misalnya, "spk_1", "spk_2"). Ada saat diarization ditetapkan.

words[] object (WordInfo)

Opsional. Transkripsi tingkat kata dan detail pengaturan waktu yang mendetail. Ada saat wordTimestamp ditetapkan.

Representasi JSON
{
  "text": string,
  "speakerLabel": string,
  "words": [
    {
      object (WordInfo)
    }
  ]
}

WordInfo

Informasi tentang satu kata yang dikenali.

Kolom
word string

Wajib. Transkrip kata.

startOffset string (Duration format)

Opsional. Offset waktu mulai kata relatif terhadap awal audio.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

endOffset string (Duration format)

Opsional. Offset akhir dalam waktu kata yang relatif terhadap awal audio.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

Representasi JSON
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

Metadata ucapan untuk bagian text.

Kolom
speaker string

Opsional. Nama pembicara opsional untuk sintesis multi-pembicara.

style string

Opsional. Petunjuk gaya opsional untuk sintesis ucapan.

Representasi JSON
{
  "speaker": string,
  "style": string
}

Lingkungan

Lingkungan eksekusi untuk agen.

Kolom
id string

Wajib. Hanya output. ID lingkungan.

sources[] object (Source)

Sumber yang akan dipasang ke lingkungan.

created string

Hanya output. Waktu saat lingkungan dibuat dalam format ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

updated string

Hanya output. Waktu terakhir kali lingkungan diupdate dalam format ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

lastAccessed string

Hanya output. Waktu terakhir lingkungan diakses dalam format ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

status enum (Status)

Hanya output. Status container lingkungan.

fileCount string (int64 format)

Hanya output. Jumlah file di lingkungan, khusus output.

sizeBytes string (int64 format)

Hanya output. Ukuran total file lingkungan dalam byte, hanya output.

network Union type
Konfigurasi jaringan untuk lingkungan. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Hanya izinkan domain tertentu.

networkMode enum (NetworkMode)

Mode egress jaringan.

Akhir kolom yang saling eksklusif.
Representasi JSON
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

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

Status

Status lingkungan.

Enum
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Mode egress jaringan untuk konfigurasi yang tidak ada dalam daftar yang diizinkan.

Enum
NETWORK_MODE_UNSPECIFIED Nilai default. Tidak digunakan.
DISABLED Semua egress jaringan diblokir.

Skema

Objek Schema memungkinkan penentuan jenis data input dan output. Jenis ini dapat berupa objek, tetapi juga primitif dan array. Merepresentasikan subset tertentu dari objek skema OpenAPI 3.0.

Kolom
type enum (Type)

Wajib. Jenis data.

format string

Opsional. Format data. Nilai apa pun diizinkan, tetapi sebagian besar tidak memicu fungsi khusus.

title string

Opsional. Judul skema.

description string

Opsional. Deskripsi singkat parameter. Informasi ini dapat berisi contoh penggunaan. Deskripsi parameter dapat diformat sebagai Markdown.

nullable boolean

Opsional. Menunjukkan apakah nilai boleh null.

enum[] string

Opsional. Nilai yang mungkin dari elemen Type.STRING dengan format enum. Misalnya, kita dapat menentukan Enum Direction sebagai : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Opsional. Jumlah maksimum elemen untuk Type.ARRAY.

minItems string (int64 format)

Opsional. Jumlah minimum elemen untuk Type.ARRAY.

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

Opsional. Properti Type.OBJECT.

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Opsional. Properti yang diperlukan dari Type.OBJECT.

minProperties string (int64 format)

Opsional. Jumlah minimum properti untuk Type.OBJECT.

maxProperties string (int64 format)

Opsional. Jumlah maksimum properti untuk Type.OBJECT.

minLength string (int64 format)

Opsional. KOLOM SKEMA UNTUK JENIS STRING Panjang minimum Type.STRING

maxLength string (int64 format)

Opsional. Panjang maksimum Type.STRING

pattern string

Opsional. Pola Type.STRING untuk membatasi string ke ekspresi reguler.

example value (Value format)

Opsional. Contoh objek. Hanya akan diisi jika objeknya adalah root.

anyOf[] object (Schema)

Opsional. Nilai harus divalidasi terhadap salah satu (satu atau beberapa) subskema dalam daftar.

propertyOrdering[] string

Opsional. Urutan properti. Bukan kolom standar dalam spesifikasi open api. Digunakan untuk menentukan urutan properti dalam respons.

default value (Value format)

Opsional. Nilai default kolom. Sesuai dengan Skema JSON, kolom ini ditujukan untuk generator dokumentasi dan tidak memengaruhi validasi. Oleh karena itu, kolom ini disertakan di sini dan diabaikan agar developer yang mengirim skema dengan kolom default tidak mendapatkan error kolom tidak dikenal.

items object (Schema)

Opsional. Skema elemen Type.ARRAY.

minimum number

Opsional. KOLOM SKEMA UNTUK JENIS INTEGER dan NUMBER Nilai minimum Type.INTEGER dan Type.NUMBER

maximum number

Opsional. Nilai maksimum Type.INTEGER dan Type.NUMBER

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

Jenis

Jenis berisi daftar jenis data OpenAPI seperti yang ditentukan oleh https://spec.openapis.org/oas/v3.0.3#data-types

Enum
TYPE_UNSPECIFIED Tidak ditentukan, tidak boleh digunakan.
STRING Jenis string.
NUMBER Jenis nomor.
INTEGER Jenis bilangan bulat.
BOOLEAN Jenis boolean.
ARRAY Jenis array.
OBJECT Jenis objek.
NULL Jenis null.

Alat

Detail alat yang dapat digunakan model untuk menghasilkan respons.

Tool adalah bagian kode yang memungkinkan sistem berinteraksi dengan sistem eksternal untuk melakukan tindakan, atau serangkaian tindakan, di luar pengetahuan dan cakupan model.

Kolom
functionDeclarations[] object (FunctionDeclaration)

Opsional. Daftar FunctionDeclarations yang tersedia untuk model yang dapat digunakan untuk panggilan fungsi.

Model atau sistem tidak menjalankan fungsi. Sebagai gantinya, fungsi yang ditentukan dapat ditampilkan sebagai FunctionCall dengan argumen ke sisi klien untuk dieksekusi. Model dapat memutuskan untuk memanggil subset fungsi ini dengan mengisi FunctionCall dalam respons. Giliran percakapan berikutnya dapat berisi FunctionResponse dengan konteks pembuatan "fungsi" Content.role untuk giliran model berikutnya.

googleSearchRetrieval object (GoogleSearchRetrieval)

Opsional. Alat pengambilan yang didukung oleh Google Penelusuran.

codeExecution object (CodeExecution)

Opsional. Memungkinkan model menjalankan kode sebagai bagian dari pembuatan.

computerUse object (ComputerUse)

Opsional. Alat untuk mendukung model berinteraksi langsung dengan komputer. Jika diaktifkan, fitur ini akan otomatis mengisi Deklarasi Fungsi khusus penggunaan komputer.

urlContext object (UrlContext)

Opsional. Alat untuk mendukung pengambilan konteks URL.

mcpServers[] object (McpServer)

Opsional. Server MCP yang akan dihubungkan.

googleMaps object (GoogleMaps)

Opsional. Alat yang memungkinkan grounding respons model dengan konteks geospasial yang terkait dengan kueri pengguna.

Representasi 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

Representasi terstruktur dari deklarasi fungsi seperti yang ditentukan oleh spesifikasi OpenAPI 3.03. Deklarasi ini mencakup nama dan parameter fungsi. FunctionDeclaration ini adalah representasi dari blok kode yang dapat digunakan sebagai Tool oleh model dan dieksekusi oleh klien.

Kolom
name string

Wajib. Nama fungsi. Harus berupa a-z, A-Z, 0-9, atau berisi garis bawah, titik dua, titik, dan tanda hubung, dengan panjang maksimum 128.

description string

Wajib. Deskripsi singkat fungsi.

behavior enum (Behavior)

Opsional. Menentukan Perilaku fungsi. Saat ini hanya didukung oleh metode BidiGenerateContent.

parameters object (Schema)

Opsional. Menjelaskan parameter untuk fungsi ini. Mencerminkan Kunci string Objek Parameter Open API 3.03: nama parameter. Nama parameter peka huruf besar/kecil. Schema Value: Skema yang menentukan jenis yang digunakan untuk parameter.

parametersJsonSchema value (Value format)

Opsional. Menjelaskan parameter untuk fungsi dalam format Skema JSON. Skema harus mendeskripsikan objek yang propertinya merupakan parameter untuk fungsi. Contoh:

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

Kolom ini tidak dapat muncul bersamaan dengan parameters.

response object (Schema)

Opsional. Menjelaskan output dari fungsi ini dalam format Skema JSON. Mencerminkan Objek Respons Open API 3.03. Skema menentukan jenis yang digunakan untuk nilai respons fungsi.

responseJsonSchema value (Value format)

Opsional. Menjelaskan output dari fungsi ini dalam format Skema JSON. Nilai yang ditentukan oleh skema adalah nilai respons fungsi.

Kolom ini tidak dapat muncul bersamaan dengan response.

Representasi JSON
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Perilaku

Menentukan perilaku fungsi. Default-nya adalah BLOCKING.

Enum
UNSPECIFIED Nilai ini tidak digunakan.
BLOCKING Jika ditetapkan, sistem akan menunggu untuk menerima respons fungsi sebelum melanjutkan percakapan.
NON_BLOCKING Jika ditetapkan, sistem tidak akan menunggu untuk menerima respons fungsi. Sebagai gantinya, model akan mencoba menangani respons fungsi saat tersedia sambil mempertahankan percakapan antara pengguna dan model.

GoogleSearchRetrieval

Alat untuk mengambil data web publik untuk grounding, yang didukung oleh Google.

Kolom
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Menentukan konfigurasi pengambilan dinamis untuk sumber yang diberikan.

Representasi JSON
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Menjelaskan opsi untuk menyesuaikan pengambilan dinamis.

Kolom
mode enum (Mode)

Mode prediktor yang akan digunakan dalam pengambilan dinamis.

dynamicThreshold number

Nilai minimum yang akan digunakan dalam pengambilan dinamis. Jika tidak ditetapkan, nilai default sistem akan digunakan.

Representasi JSON
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Mode

Mode prediktor yang akan digunakan dalam pengambilan dinamis.

Enum
MODE_UNSPECIFIED Selalu picu pengambilan.
MODE_DYNAMIC Jalankan pengambilan hanya jika sistem memutuskan bahwa hal itu diperlukan.

CodeExecution

Jenis ini tidak memiliki kolom.

Alat yang mengeksekusi kode yang dihasilkan oleh model, dan otomatis menampilkan hasilnya ke model.

Lihat juga ExecutableCode dan CodeExecutionResult yang hanya dibuat saat menggunakan alat ini.

GoogleSearch

Jenis alat GoogleSearch. Alat untuk mendukung Google Penelusuran di Model. Didukung oleh Google.

Kolom
timeRangeFilter object (Interval)

Opsional. Memfilter hasil penelusuran ke rentang waktu tertentu. Jika pelanggan menetapkan waktu mulai, mereka harus menetapkan waktu berakhir (dan sebaliknya).

searchTypes object (SearchTypes)

Opsional. Kumpulan jenis penelusuran yang akan diaktifkan. Jika tidak disetel, penelusuran web akan diaktifkan secara default.

Representasi JSON
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Interval

Menampilkan interval waktu yang dienkode sebagai waktu mulai Stempel Waktu (inklusif) dan waktu berakhir Stempel Waktu (eksklusif).

Waktu mulai harus kurang dari atau sama dengan waktu berakhir. Jika waktu mulai sama dengan waktu berakhir, intervalnya kosong (tidak ada waktu yang cocok). Jika waktu mulai dan waktu berakhir tidak ditentukan, intervalnya akan cocok dengan semua waktu.

Kolom
startTime string (Timestamp format)

Opsional. Waktu mulai interval inklusif.

Jika ditentukan, Stempel Waktu yang cocok dengan interval ini harus sama dengan atau setelah waktu mulai.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Opsional. Waktu berakhir interval eksklusif.

Jika ditentukan, Stempel Waktu yang cocok dengan interval ini harus sebelum waktu berakhir.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

Representasi JSON
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Berbagai jenis penelusuran yang dapat diaktifkan di alat GoogleSearch.

Kolom
Representasi JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Jenis ini tidak memiliki kolom.

Penelusuran web standar untuk grounding dan konfigurasi terkait.

ImageSearch

Jenis ini tidak memiliki kolom.

Penelusuran gambar untuk grounding dan konfigurasi terkait.

ComputerUse

Jenis alat Computer Use.

Kolom
environment enum (Environment)

Wajib. Lingkungan yang dioperasikan.

excludedPredefinedFunctions[] string

Opsional. Secara default, fungsi yang telah ditentukan disertakan dalam panggilan model akhir. Beberapa di antaranya dapat dikecualikan secara eksplisit agar tidak disertakan secara otomatis. Hal ini dapat memiliki dua tujuan: 1. Menggunakan ruang tindakan yang lebih terbatas / berbeda. 2. Meningkatkan definisi / petunjuk fungsi yang telah ditetapkan.

enablePromptInjectionDetection boolean

Opsional. Apakah akan mengaktifkan pemeriksaan deteksi injeksi perintah pada permintaan penggunaan komputer.

disabledSafetyPolicies[] enum (SafetyPolicy)

Opsional. Kebijakan keamanan yang dinonaktifkan untuk penggunaan komputer.

Representasi JSON
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Lingkungan

Mewakili lingkungan yang dioperasikan, seperti browser web.

Enum
ENVIRONMENT_UNSPECIFIED Nilai defaultnya adalah browser.
ENVIRONMENT_BROWSER Beroperasi di browser web.
ENVIRONMENT_MOBILE Beroperasi di lingkungan seluler.
ENVIRONMENT_DESKTOP Beroperasi di lingkungan desktop.

SafetyPolicy

Kebijakan keamanan yang telah ditetapkan untuk penggunaan komputer.

Enum
SAFETY_POLICY_UNSPECIFIED Kebijakan keamanan yang tidak ditentukan.
FINANCIAL_TRANSACTIONS Kebijakan keamanan untuk transaksi keuangan.
SENSITIVE_DATA_MODIFICATION Kebijakan keamanan untuk modifikasi data sensitif.
COMMUNICATION_TOOL Kebijakan keamanan untuk alat komunikasi (misalnya, Gmail, Chat, Meet).
ACCOUNT_CREATION Kebijakan keamanan untuk pembuatan akun.
DATA_MODIFICATION Kebijakan keamanan untuk modifikasi data.
LEGAL_TERMS_AND_AGREEMENTS Kebijakan keamanan untuk persyaratan dan perjanjian hukum.

UrlContext

Jenis ini tidak memiliki kolom.

Alat untuk mendukung pengambilan konteks URL.

FileSearch

Alat FileSearch yang mengambil pengetahuan dari korpus Pengambilan Semantik. File diimpor ke korpus Semantic Retrieval menggunakan ImportFile API.

Kolom
fileSearchStoreNames[] string

Wajib. Nama fileSearchStores yang akan diambil. Contoh: fileSearchStores/my-file-search-store-123

metadataFilter string

Opsional. Filter metadata yang akan diterapkan ke dokumen dan potongan pengambilan semantik.

topK integer

Opsional. Jumlah potongan pengambilan semantik yang akan diambil.

Representasi JSON
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCPServer adalah server yang dapat dipanggil oleh model untuk melakukan tindakan. Server ini mengimplementasikan protokol MCP.

Kolom
name string

Nama MCPServer.

transport Union type
Transport yang akan digunakan untuk terhubung ke MCPServer. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
streamableHttpTransport object (StreamableHttpTransport)

Transpor yang dapat melakukan streaming permintaan dan respons HTTP.

Akhir kolom yang saling eksklusif.
Representasi JSON
{
  "name": string,

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

StreamableHttpTransport

Transpor yang dapat melakukan streaming permintaan dan respons HTTP.

Kolom
url string

URL lengkap untuk endpoint MCPServer. Contoh: "https://api.example.com/mcp"

headers map (key: string, value: string)

Opsional: Kolom untuk header autentikasi, waktu tunggu, dll., jika diperlukan.

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Waktu tunggu HTTP untuk operasi reguler.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

sseReadTimeout string (Duration format)

Waktu tunggu untuk operasi baca SSE.

Durasi dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's'. Contoh: "3.5s".

terminateOnClose boolean

Apakah akan menutup sesi klien saat transport ditutup.

Representasi JSON
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

Alat GoogleMaps yang menyediakan konteks geospasial untuk kueri pengguna.

Kolom
enableWidget boolean

Opsional. Apakah akan menampilkan token konteks widget di GroundingMetadata respons. Developer dapat menggunakan token konteks widget untuk merender widget Google Maps dengan konteks geospasial yang terkait dengan tempat yang dirujuk model dalam respons.

Representasi JSON
{
  "enableWidget": boolean
}

Resource REST: auth_tokens

Resource: AuthToken

Permintaan untuk membuat token autentikasi sementara.

Kolom
name string

Hanya output. ID. Token itu sendiri.

expireTime string (Timestamp format)

Opsional. Hanya input. Tidak dapat diubah. Waktu opsional setelahnya, saat menggunakan token yang dihasilkan, pesan dalam sesi BidiGenerateContent akan ditolak. (Gemini mungkin akan menutup sesi secara preemptif setelah waktu ini.)

Jika tidak ditetapkan, nilai defaultnya adalah 30 menit ke depan. Jika ditetapkan, nilai ini harus kurang dari 20 jam di masa mendatang.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opsional. Hanya input. Tidak dapat diubah. Waktu setelah sesi Live API baru yang menggunakan token yang dihasilkan dari permintaan ini akan ditolak.

Jika tidak ditetapkan, nilai defaultnya adalah 60 detik di masa mendatang. Jika ditetapkan, nilai ini harus kurang dari 20 jam di masa mendatang.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opsional. Hanya input. Tidak dapat diubah. Jika fieldMask kosong, dan bidiGenerateContentSetup tidak ada, pesan BidiGenerateContentSetup yang efektif akan diambil dari koneksi Live API.

Jika fieldMask kosong, dan bidiGenerateContentSetup ada, pesan BidiGenerateContentSetup yang efektif akan diambil sepenuhnya dari bidiGenerateContentSetup dalam permintaan ini. Pesan penyiapan dari koneksi Live API diabaikan.

Jika fieldMask tidak kosong, kolom yang sesuai dari bidiGenerateContentSetup akan menimpa kolom dari pesan penyiapan di koneksi Live API.

Ini adalah daftar dipisahkan koma yang berisi nama-nama kolom yang sepenuhnya valid. Contoh: "user.displayName,photo".

config Union type
Konfigurasi khusus metode untuk token yang dihasilkan. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opsional. Hanya input. Tidak dapat diubah. Konfigurasi khusus untuk BidiGenerateContent.

Akhir kolom yang saling eksklusif.
uses integer

Opsional. Hanya input. Tidak dapat diubah. Jumlah berapa kali token dapat digunakan. Jika nilai ini nol, tidak ada batas yang diterapkan. Melanjutkan sesi Live API tidak dihitung sebagai penggunaan. Jika tidak ditentukan, nilai defaultnya adalah 1.

Representasi JSON
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

Pesan yang akan dikirim di BidiGenerateContentClientMessage pertama (dan hanya di yang pertama). Berisi konfigurasi yang akan berlaku selama durasi RPC streaming.

Klien harus menunggu pesan BidiGenerateContentSetupComplete sebelum mengirim pesan tambahan.

Kolom
model string

Wajib. Nama resource model. ID ini berfungsi sebagai ID untuk Model yang akan digunakan.

Format: models/{model}

generationConfig object (GenerationConfig)

Opsional. Konfigurasi pembuatan.

Kolom berikut tidak didukung:

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

Opsional. Petunjuk sistem yang diberikan pengguna untuk model.

Catatan: Hanya teks yang boleh digunakan di bagian dan konten di setiap bagian akan berada dalam paragraf terpisah.

tools[] object (Tool)

Opsional. Daftar Tools yang dapat digunakan model untuk menghasilkan respons berikutnya.

Tool adalah bagian kode yang memungkinkan sistem berinteraksi dengan sistem eksternal untuk melakukan tindakan, atau serangkaian tindakan, di luar pengetahuan dan cakupan model.

realtimeInputConfig object (RealtimeInputConfig)

Opsional. Mengonfigurasi penanganan input real-time.

sessionResumption object (SessionResumptionConfig)

Opsional. Mengonfigurasi mekanisme melanjutkan sesi.

Jika disertakan, server akan mengirimkan pesan SessionResumptionUpdate.

contextWindowCompression object (ContextWindowCompressionConfig)

Opsional. Mengonfigurasi mekanisme kompresi jendela konteks.

Jika disertakan, server akan otomatis mengurangi ukuran konteks saat melebihi panjang yang dikonfigurasi.

inputAudioTranscription object (AudioTranscriptionConfig)

Opsional. Jika disetel, mengaktifkan transkripsi input suara. Transkripsi akan disesuaikan dengan bahasa audio input, jika dikonfigurasi.

outputAudioTranscription object (AudioTranscriptionConfig)

Opsional. Jika ditetapkan, mengaktifkan transkripsi output audio model. Transkripsi akan disesuaikan dengan kode bahasa yang ditentukan untuk audio output, jika dikonfigurasi.

historyConfig object (HistoryConfig)

Opsional. Mengonfigurasi pertukaran histori antara klien dan server.

labels map (key: string, value: string)

Opsional. Label dengan metadata yang ditentukan pengguna untuk permintaan.

Opsional. Label harus mengikuti persyaratan label Cloud terpadu standar: - Kunci label harus diawali dengan huruf. - Kunci dan nilai label tidak boleh melampaui 63 karakter (codepoint Unicode) dan hanya boleh berisi huruf kecil, karakter numerik, garis bawah, dan tanda hubung. - Karakter internasional diperbolehkan.

Penggunaan: - ID keamanan dari agregator: Gunakan kunci safety_identifier (misalnya, {"safety_identifier": "user_session_123"})

Objek yang berisi daftar pasangan "key": value. Contoh: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

Representasi JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  },
  "labels": {
    string: string,
    ...
  }
}

GenerationConfig

Opsi konfigurasi untuk pembuatan dan output model. Tidak semua parameter dapat dikonfigurasi untuk setiap model.

Kolom
stopSequences[] string

Opsional. Kumpulan urutan karakter (hingga 5) yang akan menghentikan pembuatan output. Jika ditentukan, API akan berhenti pada kemunculan pertama stop_sequence. Urutan perhentian tidak akan disertakan sebagai bagian dari respons.

responseMimeType string

Opsional. Jenis MIME dari teks kandidat yang dihasilkan. Jenis MIME yang didukung adalah: text/plain: (default) Output teks. application/json: Respons JSON dalam kandidat respons. text/x.enum: ENUM sebagai respons string dalam kandidat respons. Lihat dokumentasi untuk mengetahui daftar semua jenis MIME teks yang didukung.

responseSchema
(deprecated)
object (Schema)

Opsional. Skema output teks kandidat yang dihasilkan. Skema harus merupakan subset dari skema OpenAPI dan dapat berupa objek, primitif, atau array.

Jika ditetapkan, responseMimeType yang kompatibel juga harus ditetapkan. Jenis MIME yang kompatibel: application/json: Skema untuk respons JSON. Baca panduan pembuatan teks JSON untuk mengetahui detail selengkapnya.

Tidak digunakan lagi. Sebagai gantinya, gunakan responseFormat.

_responseJsonSchema
(deprecated)
value (Value format)

Opsional. Skema output dari respons yang dihasilkan. Ini adalah alternatif untuk responseSchema yang menerima Skema JSON.

Jika ditetapkan, responseSchema harus dihilangkan, tetapi responseMimeType wajib ada.

Meskipun Skema JSON lengkap dapat dikirim, tidak semua fitur didukung. Secara khusus, hanya properti berikut yang didukung:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (untuk string dan angka)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (ditafsirkan sama seperti anyOf)
  • properties
  • additionalProperties
  • required

Properti propertyOrdering non-standar juga dapat ditetapkan.

Referensi siklik di-unroll hingga tingkat terbatas dan, oleh karena itu, hanya dapat digunakan dalam properti yang tidak wajib. (Properti nullable tidak cukup.) Jika $ref ditetapkan pada sub-skema, tidak ada properti lain, kecuali yang dimulai sebagai $, yang dapat ditetapkan.

Tidak digunakan lagi. Sebagai gantinya, gunakan responseFormat.

responseJsonSchema value (Value format)

Opsional. Detail internal. Gunakan responseJsonSchema, bukan kolom ini.

responseModalities[] enum (Modality)

Opsional. Modalitas respons yang diminta. Menampilkan kumpulan modalitas yang dapat ditampilkan model, dan harus diharapkan dalam respons. Ini adalah pencocokan persis dengan modalitas respons.

Sebuah model mungkin memiliki beberapa kombinasi modalitas yang didukung. Jika modalitas yang diminta tidak cocok dengan kombinasi yang didukung, error akan ditampilkan.

Daftar kosong sama dengan hanya meminta teks.

candidateCount integer

Opsional. Jumlah respons yang dihasilkan untuk ditampilkan. Jika tidak ditetapkan, nilai defaultnya adalah 1. Perhatikan bahwa fitur ini tidak berfungsi untuk model generasi sebelumnya (keluarga Gemini 1.0)

maxOutputTokens integer

Opsional. Jumlah maksimum token yang akan disertakan dalam kandidat respons.

Catatan: Nilai default bervariasi menurut model, lihat atribut Model.output_token_limit dari Model yang ditampilkan dari fungsi getModel.

temperature number

Opsional. Mengontrol keacakan output.

Catatan: Nilai default bervariasi menurut model, lihat atribut Model.temperature dari Model yang ditampilkan dari fungsi getModel.

Nilai dapat berkisar dari [0.0, 2.0].

Kolom ini tidak lagi didukung dan diabaikan secara otomatis di Gemini 3.6 Flash dan model yang lebih baru.

topP number

Opsional. Probabilitas kumulatif maksimum token yang akan dipertimbangkan saat pengambilan sampel.

Model ini menggunakan sampling Top-k dan Top-p (nucleus) gabungan.

Token diurutkan berdasarkan probabilitas yang ditetapkan sehingga hanya token yang paling mungkin yang dipertimbangkan. Sampling Top-k secara langsung membatasi jumlah maksimum token yang akan dipertimbangkan, sedangkan sampling Nucleus membatasi jumlah token berdasarkan probabilitas kumulatif.

Catatan: Nilai default bervariasi menurut Model dan ditentukan oleh atribut Model.top_p yang ditampilkan dari fungsi getModel. Atribut topK yang kosong menunjukkan bahwa model tidak menerapkan pengambilan sampel top-k dan tidak mengizinkan penetapan topK pada permintaan.

Kolom ini tidak lagi didukung dan diabaikan secara otomatis di Gemini 3.6 Flash dan model yang lebih baru.

topK integer

Opsional. Jumlah maksimum token yang akan dipertimbangkan saat pengambilan sampel.

Model Gemini menggunakan sampling Top-p (inti) atau kombinasi sampling Top-k dan inti. Sampling top-k mempertimbangkan kumpulan topK token yang paling mungkin. Model yang berjalan dengan sampling inti tidak mengizinkan setelan topK.

Catatan: Nilai default bervariasi menurut Model dan ditentukan oleh atribut Model.top_p yang ditampilkan dari fungsi getModel. Atribut topK yang kosong menunjukkan bahwa model tidak menerapkan pengambilan sampel top-k dan tidak mengizinkan penetapan topK pada permintaan.

Kolom ini tidak lagi didukung dan diabaikan secara otomatis di Gemini 3.6 Flash dan model yang lebih baru.

seed integer

Opsional. Nilai awal yang digunakan dalam decoding. Jika tidak ditetapkan, permintaan akan menggunakan seed yang dibuat secara acak.

presencePenalty number

Opsional. Penalti kehadiran diterapkan ke logprob token berikutnya jika token telah terlihat dalam respons.

Penalti ini bersifat biner aktif/nonaktif dan tidak bergantung pada frekuensi penggunaan token (setelah penggunaan pertama). Gunakan frequencyPenalty untuk penalti yang meningkat seiring penggunaan.

Penalti positif akan mencegah penggunaan token yang telah digunakan dalam respons, sehingga meningkatkan kosakata.

Penalti negatif akan mendorong penggunaan token yang telah digunakan dalam respons, sehingga mengurangi kosakata.

frequencyPenalty number

Opsional. Penalti frekuensi yang diterapkan ke logprob token berikutnya, dikalikan dengan berapa kali setiap token telah terlihat dalam respons sejauh ini.

Penalti positif akan mencegah penggunaan token yang telah digunakan, sebanding dengan frekuensi penggunaan token tersebut: Makin sering token digunakan, makin sulit bagi model untuk menggunakan token tersebut lagi, sehingga meningkatkan kosakata respons.

Perhatian: Penalti negatif akan mendorong model untuk menggunakan kembali token secara proporsional dengan frekuensi penggunaan token tersebut. Nilai negatif kecil akan mengurangi kosakata respons. Nilai negatif yang lebih besar akan menyebabkan model mulai mengulangi token umum hingga mencapai batas maxOutputTokens.

responseLogprobs boolean

Opsional. Jika true, ekspor hasil logprobs dalam respons.

logprobs integer

Opsional. Hanya berlaku jika responseLogprobs=True. Tindakan ini menetapkan jumlah logprob teratas, termasuk kandidat yang dipilih, yang akan ditampilkan pada setiap langkah decoding di Candidate.logprobs_result. Angka harus berada dalam rentang [0, 20].

enableEnhancedCivicAnswers boolean

Opsional. Mengaktifkan jawaban kewarganegaraan yang ditingkatkan. Fitur ini mungkin hanya tersedia untuk model tertentu.

speechConfig object (SpeechConfig)

Opsional. Konfigurasi pembuatan ucapan.

thinkingConfig object (ThinkingConfig)

Opsional. Konfigurasi untuk fitur penalaran. Error akan ditampilkan jika kolom ini ditetapkan untuk model yang tidak mendukung penalaran.

imageConfig object (ImageConfig)

Opsional. Konfigurasi untuk pembuatan gambar. Error akan ditampilkan jika kolom ini ditetapkan untuk model yang tidak mendukung opsi konfigurasi ini.

mediaResolution enum (MediaResolution)

Opsional. Jika ditentukan, resolusi media yang ditentukan akan digunakan.

enableAffectiveDialog boolean

Opsional. Jika diaktifkan, model akan mendeteksi emosi dan menyesuaikan responsnya.

responseFormat object (ResponseFormatConfig)

Opsional. Konfigurasi untuk format output respons. Memungkinkan penentuan konfigurasi output per modalitas (teks, audio, gambar) dalam struktur datar.

translationConfig object (TranslationConfig)

Opsional. Konfigurasi untuk terjemahan.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Opsional. Konfigurasi untuk transkripsi audio (pengenalan ucapan).

Representasi JSON
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

Metode

Modalitas respons yang didukung.

Enum
MODALITY_UNSPECIFIED Nilai default.
TEXT Menunjukkan bahwa model harus menampilkan teks.
IMAGE Menunjukkan bahwa model harus menampilkan gambar.
AUDIO Menunjukkan bahwa model harus menampilkan audio.

SpeechConfig

Konfigurasi untuk pembuatan dan transkripsi ucapan.

Kolom
voiceConfig object (VoiceConfig)

Konfigurasi jika output berupa suara tunggal.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Opsional. Konfigurasi untuk penyiapan multi-speaker. Kolom ini tidak dapat muncul bersamaan dengan kolom voiceConfig.

languageCode string

Opsional. Kode bahasa BCP-47 IETF yang dikonfigurasi pengguna untuk digunakan aplikasi. Digunakan untuk pengenalan dan sintesis ucapan.

Nilai yang valid adalah: de-DE, en-AU, en-GB, en-IN, en-US, es-US, fr-FR, hi-IN, pt-BR, ar-XA, es-ES, fr-CA, id-ID, it-IT, ja-JP, tr-TR, vi-VN, bn-IN, gu-IN, kn-IN, ml-IN, mr-IN, ta-IN, te-IN, nl-NL, ko-KR, cmn-CN, pl-PL, ru-RU, dan th-TH.

Representasi JSON
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

Konfigurasi untuk suara yang akan digunakan.

Kolom
voice_config Union type
Konfigurasi untuk speaker yang akan digunakan. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Konfigurasi untuk suara bawaan yang akan digunakan.

voice string

Opsional. ID pembicara untuk sintesis. Format yang didukung:

  • Nama pembicara untuk suara bawaan (misalnya, Orus atau Kore).
  • ID Suara untuk suara yang disimpan (misalnya, voice_xxx).
  • Kunci replikasi suara (misalnya, voicekey_xxx).
Akhir kolom yang saling eksklusif.
Representasi JSON
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  },
  "voice": string
  // Union type
}

PrebuiltVoiceConfig

Konfigurasi untuk pembicara bawaan yang akan digunakan.

Kolom
voiceName string

Opsional. Nama suara preset yang akan digunakan.

Representasi JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Konfigurasi untuk penyiapan multi-speaker.

Kolom
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Wajib. Semua suara pembicara yang diaktifkan.

Representasi JSON
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

Konfigurasi untuk satu speaker dalam penyiapan multi-speaker.

Kolom
speaker string

Wajib. Nama speaker yang akan digunakan. Harus sama seperti dalam perintah.

voiceConfig object (VoiceConfig)

Wajib. Konfigurasi untuk suara yang akan digunakan.

Representasi JSON
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Konfigurasi untuk fitur penalaran.

Kolom
includeThoughts boolean

Menunjukkan apakah akan menyertakan pemikiran dalam respons. Jika true, pemikiran hanya ditampilkan jika tersedia.

thinkingBudget integer

Jumlah token penalaran yang harus dihasilkan model.

thinkingLevel enum (ThinkingLevel)

Opsional. Mengontrol kedalaman maksimum proses penalaran internal model sebelum menghasilkan respons. Nilai default bergantung pada model. Lihat Panduan tingkat penalaran untuk mengetahui detail selengkapnya. Direkomendasikan untuk model Gemini 3 atau yang lebih baru. Penggunaan dengan model yang lebih lama akan menghasilkan error.

Representasi JSON
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Mengizinkan pengguna menentukan seberapa banyak model harus berpikir menggunakan enum, bukan anggaran bilangan bulat.

Enum
THINKING_LEVEL_UNSPECIFIED Nilai default.
MINIMAL Sedikit atau tanpa berpikir.
LOW Tingkat penalaran rendah.
MEDIUM Tingkat penalaran sedang.
HIGH Tingkat penalaran tinggi.

ImageConfig

Konfigurasi untuk fitur pembuatan gambar.

Kolom
aspectRatio string

Opsional. Rasio aspek gambar yang akan dibuat. Rasio aspek yang didukung: 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, atau 21:9.

Jika tidak ditentukan, model akan memilih rasio aspek default berdasarkan gambar referensi yang diberikan.

imageSize string

Opsional. Menentukan ukuran gambar yang dihasilkan. Nilai yang didukung adalah 512, 1K, 2K, 4K. Jika tidak ditentukan, model akan menggunakan nilai default 1K.

Representasi JSON
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Resolusi media untuk media input.

Enum
MEDIA_RESOLUTION_UNSPECIFIED Resolusi media belum ditetapkan.
MEDIA_RESOLUTION_LOW Resolusi media ditetapkan ke rendah (64 token).
MEDIA_RESOLUTION_MEDIUM Resolusi media ditetapkan ke sedang (256 token).
MEDIA_RESOLUTION_HIGH Resolusi media ditetapkan ke tinggi (pembingkaian ulang yang diperbesar dengan 256 token).

ResponseFormatConfig

Konfigurasi untuk format output respons. Ini adalah objek datar yang setiap subkolom opsionalnya mengonfigurasi modalitas output tertentu.

Kolom
text object (TextResponseFormat)

Opsional. Konfigurasi format output teks.

audio object (AudioResponseFormat)

Opsional. Konfigurasi format output audio.

image object (ImageResponseFormat)

Opsional. Konfigurasi format output gambar.

Representasi JSON
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Konfigurasi untuk format output teks.

Kolom
mimeType enum (MimeType)

Opsional. Jenis MIME output teks.

schema value (Value format)

Opsional. Skema JSON yang harus dipatuhi oleh output. Hanya berlaku jika mimeType adalah APPLICATION_JSON.

Representasi JSON
{
  "mimeType": enum (MimeType),
  "schema": value
}

Jenis Mime

Jenis MIME yang didukung untuk output teks.

Enum
MIME_TYPE_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
APPLICATION_JSON Format output JSON.
TEXT_PLAIN Format output teks biasa.

AudioResponseFormat

Konfigurasi untuk format output audio.

Kolom
mimeType enum (MimeType)

Opsional. Jenis MIME output audio.

delivery enum (Delivery)

Opsional. Mode pengiriman untuk output audio.

sampleRate integer

Opsional. Frekuensi sampel dalam Hz.

bitRate integer

Opsional. Kecepatan bit dalam bit per detik (bps). Hanya berlaku untuk format terkompresi (MP3, Opus).

Representasi JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

Jenis Mime

Jenis MIME yang didukung untuk output audio.

Enum
MIME_TYPE_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
AUDIO_MP3 Format audio MP3.
AUDIO_OGG_OPUS Format audio OGG Opus.
AUDIO_L16 Format audio PCM mentah (L16).
AUDIO_WAV Format audio WAV.
AUDIO_ALAW Format audio A-law.
AUDIO_MULAW Format audio Mu-law.

Penayangan

Mode pengiriman untuk output audio.

Enum
DELIVERY_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
INLINE Data audio ditampilkan secara inline dalam respons.
URI Data audio ditampilkan sebagai URI.

ImageResponseFormat

Konfigurasi untuk format output gambar.

Kolom
mimeType enum (MimeType)

Opsional. Jenis MIME output gambar.

delivery enum (Delivery)

Opsional. Mode pengiriman untuk output gambar.

aspectRatio enum (AspectRatio)

Opsional. Rasio aspek untuk output gambar.

imageSize enum (ImageSize)

Opsional. Ukuran output gambar.

Representasi JSON
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

Jenis Mime

Jenis MIME yang didukung untuk output gambar.

Enum
MIME_TYPE_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
IMAGE_JPEG Format gambar JPEG.

Penayangan

Mode pengiriman untuk output gambar.

Enum
DELIVERY_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
INLINE Data gambar ditampilkan secara inline dalam respons.
URI Data gambar ditampilkan sebagai URI.

AspectRatio

Rasio aspek yang didukung untuk output gambar.

Enum
ASPECT_RATIO_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
ASPECT_RATIO_ONE_BY_ONE Rasio aspek 1:1.
ASPECT_RATIO_TWO_BY_THREE Rasio aspek 2:3.
ASPECT_RATIO_THREE_BY_TWO Rasio aspek 3:2.
ASPECT_RATIO_THREE_BY_FOUR Rasio aspek 3:4.
ASPECT_RATIO_FOUR_BY_THREE Rasio aspek 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Rasio aspek 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Rasio aspek 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Rasio aspek 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Rasio aspek 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Rasio aspek 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Rasio aspek 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Rasio aspek 8:1.
ASPECT_RATIO_ONE_BY_FOUR Rasio aspek 1:4.
ASPECT_RATIO_FOUR_BY_ONE Rasio aspek 4:1.

ImageSize

Ukuran gambar yang didukung untuk output gambar.

Enum
IMAGE_SIZE_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
IMAGE_SIZE_FIVE_TWELVE Ukuran gambar 512 px.
IMAGE_SIZE_ONE_K Ukuran gambar 1K.
IMAGE_SIZE_TWO_K Ukuran gambar 2K.
IMAGE_SIZE_FOUR_K Ukuran gambar 4K.

TranslationConfig

Konfigurasi untuk fitur terjemahan.

Kolom
targetLanguageCode string

Wajib. Bahasa target untuk terjemahan. Nilai yang didukung adalah kode bahasa BCP-47 (misalnya, "en", "es", "fr").

echoTargetLanguage boolean

Opsional. Jika true, model akan menghasilkan audio saat bahasa target diucapkan, yang pada dasarnya akan meniru input. Jika salah (false), kami tidak akan membuat audio untuk bahasa target.

Representasi JSON
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

Konfigurasi transkripsi audio.

Kolom
languageCodes[] string

Opsional. Kode bahasa BCP-47 yang memberikan petunjuk tentang bahasa yang ada dalam audio. Jika dihilangkan atau kosong, setelan defaultnya adalah deteksi bahasa otomatis.

adaptationPhrases[]
(deprecated)
string

Opsional. Daftar frasa yang digunakan untuk adaptasi ucapan, yang membiaskan model ASR untuk meningkatkan pengenalan istilah tertentu.

customVocabulary[] string

Opsional. Daftar frasa kosakata kustom untuk membiaskan model pengenalan ucapan agar mengenali istilah tertentu (nama produk, kata benda, jargon).

wordTimestamp boolean

Opsional. Mengonfigurasi pembuatan stempel waktu tingkat kata.

diarization boolean

Opsional. Mengonfigurasi diarisasi pembicara.

mode enum (Mode)

Opsional. Mengonfigurasi mode transkripsi. Nilai yang didukung: VERBATIM, SMART. Jika tidak ditentukan, setelan defaultnya adalah transkripsi VERBATIM. Dalam mode SMART, model melakukan pembersihan transkrip ucapan (menghilangkan kata pengisi, pengulangan, dan awal yang salah), pembersihan tata bahasa ringan, pemformatan otomatis (paragraf, poin, daftar bernomor), dan pengeditan kecil oleh pengguna (koreksi mandiri inline). Stempel waktu dan diarisasi tidak kompatibel dengan mode SMART.

language_config Union type
Tidak digunakan lagi: Gunakan language_codes tingkat atas sebagai gantinya. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
languageAuto
(deprecated)
object (LanguageAuto)

Opsional. Model akan mendeteksi bahasa secara otomatis.

languageHints
(deprecated)
object (LanguageHints)

Opsional. Menentukan satu atau beberapa bahasa dalam audio.

Akhir kolom yang saling eksklusif.
Representasi JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,
  "mode": enum (Mode),

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

Jenis ini tidak memiliki kolom.

Menunjukkan bahwa bahasa audio harus otomatis terdeteksi.

LanguageHints

Memberikan petunjuk kepada model tentang kemungkinan bahasa yang ada dalam audio.

Kolom
languageCodes[]
(deprecated)
string

Wajib. Kode bahasa BCP-47.

Representasi JSON
{
  "languageCodes": [
    string
  ]
}

Mode

Mode transkripsi.

Enum
MODE_UNSPECIFIED Mode transkripsi tidak ditentukan.
VERBATIM Mode transkripsi verbatim.
SMART Mode transkripsi cerdas.

RealtimeInputConfig

Mengonfigurasi perilaku input real-time di BidiGenerateContent.

Kolom
automaticActivityDetection object (AutomaticActivityDetection)

Opsional. Jika tidak disetel, deteksi aktivitas otomatis akan diaktifkan secara default. Jika deteksi suara otomatis dinonaktifkan, klien harus mengirim sinyal aktivitas.

activityHandling enum (ActivityHandling)

Opsional. Menentukan efek yang dimiliki aktivitas.

turnCoverage enum (TurnCoverage)

Opsional. Menentukan input mana yang disertakan dalam giliran pengguna.

interimTranscriptTimestampEnabled boolean

Opsional. Mengonfigurasi stempel waktu transkrip sementara.

Representasi JSON
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage),
  "interimTranscriptTimestampEnabled": boolean
}

AutomaticActivityDetection

Mengonfigurasi deteksi aktivitas otomatis.

Kolom
disabled boolean

Opsional. Jika diaktifkan (default), input suara dan teks yang terdeteksi akan dihitung sebagai aktivitas. Jika dinonaktifkan, klien harus mengirim sinyal aktivitas.

startOfSpeechSensitivity enum (StartSensitivity)

Opsional. Menentukan seberapa besar kemungkinan ucapan akan terdeteksi.

prefixPaddingMs integer

Opsional. Durasi ucapan yang terdeteksi yang diperlukan sebelum awal ucapan di-commit. Makin rendah nilai ini, makin sensitif deteksi awal ucapan dan ucapan yang lebih pendek dapat dikenali. Namun, hal ini juga meningkatkan kemungkinan positif palsu.

endOfSpeechSensitivity enum (EndSensitivity)

Opsional. Menentukan seberapa besar kemungkinan ucapan yang terdeteksi akan berakhir.

silenceDurationMs integer

Opsional. Durasi non-ucapan yang terdeteksi (misalnya, senyap) yang diperlukan sebelum akhir ucapan di-commit. Makin besar nilai ini, makin lama jeda ucapan yang dapat terjadi tanpa mengganggu aktivitas pengguna, tetapi hal ini akan meningkatkan latensi model.

Representasi JSON
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

Menentukan cara mendeteksi awal ucapan.

Enum
START_SENSITIVITY_UNSPECIFIED Defaultnya adalah START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH Deteksi otomatis akan lebih sering mendeteksi awal ucapan.
START_SENSITIVITY_LOW Deteksi otomatis akan lebih jarang mendeteksi awal ucapan.

EndSensitivity

Menentukan cara akhir ucapan dideteksi.

Enum
END_SENSITIVITY_UNSPECIFIED Defaultnya adalah END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Deteksi otomatis mengakhiri ucapan lebih sering.
END_SENSITIVITY_LOW Deteksi otomatis lebih jarang mengakhiri ucapan.

ActivityHandling

Berbagai cara untuk menangani aktivitas pengguna.

Enum
ACTIVITY_HANDLING_UNSPECIFIED Jika tidak ditentukan, perilaku default-nya adalah START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Jika true, awal aktivitas akan menginterupsi respons model (juga disebut "barge in"). Respons model saat ini akan terputus saat terjadi interupsi. Ini merupakan perilaku default.
NO_INTERRUPTION Respons model tidak akan terganggu.

TurnCoverage

Opsi tentang input yang disertakan dalam giliran pengguna.

Enum
TURN_COVERAGE_UNSPECIFIED Jika tidak ditentukan, perilaku default akan dipilih berdasarkan model. Misalnya, untuk Gemini 2.5, defaultnya adalah TURN_INCLUDES_ONLY_ACTIVITY, sedangkan untuk Gemini 3.1 dan seterusnya, defaultnya adalah TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Mencakup aktivitas sejak giliran terakhir, tidak termasuk ketidakaktifan (misalnya, keheningan pada streaming audio).
TURN_INCLUDES_ALL_INPUT Mencakup semua input real-time sejak giliran terakhir, termasuk tidak adanya aktivitas (misalnya, tidak ada suara di streaming audio).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Mencakup aktivitas audio dan semua video sejak giliran terakhir. Dengan deteksi aktivitas otomatis, aktivitas audio berarti ucapan dan tidak termasuk keheningan.

SessionResumptionConfig

Konfigurasi kelanjutan sesi.

Pesan ini disertakan dalam konfigurasi sesi sebagai BidiGenerateContentSetup.session_resumption. Jika dikonfigurasi, server akan mengirim pesan SessionResumptionUpdate.

Kolom
handle string

Handle sesi sebelumnya. Jika tidak ada, sesi baru akan dibuat.

Nama sebutan channel sesi berasal dari nilai SessionResumptionUpdate.token di koneksi sebelumnya.

Representasi JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Mengaktifkan kompresi jendela konteks — mekanisme untuk mengelola jendela konteks model agar tidak melebihi panjang yang ditentukan.

Kolom
compression_mechanism Union type
Mekanisme kompresi jendela konteks yang digunakan. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
slidingWindow object (SlidingWindow)

Mekanisme jendela geser.

Akhir kolom yang saling eksklusif.
triggerTokens string (int64 format)

Jumlah token (sebelum menjalankan giliran) yang diperlukan untuk memicu kompresi jendela konteks.

Hal ini dapat digunakan untuk menyeimbangkan kualitas dengan latensi karena jendela konteks yang lebih pendek dapat menghasilkan respons model yang lebih cepat. Namun, operasi kompresi apa pun akan menyebabkan peningkatan latensi sementara, sehingga tidak boleh sering dipicu.

Jika tidak ditetapkan, defaultnya adalah 80% dari batas jendela konteks model. Hal ini menyisakan 20% untuk permintaan pengguna/respons model berikutnya.

Representasi JSON
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

Metode SlidingWindow beroperasi dengan menghapus konten di awal jendela konteks. Konteks yang dihasilkan akan selalu dimulai pada awal giliran peran USER. Petunjuk sistem dan BidiGenerateContentSetup.prefix_turns apa pun akan selalu berada di awal hasil.

Kolom
targetTokens string (int64 format)

Jumlah target token yang akan dipertahankan. Nilai defaultnya adalah triggerTokens/2.

Membuang bagian dari jendela konteks akan menyebabkan peningkatan latensi sementara, sehingga nilai ini harus dikalibrasi untuk menghindari operasi kompresi yang sering.

Representasi JSON
{
  "targetTokens": string
}

HistoryConfig

Konfigurasi histori.

Pesan ini disertakan dalam konfigurasi sesi sebagai BidiGenerateContentSetup.history_config. Mengonfigurasi pertukaran pesan histori.

Kolom
initialHistoryInClientContent boolean

Opsional. Jika benar, setelah mengirim setupComplete, server akan menunggu dan memproses pesan clientContent terlebih dahulu hingga turnComplete adalah true. Histori awal ini tidak akan memicu panggilan model dan dapat diakhiri dengan peran MODEL. Setelah turnComplete true, klien dapat memulai percakapan real-time melalui realtimeInput.

Representasi JSON
{
  "initialHistoryInClientContent": boolean
}

Metode: auth_tokens.create

Membuat token yang dapat digunakan untuk membatasi perilaku sesi BidiGenerateContent.

Endpoint

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

Isi permintaan

Isi permintaan memuat instance AuthToken.

Kolom
expireTime string (Timestamp format)

Opsional. Hanya input. Tidak dapat diubah. Waktu opsional setelahnya, saat menggunakan token yang dihasilkan, pesan dalam sesi BidiGenerateContent akan ditolak. (Gemini mungkin akan menutup sesi secara preemptif setelah waktu ini.)

Jika tidak ditetapkan, nilai defaultnya adalah 30 menit ke depan. Jika ditetapkan, nilai ini harus kurang dari 20 jam di masa mendatang.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opsional. Hanya input. Tidak dapat diubah. Waktu setelah sesi Live API baru yang menggunakan token yang dihasilkan dari permintaan ini akan ditolak.

Jika tidak ditetapkan, nilai defaultnya adalah 60 detik di masa mendatang. Jika ditetapkan, nilai ini harus kurang dari 20 jam di masa mendatang.

Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z", atau "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opsional. Hanya input. Tidak dapat diubah. Jika fieldMask kosong, dan bidiGenerateContentSetup tidak ada, pesan BidiGenerateContentSetup yang efektif akan diambil dari koneksi Live API.

Jika fieldMask kosong, dan bidiGenerateContentSetup ada, pesan BidiGenerateContentSetup yang efektif akan diambil sepenuhnya dari bidiGenerateContentSetup dalam permintaan ini. Pesan penyiapan dari koneksi Live API diabaikan.

Jika fieldMask tidak kosong, kolom yang sesuai dari bidiGenerateContentSetup akan menimpa kolom dari pesan penyiapan di koneksi Live API.

Ini adalah daftar dipisahkan koma yang berisi nama-nama kolom yang sepenuhnya valid. Contoh: "user.displayName,photo".

config Union type
Konfigurasi khusus metode untuk token yang dihasilkan. Berikut adalah daftar kolom yang saling eksklusif. Maksimal satu kolom akan ditetapkan dalam respons:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opsional. Hanya input. Tidak dapat diubah. Konfigurasi khusus untuk BidiGenerateContent.

Akhir kolom yang saling eksklusif.
uses integer

Opsional. Hanya input. Tidak dapat diubah. Jumlah berapa kali token dapat digunakan. Jika nilai ini nol, tidak ada batas yang diterapkan. Melanjutkan sesi Live API tidak dihitung sebagai penggunaan. Jika tidak ditentukan, nilai defaultnya adalah 1.

Isi respons

Jika berhasil, isi respons akan memuat instance AuthToken yang baru dibuat.