Generating content

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

Metode: models.generateContent

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

Endpoint

postingan 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 sekali putaran, 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 membuat 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 Panggilan fungsi dan Eksekusi kode untuk mempelajari lebih lanjut.

toolConfig object (ToolConfig)

Opsional. Konfigurasi alat untuk Tool yang ditentukan dalam permintaan. Lihat Panduan pemanggilan fungsi untuk 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 diberikan 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 keselamatan untuk mempelajari cara memasukkan pertimbangan keselamatan dalam aplikasi AI Anda.

systemInstruction object (Content)

Opsional. Developer menetapkan petunjuk sistem. 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 dalam menyajikan prediksi. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opsional. Tingkat layanan permintaan.

store boolean

Opsional. Mengonfigurasi perilaku logging untuk permintaan tertentu. Jika disetel, setelan ini akan lebih diprioritaskan daripada konfigurasi logging tingkat project.

Contoh permintaan

Teks

Python

from google import genai

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

Node.js

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

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

Go

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

Shell

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

Java

Client client = new Client();

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

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

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.5-flash", contents=["Tell me about this instrument", organ]
)
print(response.text)

Node.js

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

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

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

Go

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

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

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

Shell

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

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

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

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

Java

Client client = new Client();

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

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

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

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

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.5-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

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

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

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

Go

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

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

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

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

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

Shell

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

tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

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

Video

Python

from google import genai
import time

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

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

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

Node.js

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

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

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

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

Go

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

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

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

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

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

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

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

Shell

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

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

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

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

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

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

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

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

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

cat response.json
echo

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

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

Go

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

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

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

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

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

Shell

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


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

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

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.5-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

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

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

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

Go

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

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

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

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

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

Shell

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

Java

Client client = new Client();

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

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

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

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

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.5-flash"

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

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

Node.js

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

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

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

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

Go

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

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

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

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.5-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

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

Go

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

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

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

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

Shell

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

Java

Client client = new Client();

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

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

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

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

Eksekusi kode

Python

from google import genai
from google.genai import types

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

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

Go

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

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

// Print the response.
printResponse(response)

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

Java

Client client = new Client();

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

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

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

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

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.5-flash",
    config=types.GenerateContentConfig(tools=[add, subtract, multiply, divide]),
)
response = chat.send_message(
    message="I have 57 cats, each owns 44 mittens, how many mittens is that in total?"
)
print(response.text)

Go

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

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

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

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

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

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

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

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

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

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

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

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

printResponse(finalResponse)

Node.js

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Shell


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

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

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

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

Java

Client client = new Client();

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

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

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

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

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

                )
        )
        .build();

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


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

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

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

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

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

System.out.println(result);

Konfigurasi pembuatan

Python

from google import genai
from google.genai import types

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

Node.js

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

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

console.log(response.text);

Go

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

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

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

printResponse(response)

Shell

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

Java

Client client = new Client();

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

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

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

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.5-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT", threshold="BLOCK_ONLY_HIGH"
            ),
        ]
    ),
)
try:
    print(response.text)
except Exception:
    print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

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

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

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

Go

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

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

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

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

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

Shell

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

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

Java

Client client = new Client();

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

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

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

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

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

Petunjuk Sistem

Python

from google import genai
from google.genai import types

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

Node.js

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

Go

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

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

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

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

Shell

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

Java

Client client = new Client();

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

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

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

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

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

Isi respons

Jika berhasil, isi respons memuat instance GenerateContentResponse.

Metode: models.streamGenerateContent

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

Endpoint

postingan 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 sekali putaran, 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 membuat 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 Panggilan fungsi dan Eksekusi kode untuk mempelajari lebih lanjut.

toolConfig object (ToolConfig)

Opsional. Konfigurasi alat untuk Tool yang ditentukan dalam permintaan. Lihat Panduan pemanggilan fungsi untuk 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 diberikan 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 keselamatan untuk mempelajari cara memasukkan pertimbangan keselamatan dalam aplikasi AI Anda.

systemInstruction object (Content)

Opsional. Developer menetapkan petunjuk sistem. 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 dalam menyajikan prediksi. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opsional. Tingkat layanan permintaan.

store boolean

Opsional. Mengonfigurasi perilaku logging untuk permintaan tertentu. Jika disetel, setelan ini akan lebih diprioritaskan daripada konfigurasi logging tingkat project.

Contoh permintaan

Teks

Python

from google import genai

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

Node.js

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

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

Go

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

Shell

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

Java

Client client = new Client();

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

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

responseStream.close();

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.5-flash", contents=["Tell me about this instrument", organ]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

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

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

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

Go

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

Shell

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

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

Java

Client client = new Client();

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

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


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

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

responseStream.close();

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.5-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

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

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

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

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

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

Shell

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

tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

Video

Python

from google import genai
import time

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

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

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

Node.js

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

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

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

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

Go

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

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

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

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

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

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

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

Shell

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

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

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

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

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

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

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

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

cat response.json
echo

PDF

Python

from google import genai

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

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

Go

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

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

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

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

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

Shell

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


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

Chat

Python

from google import genai
from google.genai import types

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

print(chat.get_history())

Node.js

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

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

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

console.log(chat.getHistory());

Go

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

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

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

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

fmt.Println(chat.History(false))

Shell

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

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 safetyRatings. API: - Menampilkan semua kandidat yang diminta atau tidak sama sekali - Tidak menampilkan kandidat sama sekali hanya jika ada yang salah dengan perintahnya (periksa promptFeedback) - Melaporkan masukan pada setiap kandidat di finishReason dan safetyRatings.

Kolom
candidates[] object (Candidate)

Respons kandidat dari model.

promptFeedback object (PromptFeedback)

Menampilkan masukan perintah terkait filter konten.

usageMetadata object (UsageMetadata)

Hanya output. Metadata tentang penggunaan token permintaan pembuatan.

modelVersion string

Hanya output. Versi model yang digunakan untuk membuat respons.

responseId string

Hanya 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

Kumpulan metadata masukan yang ditentukan perintah dalam GenerateContentRequest.content.

Kolom
blockReason enum (BlockReason)

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

safetyRatings[] object (SafetyRating)

Rating untuk keamanan perintah. Maksimal ada satu rating per kategori.

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

BlockReason

Menentukan alasan mengapa 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 berasal dari daftar blokir terminologi.
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 ukuran perintah efektif total yang berarti ini mencakup jumlah token dalam konten yang di-cache.

cachedContentTokenCount integer

Jumlah token di bagian perintah 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 + 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. Tingkat 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 pokok. Bagian ini digunakan untuk menunjukkan tahap model pokok dan waktu penghentian jika berlaku.

Kolom
modelStage enum (ModelStage)

Tahap model pokok.

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 pokok.

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 pada tahap ini dianggap stabil dan siap digunakan untuk produksi.
LEGACY Jika model berada di tahap ini, berarti model ini akan dihentikan 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, model belum berhenti membuat token.

safetyRatings[] object (SafetyRating)

Daftar rating untuk keamanan kandidat respons.

Maksimal ada satu rating per kategori.

citationMetadata object (CitationMetadata)

Hanya output. Informasi kutipan untuk kandidat yang dihasilkan model.

Kolom ini dapat diisi dengan informasi bacaan untuk teks apa pun yang disertakan dalam content. Bagian ini adalah bagian yang "dibacakan" dari materi berhak 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 berdasar.

Kolom ini diisi untuk panggilan GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Hanya output. Metadata perujukan 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.

index integer

Hanya output. Indeks kandidat dalam daftar kandidat respons.

finishMessage string

Opsional. Hanya output. Mencantumkan alasan mengapa model berhenti membuat token. 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)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

Menentukan alasan model berhenti membuat token.

Enum
FINISH_REASON_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
STOP Titik penghentian alami model atau urutan penghentian yang diberikan.
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 pembacaan.
LANGUAGE Konten kandidat respons ditandai karena menggunakan bahasa yang tidak didukung.
OTHER Alasan tidak diketahui.
BLOCKLIST Pembuatan token dihentikan karena konten berisi istilah terlarang.
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 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 bacaan.
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 berurutan, 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.

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)

Merujuk pada konten sumber 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
source hanya dapat berupa salah satu dari hal berikut:
groundingPassage object (GroundingPassageId)

ID untuk bagian teks inline.

semanticRetrieverChunk object (SemanticRetrieverChunk)

ID untuk Chunk yang diambil melalui Semantic Retriever.

Representasi JSON
{

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

GroundingPassageId

ID untuk bagian dalam GroundingPassage.

Kolom
passageId string

Hanya output. ID bagian 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 Pengambilan 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 perujukan diaktifkan.

Kolom
groundingChunks[] object (GroundingChunk)

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

groundingSupports[] object (GroundingSupport)

Daftar dukungan perujukan.

webSearchQueries[] string

Kueri penelusuran web untuk penelusuran web lanjutan.

imageSearchQueries[] string

Kueri penelusuran gambar yang digunakan untuk perujukan.

searchEntryPoint object (SearchEntryPoint)

Opsional. Entri penelusuran Google untuk penelusuran web lanjutan.

retrievalMetadata object (RetrievalMetadata)

Metadata yang terkait dengan pengambilan dalam alur perujukan.

googleMapsWidgetContextToken string

Opsional. Nama resource token konteks widget Google Maps yang dapat digunakan dengan widget PlacesContextElement untuk merender data kontekstual. Hanya diisi jika fitur perujukan dengan 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 penelusuran Google.

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 merepresentasikan tuple array <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. chunk_type hanya dapat berupa salah satu dari hal berikut:
web object (Web)

Chunk perujukan dari web.

image object (Image)

Opsional. Chunk perujukan dari penelusuran gambar.

retrievedContext object (RetrievedContext)

Opsional. Bagian perujukan dari konteks yang diambil oleh alat penelusuran file.

maps object (Maps)

Opsional. Chunk perujukan dari Google Maps.

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 tersebut berasal.

domain string

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

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

RetrievedContext

Potongan 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. value hanya dapat berupa salah satu dari hal berikut:
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.

Representasi JSON
{
  "key": string,

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

StringList

Daftar nilai string.

Kolom
values[] string

Nilai string dari daftar.

Representasi JSON
{
  "values": [
    string
  ]
}

Maps

Chunk perujukan dari Google Maps. 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 suatu 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 suatu 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 membuat jawaban tentang fitur suatu tempat tertentu di Google Maps.

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

ReviewSnippet

Mencakup 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 dalam '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 dan diatribusikan ke klaim. Jika respons di-streaming, groundingChunkIndices merujuk pada indeks di semua respons. Klien bertanggung jawab untuk mengumpulkan potongan perujukan dari semua respons (sambil mempertahankan urutan yang sama).

confidenceScores[] number

Opsional. Skor keyakinan referensi dukungan. 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 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

Indeks awal dalam Bagian yang diberikan, diukur dalam byte. Offset dari awal Bagian, inklusif, dimulai dari nol.

endIndex integer

Indeks akhir dalam 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 perujukan.

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 perujukan penelusuran Google dan pengambilan dinamis diaktifkan. Nilai ini akan dibandingkan dengan nilai minimum untuk menentukan apakah penelusuran Google harus dipicu atau tidak.

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 logprobs.

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 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 sebagian respons tertentu.

Kolom
startIndex integer

Opsional. Awal segmen respons yang diatribusikan ke sumber ini.

Indeks menunjukkan awal segmen, 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 segmen.

Info lisensi diperlukan untuk kutipan kode.

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

HarmCategory

Kategori bahaya yang dapat dideteksi dalam input pengguna dan respons model.

Enum
HARM_CATEGORY_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
HARM_CATEGORY_HATE_SPEECH Konten yang mendukung kekerasan atau menghasut kebencian terhadap individu atau kelompok berdasarkan atribut tertentu.
HARM_CATEGORY_DANGEROUS_CONTENT Konten yang mempromosikan, memfasilitasi, atau memungkinkan aktivitas berbahaya.
HARM_CATEGORY_HARASSMENT Konten yang melanggar, mengancam, atau konten yang dimaksudkan untuk menindas, menyiksa, atau mengejek.
HARM_CATEGORY_SEXUALLY_EXPLICIT Konten yang berisi materi seksual vulgar.
HARM_CATEGORY_CIVIC_INTEGRITY

Tidak digunakan lagi: Filter pemilu tidak lagi didukung. Kategori bahayanya adalah integritas sipil.

HARM_CATEGORY_IMAGE_HATE Gambar yang berisi ujaran kebencian.
HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT Gambar yang berisi konten berbahaya.
HARM_CATEGORY_IMAGE_HARASSMENT Gambar yang berisi pelecehan.
HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT Gambar yang berisi konten seksual vulgar.
HARM_CATEGORY_JAILBREAK Perintah yang dirancang untuk melewati filter keamanan.

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.

Peringkat keamanan berisi kategori bahaya dan tingkat probabilitas bahaya dalam kategori tersebut untuk sebuah 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. Probabilitas 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 tersebut tidak aman. Hal ini tidak menunjukkan tingkat keparahan bahaya untuk suatu konten.

Enum
HARM_PROBABILITY_UNSPECIFIED Probabilitas tidak ditentukan.
NEGLIGIBLE Konten memiliki peluang yang sangat kecil untuk menjadi tidak aman.
LOW Konten memiliki peluang rendah untuk menjadi tidak aman.
MEDIUM Konten berpeluang sedang tidak aman.
HIGH Konten berpeluang besar tidak aman.

SafetySetting

Setelan keamanan, yang memengaruhi perilaku pemblokiran keamanan.

Lulus setelan keamanan untuk suatu kategori mengubah probabilitas yang diizinkan bahwa konten diblokir.

Kolom
category enum (HarmCategory)

Wajib. Kategori untuk setelan ini.

threshold enum (HarmBlockThreshold)

Wajib. Mengontrol nilai minimum probabilitas saat bahaya diblokir.

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 PELANGGARAN RINGAN akan diizinkan.
BLOCK_MEDIUM_AND_ABOVE Konten dengan tingkat 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

Tingkat layanan interaksi.

Enum
SERVICE_TIER_UNSPECIFIED Tingkat layanan default, yaitu standar.
SERVICE_TIER_FLEX Tingkat layanan fleksibel.
SERVICE_TIER_STANDARD Tingkat layanan standar.
SERVICE_TIER_PRIORITY Tingkat layanan prioritas.

AllowedTools

Konfigurasi untuk alat yang diizinkan.

Kolom
mode enum (ToolChoiceType)

Mode pilihan alat.

tools[] string

Nama alat yang diizinkan.

Representasi JSON
{
  "mode": enum (ToolChoiceType),
  "tools": [
    string
  ]
}

Annotation

Informasi kutipan untuk konten buatan model.

Kolom
startIndex integer

Awal segmen respons yang diatribusikan ke sumber ini.

Indeks menunjukkan awal segmen, diukur dalam byte.

endIndex integer

Akhir segmen yang diatribusikan, eksklusif.

type Union type
Jenis anotasi. type hanya dapat berupa salah satu dari hal berikut:
urlCitation object (UrlCitation)

Anotasi kutipan URL.

fileCitation object (FileCitation)

Anotasi kutipan file.

placeCitation object (PlaceCitation)

Anotasi kutipan tempat.

Representasi JSON
{
  "startIndex": integer,
  "endIndex": integer,

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

UrlCitation

Anotasi kutipan URL.

Kolom
url string

URL.

title string

Judul URL.

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

FileCitation

Anotasi kutipan file.

Kolom
documentUri string

URI file.

fileName string

Nama file.

source string

Sumber yang dikaitkan untuk sebagian teks.

customMetadata object (Struct)

Metadata yang disediakan pengguna tentang konteks yang diambil.

pageNumber integer

Nomor halaman dokumen yang dikutip, jika ada.

mediaId string

ID media dalam kasus kutipan gambar, jika ada.

Representasi JSON
{
  "documentUri": string,
  "fileName": string,
  "source": string,
  "customMetadata": {
    object (Struct)
  },
  "pageNumber": integer,
  "mediaId": string
}

PlaceCitation

Anotasi kutipan tempat.

Kolom
placeId string

ID tempat, dalam format places/{placeId}.

name string

Judul tempat.

url string

Referensi URI tempat.

reviewSnippets[] object (ReviewSnippet)

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

Representasi JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

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.

AudioResponseFormat

Konfigurasi untuk format output audio.

Kolom
mimeType enum (MimeType)

Jenis MIME output audio.

delivery enum (Delivery)

Mode pengiriman untuk output audio.

sampleRate integer

Frekuensi sampel dalam Hz.

bitRate integer

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
}

CodeExecution

Jenis ini tidak memiliki kolom.

Alat yang dapat digunakan oleh model untuk mengeksekusi kode.

CodeExecutionCallStep

Langkah panggilan eksekusi kode.

Kolom
arguments object (CodeExecutionCallStepArguments)

Wajib. Argumen yang akan diteruskan ke eksekusi kode.

Representasi JSON
{
  "arguments": {
    object (CodeExecutionCallStepArguments)
  }
}

CodeExecutionCallStepArguments

Argumen yang akan diteruskan ke eksekusi kode.

Kolom
language enum (Language)

Bahasa pemrograman code.

code string

Kode yang akan dieksekusi.

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

CodeExecutionResultStep

Langkah hasil eksekusi kode.

Kolom
result string

Wajib. Output eksekusi kode.

isError boolean

Apakah eksekusi kode menghasilkan error.

Representasi JSON
{
  "result": string,
  "isError": boolean
}

ComputerUse

Alat yang dapat digunakan oleh model untuk berinteraksi dengan komputer.

Kolom
environment enum (Environment)

Lingkungan yang dioperasikan.

excludedPredefinedFunctions[] string

Daftar fungsi standar yang dikecualikan dari panggilan model.

enablePromptInjectionDetection boolean

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

disabledSafetyPolicies[] enum (SafetyPolicy)

Opsional. Menonaktifkan kebijakan keamanan untuk penggunaan komputer.

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

Konten

Konten respons.

Kolom
type Union type
type hanya dapat berupa salah satu dari hal berikut:
text object (TextContent)
image object (ImageContent)
audio object (AudioContent)
document object (DocumentContent)
video object (VideoContent)
thought
(deprecated)
object (ThoughtContent)
toolCall
(deprecated)
object (ToolCallContent)
toolResult
(deprecated)
object (ToolResultContent)
Representasi JSON
{

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

TextContent

Blok konten teks.

Kolom
text string

Wajib. Konten teks.

annotations[] object (Annotation)

Informasi kutipan untuk konten buatan model.

Representasi JSON
{
  "text": string,
  "annotations": [
    {
      object (Annotation)
    }
  ]
}

ImageContent

Blok konten gambar.

Kolom
mimeType enum (MimeType)

Jenis MIME gambar.

resolution enum (MediaResolution)

Resolusi media.

data_or_uri Union type
Konten gambar. data_or_uri hanya dapat berupa salah satu dari hal berikut:
data string (bytes format)

Konten gambar.

String berenkode base64.

uri string

URI gambar.

Representasi JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

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

AudioContent

Blok konten audio.

Kolom
mimeType enum (MimeType)

Jenis MIME audio.

channels integer

Jumlah saluran audio.

sampleRate integer

Frekuensi sampel audio.

data_or_uri Union type
Konten audio. data_or_uri hanya dapat berupa salah satu dari hal berikut:
data string (bytes format)

Konten audio.

String berenkode base64.

uri string

URI audio.

Representasi JSON
{
  "mimeType": enum (MimeType),
  "channels": integer,
  "sampleRate": integer,

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

DocumentContent

Blok konten dokumen.

Kolom
mimeType enum (MimeType)

Jenis MIME dokumen.

data_or_uri Union type
Konten dokumen. data_or_uri hanya dapat berupa salah satu dari hal berikut:
data string (bytes format)

Konten dokumen.

String berenkode base64.

uri string

URI dokumen.

Representasi JSON
{
  "mimeType": enum (MimeType),

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

Konten Video

Blok konten video.

Kolom
mimeType enum (MimeType)

Jenis MIME video.

resolution enum (MediaResolution)

Resolusi media.

data_or_uri Union type
Konten video. data_or_uri hanya dapat berupa salah satu dari hal berikut:
data string (bytes format)

Konten video.

String berenkode base64.

uri string

URI video.

Representasi JSON
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

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

ThoughtContent

Blok konten pemikiran.

Kolom
signature string (bytes format)

Tanda tangan agar sesuai dengan sumber backend yang akan menjadi bagian dari pembuatan.

String berenkode base64.

summary[] object (ThoughtSummaryContent)

Ringkasan pemikiran.

Representasi JSON
{
  "signature": string,
  "summary": [
    {
      object (ThoughtSummaryContent)
    }
  ]
}

ThoughtSummaryContent

Kolom
type Union type
type hanya dapat berupa salah satu dari hal berikut:
text object (TextContent)
image object (ImageContent)
Representasi JSON
{

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

ToolCallContent

Konten panggilan alat.

Kolom
id string

Wajib. ID unik untuk panggilan alat tertentu ini.

signature string (bytes format)

Hash tanda tangan untuk validasi backend.

String berenkode base64.

type Union type
type hanya dapat berupa salah satu dari hal berikut:
functionCall object (FunctionCallContent)
codeExecutionCall object (CodeExecutionCallContent)
urlContextCall object (UrlContextCallContent)
mcpServerToolCall object (McpServerToolCallContent)
googleSearchCall object (GoogleSearchCallContent)
fileSearchCall object (FileSearchCallContent)
googleMapsCall object (GoogleMapsCallContent)
Representasi JSON
{
  "id": string,
  "signature": string,

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

FunctionCallContent

Blok konten panggilan alat fungsi.

Kolom
name string

Wajib. Nama alat yang akan dipanggil.

arguments object (Struct)

Wajib. Argumen yang akan diteruskan ke fungsi.

Representasi JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

CodeExecutionCallContent

Konten eksekusi kode.

Kolom
arguments object (CodeExecutionCallArguments)

Wajib. Argumen yang akan diteruskan ke eksekusi kode.

Representasi JSON
{
  "arguments": {
    object (CodeExecutionCallArguments)
  }
}

CodeExecutionCallArguments

Argumen yang akan diteruskan ke eksekusi kode.

Kolom
language enum (Language)

Bahasa pemrograman code.

code string

Kode yang akan dieksekusi.

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

UrlContextCallContent

Konten konteks URL.

Kolom
arguments object (UrlContextCallArguments)

Wajib. Argumen yang akan diteruskan ke konteks URL.

Representasi JSON
{
  "arguments": {
    object (UrlContextCallArguments)
  }
}

UrlContextCallArguments

Argumen yang akan diteruskan ke konteks URL.

Kolom
urls[] string

URL yang akan di-fetch.

Representasi JSON
{
  "urls": [
    string
  ]
}

McpServerToolCallContent

Konten panggilan alat MCPServer.

Kolom
name string

Wajib. Nama alat yang dipanggil.

serverName string

Wajib. Nama server MCP yang digunakan.

arguments object (Struct)

Wajib. Objek JSON argumen untuk fungsi.

Representasi JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallContent

Konten Google Penelusuran.

Kolom
arguments object (GoogleSearchCallArguments)

Wajib. Argumen yang akan diteruskan ke Google Penelusuran.

searchType enum (SearchType)

Jenis perujukan penelusuran yang diaktifkan.

Representasi JSON
{
  "arguments": {
    object (GoogleSearchCallArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallArguments

Argumen yang akan diteruskan ke Google Penelusuran.

Kolom
queries[] string

Kueri penelusuran web untuk penelusuran web lanjutan.

Representasi JSON
{
  "queries": [
    string
  ]
}

FileSearchCallContent

Jenis ini tidak memiliki kolom.

Konten Penelusuran File.

GoogleMapsCallContent

Konten Google Maps.

Kolom
arguments object (GoogleMapsCallArguments)

Argumen yang akan diteruskan ke alat Google Maps.

Representasi JSON
{
  "arguments": {
    object (GoogleMapsCallArguments)
  }
}

GoogleMapsCallArguments

Argumen yang akan diteruskan ke alat Google Maps.

Kolom
queries[] string

Kueri yang akan dieksekusi.

Representasi JSON
{
  "queries": [
    string
  ]
}

ToolResultContent

Konten hasil alat.

Kolom
callId string

Wajib. ID yang cocok dengan ID dari blok panggilan fungsi.

signature string (bytes format)

Hash tanda tangan untuk validasi backend.

String berenkode base64.

type Union type
type hanya dapat berupa salah satu dari hal berikut:
functionResult object (FunctionResultContent)
codeExecutionResult object (CodeExecutionResultContent)
urlContextResult object (UrlContextResultContent)
googleSearchResult object (GoogleSearchResultContent)
mcpServerToolResult object (McpServerToolResultContent)
fileSearchResult object (FileSearchResultContent)
googleMapsResult object (GoogleMapsResultContent)
Representasi JSON
{
  "callId": string,
  "signature": string,

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

FunctionResultContent

Blok konten hasil alat fungsi.

Kolom
name string

Nama alat yang dipanggil.

isError boolean

Apakah panggilan alat menghasilkan error.

result Union type
Hasil panggilan alat. result hanya dapat berupa salah satu dari hal berikut:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Representasi JSON
{
  "name": string,
  "isError": boolean,

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

FunctionResultSubcontentList

Kolom
contents[] object (FunctionResultSubcontent)
Representasi JSON
{
  "contents": [
    {
      object (FunctionResultSubcontent)
    }
  ]
}

FunctionResultSubcontent

Kolom
type Union type
type hanya dapat berupa salah satu dari hal berikut:
text object (TextContent)
image object (ImageContent)
Representasi JSON
{

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

CodeExecutionResultContent

Konten hasil eksekusi kode.

Kolom
result string

Wajib. Output eksekusi kode.

isError boolean

Apakah eksekusi kode menghasilkan error.

Representasi JSON
{
  "result": string,
  "isError": boolean
}

UrlContextResultContent

Konten hasil konteks URL.

Kolom
result[] object (UrlContextResult)

Wajib. Hasil konteks URL.

isError boolean

Apakah konteks URL menyebabkan error.

Representasi JSON
{
  "result": [
    {
      object (UrlContextResult)
    }
  ],
  "isError": boolean
}

UrlContextResult

Hasil konteks URL.

Kolom
url string

URL yang diambil.

status enum (Status)

Status pengambilan URL.

Representasi JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultContent

Konten hasil penelusuran Google.

Kolom
result[] object (GoogleSearchResult)

Wajib. Hasil Google Penelusuran.

isError boolean

Apakah Google Penelusuran menghasilkan error.

Representasi JSON
{
  "result": [
    {
      object (GoogleSearchResult)
    }
  ],
  "isError": boolean
}

GoogleSearchResult

Hasil Google Penelusuran.

Kolom
searchSuggestions string

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

Representasi JSON
{
  "searchSuggestions": string
}

McpServerToolResultContent

Konten hasil alat MCPServer.

Kolom
name string

Nama alat yang dipanggil untuk panggilan alat tertentu ini.

serverName string

Nama server MCP yang digunakan.

result Union type
Output dari panggilan server MCP. Dapat berupa teks sederhana atau konten multimedia. result hanya dapat berupa salah satu dari hal berikut:
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
Representasi JSON
{
  "name": string,
  "serverName": string,

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

FileSearchResultContent

Konten hasil Penelusuran File.

Kolom
result[] object (FileSearchResult)

Opsional. Hasil Penelusuran File.

Representasi JSON
{
  "result": [
    {
      object (FileSearchResult)
    }
  ]
}

FileSearchResult

Jenis ini tidak memiliki kolom.

Hasil Penelusuran File.

GoogleMapsResultContent

Konten hasil Google Maps.

Kolom
result[] object (GoogleMapsResult)

Wajib. Hasil Google Maps.

Representasi JSON
{
  "result": [
    {
      object (GoogleMapsResult)
    }
  ]
}

GoogleMapsResult

Hasil Google Maps.

Kolom
places[] object (Places)

Tempat yang ditemukan.

widgetContextToken string

Nama resource token konteks widget Google Maps.

Representasi JSON
{
  "places": [
    {
      object (Places)
    }
  ],
  "widgetContextToken": string
}

Tempat

Kolom
placeId string

ID tempat, dalam format places/{placeId}.

name string

Judul tempat.

url string

Referensi URI tempat.

reviewSnippets[] object (ReviewSnippet)

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

Representasi JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ContentList

Daftar Konten.

Kolom
contents[] object (Content)

Isi daftar.

Representasi JSON
{
  "contents": [
    {
      object (Content)
    }
  ]
}

CreateInteractionRequest

Parameter konfigurasi untuk membuat interaksi.

Kolom
stream boolean

Hanya input. Apakah interaksi akan di-streaming.

store boolean

Hanya input. Apakah akan menyimpan respons dan permintaan untuk pengambilan nanti.

interaction object (Interaction)

Interaksi yang akan dibuat.

background boolean

Hanya input. Apakah akan menjalankan interaksi model di latar belakang.

Representasi JSON
{
  "stream": boolean,
  "store": boolean,
  "interaction": {
    object (Interaction)
  },
  "background": boolean
}

Interaksi

Respons untuk InteractionService.CreateInteraction.

Kolom
id string

Wajib. Hanya output. ID unik untuk penyelesaian interaksi.

status enum (Status)

Wajib. Hanya output. Status interaksi.

created string

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

updated string

Wajib. Hanya output. Waktu saat respons terakhir diperbarui dalam format ISO 8601 (YYYY-MM-DDThh:mm:ssZ).

role
(deprecated)
string

Hanya output. Peran interaksi.

outputs[]
(deprecated)
object (Content)

Hanya output. Respons dari model.

systemInstruction string

Petunjuk sistem untuk interaksi.

tools[] object (Tool)

Daftar deklarasi alat yang dapat dipanggil model selama interaksi.

usage object (Usage)

Hanya output. Statistik penggunaan token permintaan interaksi.

responseModalities[]
(deprecated)
enum (ResponseModality)

Modalitas respons yang diminta (TEXT, IMAGE, AUDIO).

responseMimeType
(deprecated)
string

Jenis MIME respons. Parameter ini diperlukan jika responseFormat ditetapkan.

previousInteractionId string

ID interaksi sebelumnya, jika ada.

environmentId string

Hanya output. ID lingkungan untuk interaksi. Hanya diisi jika konfigurasi lingkungan ditetapkan dalam permintaan.

serviceTier enum (ServiceTier)

Tingkat layanan untuk interaksi.

webhookConfig object (WebhookConfig)

Opsional. Konfigurasi webhook untuk menerima notifikasi saat interaksi selesai.

steps[] object (Step)

Wajib. Hanya output. Langkah-langkah yang membentuk interaksi.

input Union type
Input untuk interaksi. input hanya dapat berupa salah satu dari hal berikut:
contentList
(deprecated)
object (ContentList)

Input untuk interaksi.

stringContent string

Input string untuk interaksi, yang akan diproses sebagai input teks tunggal.

turnList
(deprecated)
object (TurnList)

Giliran untuk interaksi.

stepList object (StepList)

Hanya input. Langkah-langkah untuk interaksi.

content object (Content)

Konten untuk interaksi.

response_format_config Union type
response_format_config hanya dapat berupa salah satu dari hal berikut:
responseFormat
(deprecated)
object (Value)

Memastikan bahwa respons yang dihasilkan adalah objek JSON yang sesuai dengan skema JSON yang ditentukan dalam kolom ini.

responseFormatList object (ResponseFormatList)
responseFormatSingleton object (ResponseFormat)
request_type Union type
Jenis permintaan untuk interaksi. request_type hanya dapat berupa salah satu dari hal berikut:
modelInteraction object (ModelInteraction)

Interaksi untuk membuat penyelesaian menggunakan model.

agentInteraction object (AgentInteraction)

Interaksi untuk membuat penyelesaian menggunakan agen.

environment Union type
Konfigurasi lingkungan untuk interaksi. environment hanya dapat berupa salah satu dari hal berikut:
envId string

ID lingkungan untuk interaksi. Dapat berupa 'remote' untuk lingkungan default.

remoteEnvironment object (EnvironmentConfig)
localEnvironment object (LocalEnvironmentConfig)

Lingkungan agen berada di koneksi klien: operasi lingkungan bawaannya (operasi sistem file dan perintah yang sedang berjalan) diberikan kepada klien untuk dieksekusi, bukan berjalan di sandbox yang dikelola server. Tidak dapat muncul bersamaan dengan remoteEnvironment. (Terlepas dari alat fungsi yang dideklarasikan klien, yang selalu dijalankan di klien terlepas dari kolom ini.)

Representasi JSON
{
  "id": string,
  "status": enum (Status),
  "created": string,
  "updated": string,
  "role": string,
  "outputs": [
    {
      object (Content)
    }
  ],
  "systemInstruction": string,
  "tools": [
    {
      object (Tool)
    }
  ],
  "usage": {
    object (Usage)
  },
  "responseModalities": [
    enum (ResponseModality)
  ],
  "responseMimeType": string,
  "previousInteractionId": string,
  "environmentId": string,
  "serviceTier": enum (ServiceTier),
  "webhookConfig": {
    object (WebhookConfig)
  },
  "steps": [
    {
      object (Step)
    }
  ],

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

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

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

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

TurnList

Daftar Belokan.

Kolom
turns[] object (Turn)
Representasi JSON
{
  "turns": [
    {
      object (Turn)
    }
  ]
}

CANNOT TRANSLATE

Kolom
role string

Asal giliran ini. Harus berupa pengguna untuk input atau model untuk output model.

content Union type
content hanya dapat berupa salah satu dari hal berikut:
contentList object (ContentList)

Konten giliran. Array objek Content.

contentString string

Konten giliran. Satu string.

Representasi JSON
{
  "role": string,

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

StepList

Daftar Langkah.

Kolom
steps[] object (Step)

Langkah-langkah dalam daftar.

Representasi JSON
{
  "steps": [
    {
      object (Step)
    }
  ]
}

Langkah

Langkah dalam interaksi.

Kolom
type Union type
type hanya dapat berupa salah satu dari hal berikut:
thought object (ThoughtStep)
toolCall object (ToolCallStep)
toolResult object (ToolResultStep)
userInput object (UserInputStep)

JANGAN GUNAKAN -- Ini hanya untuk JSON pihak ketiga

modelOutput object (ModelOutputStep)
text
(deprecated)
object (LegacyTextContent)
image
(deprecated)
object (LegacyImageContent)
audio
(deprecated)
object (LegacyAudioContent)
document
(deprecated)
object (LegacyDocumentContent)
video
(deprecated)
object (LegacyVideoContent)
Representasi JSON
{

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

ThoughtStep

Langkah pemikiran.

Kolom
signature string (bytes format)

Hash tanda tangan untuk validasi backend.

String berenkode base64.

summary[] object (Content)

Ringkasan pemikiran.

Representasi JSON
{
  "signature": string,
  "summary": [
    {
      object (Content)
    }
  ]
}

ToolCallStep

Langkah panggilan alat.

Kolom
id string

Wajib. ID unik untuk panggilan alat tertentu ini.

signature string (bytes format)

Hash tanda tangan untuk validasi backend.

String berenkode base64.

type Union type
type hanya dapat berupa salah satu dari hal berikut:
functionCall object (FunctionCallStep)
codeExecutionCall object (CodeExecutionCallStep)
urlContextCall object (UrlContextCallStep)
mcpServerToolCall object (McpServerToolCallStep)
googleSearchCall object (GoogleSearchCallStep)
fileSearchCall object (FileSearchCallStep)
googleMapsCall object (GoogleMapsCallStep)
retrievalCall object (RetrievalCallStep)
Representasi JSON
{
  "id": string,
  "signature": string,

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

FunctionCallStep

Langkah panggilan alat fungsi.

Kolom
name string

Wajib. Nama alat yang akan dipanggil.

arguments object (Struct)

Wajib. Argumen yang akan diteruskan ke fungsi.

Representasi JSON
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

UrlContextCallStep

Langkah panggilan konteks URL.

Kolom
arguments object (UrlContextCallStepArguments)

Wajib. Argumen yang akan diteruskan ke konteks URL.

Representasi JSON
{
  "arguments": {
    object (UrlContextCallStepArguments)
  }
}

UrlContextCallStepArguments

Argumen yang akan diteruskan ke konteks URL.

Kolom
urls[] string

URL yang akan di-fetch.

Representasi JSON
{
  "urls": [
    string
  ]
}

McpServerToolCallStep

Langkah panggilan alat MCPServer.

Kolom
name string

Wajib. Nama alat yang dipanggil.

serverName string

Wajib. Nama server MCP yang digunakan.

arguments object (Struct)

Wajib. Objek JSON argumen untuk fungsi.

Representasi JSON
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallStep

Langkah panggilan Google Penelusuran.

Kolom
arguments object (GoogleSearchCallStepArguments)

Wajib. Argumen yang akan diteruskan ke Google Penelusuran.

searchType enum (SearchType)

Jenis perujukan penelusuran yang diaktifkan.

Representasi JSON
{
  "arguments": {
    object (GoogleSearchCallStepArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallStepArguments

Argumen yang akan diteruskan ke Google Penelusuran.

Kolom
queries[] string

Kueri penelusuran web untuk penelusuran web lanjutan.

Representasi JSON
{
  "queries": [
    string
  ]
}

FileSearchCallStep

Jenis ini tidak memiliki kolom.

Langkah panggilan Penelusuran File.

GoogleMapsCallStep

Langkah panggilan Google Maps.

Kolom
arguments object (GoogleMapsCallStepArguments)

Argumen yang akan diteruskan ke alat Google Maps.

Representasi JSON
{
  "arguments": {
    object (GoogleMapsCallStepArguments)
  }
}

GoogleMapsCallStepArguments

Argumen yang akan diteruskan ke alat Google Maps.

Kolom
queries[] string

Kueri yang akan dieksekusi.

Representasi JSON
{
  "queries": [
    string
  ]
}

ToolResultStep

Langkah hasil fitur.

Kolom
callId string

Wajib. ID yang cocok dengan ID dari blok panggilan fungsi.

signature string (bytes format)

Hash tanda tangan untuk validasi backend.

String berenkode base64.

type Union type
type hanya dapat berupa salah satu dari hal berikut:
functionResult object (FunctionResultStep)
codeExecutionResult object (CodeExecutionResultStep)
urlContextResult object (UrlContextResultStep)
googleSearchResult object (GoogleSearchResultStep)
mcpServerToolResult object (McpServerToolResultStep)
fileSearchResult object (FileSearchResultStep)
googleMapsResult object (GoogleMapsResultStep)
retrievalResult object (RetrievalResultStep)
Representasi JSON
{
  "callId": string,
  "signature": string,

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

FunctionResultStep

Hasil panggilan alat fungsi.

Kolom
name string

Nama alat yang dipanggil.

isError boolean

Apakah panggilan alat menghasilkan error.

result object (Value)

Wajib. Hasil panggilan alat.

Representasi JSON
{
  "name": string,
  "isError": boolean,
  "result": {
    object (Value)
  }
}

UrlContextResultStep

Langkah hasil konteks URL.

Kolom
result[] object (UrlContextResultItem)

Wajib. Hasil konteks URL.

isError boolean

Apakah konteks URL menyebabkan error.

Representasi JSON
{
  "result": [
    {
      object (UrlContextResultItem)
    }
  ],
  "isError": boolean
}

UrlContextResultItem

Hasil konteks URL.

Kolom
url string

URL yang diambil.

status enum (Status)

Status pengambilan URL.

Representasi JSON
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultStep

Langkah hasil penelusuran Google.

Kolom
result[] object (GoogleSearchResultItem)

Wajib. Hasil Google Penelusuran.

isError boolean

Apakah Google Penelusuran menghasilkan error.

Representasi JSON
{
  "result": [
    {
      object (GoogleSearchResultItem)
    }
  ],
  "isError": boolean
}

GoogleSearchResultItem

Hasil Google Penelusuran.

Kolom
searchSuggestions string

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

Representasi JSON
{
  "searchSuggestions": string
}

McpServerToolResultStep

Langkah hasil alat MCPServer.

Kolom
name string

Nama alat yang dipanggil untuk panggilan alat tertentu ini.

serverName string

Nama server MCP yang digunakan.

result object (Value)

Wajib. Output dari panggilan server MCP. Dapat berupa teks sederhana atau konten multimedia.

Representasi JSON
{
  "name": string,
  "serverName": string,
  "result": {
    object (Value)
  }
}

FileSearchResultStep

Jenis ini tidak memiliki kolom.

Langkah hasil Penelusuran File.

GoogleMapsResultStep

Langkah hasil Google Maps.

Kolom
result[] object (GoogleMapsResultItem)
Representasi JSON
{
  "result": [
    {
      object (GoogleMapsResultItem)
    }
  ]
}

GoogleMapsResultItem

Hasil Google Maps.

Kolom
places[] object (GoogleMapsResultPlaces)
widgetContextToken string
Representasi JSON
{
  "places": [
    {
      object (GoogleMapsResultPlaces)
    }
  ],
  "widgetContextToken": string
}

GoogleMapsResultPlaces

Kolom
placeId string
name string
url string
reviewSnippets[] object (ReviewSnippet)
Representasi JSON
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

UserInputStep

Input yang diberikan oleh pengguna.

Kolom
content Union type
content hanya dapat berupa salah satu dari hal berikut:
contentList object (ContentList)

Konten langkah. Array objek Content.

contentString string

Konten langkah. Satu string.

Representasi JSON
{

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

ModelOutputStep

Output yang dihasilkan oleh model.

Kolom
content[] object (Content)
Representasi JSON
{
  "content": [
    {
      object (Content)
    }
  ]
}

ResponseFormatList

Kolom
responseFormats[] object (ResponseFormat)
Representasi JSON
{
  "responseFormats": [
    {
      object (ResponseFormat)
    }
  ]
}

ResponseFormat

Kolom
type Union type
type hanya dapat berupa salah satu dari hal berikut:
audio object (AudioResponseFormat)
text object (TextResponseFormat)
image object (ImageResponseFormat)
video object (VideoResponseFormat)
structValue object (Struct)

Nilai multi-diskriminator sudah diaktifkan di GAOS

Representasi JSON
{

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

TextResponseFormat

Konfigurasi untuk format output teks.

Kolom
mimeType enum (MimeType)

Jenis MIME output teks.

schema object (Struct)

Skema JSON yang harus dipatuhi output. Hanya berlaku jika mimeType adalah application/json.

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

ImageResponseFormat

Konfigurasi untuk format output gambar.

Kolom
mimeType enum (MimeType)

Jenis MIME output gambar.

delivery enum (Delivery)

Mode pengiriman untuk output gambar.

aspectRatio enum (AspectRatio)

Rasio aspek untuk output gambar.

imageSize enum (ImageSize)

Ukuran output gambar.

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

VideoResponseFormat

Konfigurasi untuk format output video.

Kolom
delivery enum (Delivery)

Mode pengiriman untuk output video.

aspectRatio enum (AspectRatio)

Rasio aspek untuk output video.

duration string (Duration format)

Durasi untuk output video.

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

Representasi JSON
{
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "duration": string
}

ModelInteraction

Interaksi untuk membuat penyelesaian menggunakan model.

Kolom
model string

Nama Model yang digunakan untuk membuat penyelesaian.

generationConfig object (GenerationConfig)

Hanya input. Parameter konfigurasi untuk interaksi model.

Representasi JSON
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  }
}

GenerationConfig

Parameter konfigurasi untuk interaksi model.

Kolom
temperature number

Mengontrol keacakan output.

topP number

Probabilitas kumulatif maksimum token yang akan dipertimbangkan saat melakukan sampling.

seed integer

Seed yang digunakan dalam decoding untuk kemampuan reproduksi.

stopSequences[] string

Daftar urutan karakter yang akan menghentikan interaksi output.

thinkingLevel enum (ThinkingLevel)

Tingkat token pemikiran yang harus dihasilkan model.

thinkingSummaries enum (ThinkingSummaries)

Apakah akan menyertakan ringkasan pemikiran dalam respons.

maxOutputTokens integer

Jumlah maksimum token yang akan disertakan dalam respons.

speechConfig[] object (SpeechConfig)

Konfigurasi untuk interaksi ucapan.

imageConfig
(deprecated)
object (ImageConfig)

Konfigurasi untuk interaksi gambar.

videoConfig object (VideoConfig)

Konfigurasi untuk pembuatan video.

tool_choice Union type
Konfigurasi pilihan alat. tool_choice hanya dapat berupa salah satu dari hal berikut:
toolChoiceMode enum (ToolChoiceType)

Mode pilihan alat.

toolChoiceConfig object (ToolChoiceConfig)

Konfigurasi untuk pilihan alat.

Representasi JSON
{
  "temperature": number,
  "topP": number,
  "seed": integer,
  "stopSequences": [
    string
  ],
  "thinkingLevel": enum (ThinkingLevel),
  "thinkingSummaries": enum (ThinkingSummaries),
  "maxOutputTokens": integer,
  "speechConfig": [
    {
      object (SpeechConfig)
    }
  ],
  "imageConfig": {
    object (ImageConfig)
  },
  "videoConfig": {
    object (VideoConfig)
  },

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

ToolChoiceConfig

Konfigurasi pilihan alat yang berisi alat yang diizinkan.

Kolom
allowedTools object (AllowedTools)

Alat yang diizinkan.

Representasi JSON
{
  "allowedTools": {
    object (AllowedTools)
  }
}

SpeechConfig

Konfigurasi untuk interaksi ucapan.

Kolom
voice string

Suara speaker.

language string

Bahasa ucapan.

speaker string

Nama pembicara, harus cocok dengan nama pembicara yang diberikan dalam perintah.

Representasi JSON
{
  "voice": string,
  "language": string,
  "speaker": string
}

ImageConfig

Konfigurasi untuk interaksi gambar.

Kolom
aspectRatio string

Rasio aspek gambar yang akan dibuat. Rasio aspek yang didukung: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 21:9.

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

imageSize string

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

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

VideoConfig

Opsi konfigurasi untuk pembuatan video.

Kolom
task enum (Task)

Mode tugas opsional untuk pembuatan video. Jika tidak ditentukan, model akan otomatis menentukan mode yang sesuai berdasarkan perintah teks dan media input yang diberikan.

Representasi JSON
{
  "task": enum (Task)
}

EnvironmentConfig

Konfigurasi untuk lingkungan kustom.

Kolom
sources[] object (Source)
environmentId string

Opsional. ID lingkungan untuk interaksi. Jika ditentukan, permintaan akan memperbarui lingkungan yang ada, bukan membuat lingkungan baru.

network Union type
Konfigurasi jaringan untuk lingkungan. network hanya dapat berupa salah satu dari hal berikut:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Hanya izinkan domain tertentu.

networkMode enum (NetworkMode)

Mode traffic keluar jaringan.

Representasi JSON
{
  "sources": [
    {
      object (Source)
    }
  ],
  "environmentId": string,

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

EnvironmentNetworkEgressAllowlist

Konfigurasi egress jaringan untuk lingkungan.

Kolom
allowlist[] object (EgressRule)

Daftar domain yang diizinkan dan konfigurasinya.

Representasi JSON
{
  "allowlist": [
    {
      object (EgressRule)
    }
  ]
}

EgressRule

Aturan keluar jaringan yang mengontrol domain eksternal mana yang dapat dijangkau oleh lingkungan. Setiap aturan mengidentifikasi domain target dan, secara opsional, serangkaian header HTTP yang akan dimasukkan ke dalam setiap permintaan keluar yang cocok.

Kolom
domain string

Pola domain yang akan dicocokkan untuk aturan ini. Gunakan nama host persis (misalnya, github.com), awalan karakter pengganti (misalnya, *.googleapis.com), atau * untuk mencocokkan semua domain.

transform map (key: string, value: string)

Header yang akan disisipkan ke dalam permintaan yang cocok dengan aturan ini. Kunci: nama header (misalnya, "Authorization"). Nilai: nilai header (misalnya, "Bearer your-token").

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

Representasi JSON
{
  "domain": string,
  "transform": {
    string: string,
    ...
  }
}

Sumber

Sumber yang akan di-mount ke dalam lingkungan.

Kolom
type enum (Type)
source string

Sumber lingkungan. Untuk GCS, ini adalah jalur GCS. Untuk GitHub, ini adalah jalur GitHub.

target string

Tempat sumber harus muncul di lingkungan.

content string

Konten inline jika type adalah INLINE.

encoding string

Encoding opsional untuk konten inline (misalnya, base64).

Representasi JSON
{
  "type": enum (Type),
  "source": string,
  "target": string,
  "content": string,
  "encoding": string
}

LocalEnvironmentConfig

Jenis ini tidak memiliki kolom.

Konfigurasi untuk lingkungan yang berada di koneksi klien, bukan di sandbox yang dikelola server.

Jika disetel (melalui Interaction.local_environment), sistem file dan shell agen akan diperlakukan sebagai berada di klien: operasi lingkungan bawaan agen (misalnya, membaca/mencantumkan/mengedit file dan menjalankan perintah) akan ditangguhkan di server dan dikembalikan ke klien untuk dieksekusi, dengan hasilnya ditampilkan pada giliran berikutnya. Hal ini saling eksklusif dengan EnvironmentConfig (remoteEnvironment) yang dikelola server, karena lingkungan berada di klien atau di sandbox server, tidak pernah keduanya.

Setelan ini hanya mengatur lingkungan bawaan agen. Alat fungsi yang dideklarasikan klien selalu dijalankan di klien, terlepas dari kolom ini.

Alat

Alat yang dapat digunakan oleh model.

Kolom
type Union type
Alat yang akan digunakan. type hanya dapat berupa salah satu dari hal berikut:
function object (Function)

Fungsi yang dapat digunakan oleh model.

codeExecution object (CodeExecution)

Alat yang dapat digunakan oleh model untuk mengeksekusi kode.

urlContext object (UrlContext)

Alat yang dapat digunakan oleh model untuk mengambil konteks URL.

computerUse object (ComputerUse)

Alat untuk mendukung model yang berinteraksi langsung dengan komputer.

mcpServer object (McpServer)

MCPServer adalah server yang dapat dipanggil oleh model untuk melakukan tindakan.

googleMaps object (GoogleMaps)

Alat yang dapat digunakan oleh model untuk menelusuri Google Maps.

retrieval object (Retrieval)

Alat yang dapat digunakan oleh model untuk mengambil file.

Representasi JSON
{

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

Fungsi

Alat yang dapat digunakan oleh model.

Kolom
name string

Nama fungsi.

description string

Deskripsi fungsi.

parameters object (Value)

Skema JSON untuk parameter fungsi.

Representasi JSON
{
  "name": string,
  "description": string,
  "parameters": {
    object (Value)
  }
}

UrlContext

Jenis ini tidak memiliki kolom.

Alat yang dapat digunakan oleh model untuk mengambil konteks URL.

McpServer

MCPServer adalah server yang dapat dipanggil oleh model untuk melakukan tindakan.

Kolom
name string

Nama MCPServer.

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

allowedTools[] object (AllowedTools)

Alat yang diizinkan.

Representasi JSON
{
  "name": string,
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "allowedTools": [
    {
      object (AllowedTools)
    }
  ]
}

GoogleSearch

Alat yang dapat digunakan oleh model untuk menelusuri Google.

Kolom
searchTypes[] enum (SearchType)

Jenis perujukan penelusuran yang akan diaktifkan.

Representasi JSON
{
  "searchTypes": [
    enum (SearchType)
  ]
}

FileSearch

Alat yang dapat digunakan oleh model untuk menelusuri file.

Kolom
fileSearchStoreNames[] string

Nama penyimpanan penelusuran file yang akan ditelusuri.

topK integer

Jumlah potongan pengambilan semantik yang akan diambil.

metadataFilter string

Filter metadata yang akan diterapkan ke dokumen dan bagian pengambilan semantik.

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

GoogleMaps

Alat yang dapat digunakan oleh model untuk memanggil Google Maps.

Kolom
enableWidget boolean

Apakah akan menampilkan token konteks widget dalam hasil panggilan alat respons.

latitude number

Garis lintang lokasi pengguna.

longitude number

Garis bujur lokasi pengguna.

Representasi JSON
{
  "enableWidget": boolean,
  "latitude": number,
  "longitude": number
}

Penggunaan

Statistik penggunaan token permintaan interaksi.

Kolom
totalInputTokens integer

Jumlah token dalam perintah (konteks).

inputTokensByModality[] object (ModalityTokens)

Perincian penggunaan token input menurut modalitas.

totalCachedTokens integer

Jumlah token di bagian perintah yang di-cache (konten yang di-cache).

cachedTokensByModality[] object (ModalityTokens)

Perincian penggunaan token yang di-cache menurut modalitas.

totalOutputTokens integer

Jumlah total token di semua respons yang dihasilkan.

outputTokensByModality[] object (ModalityTokens)

Perincian penggunaan token output menurut modalitas.

totalToolUseTokens integer

Jumlah token yang ada dalam perintah penggunaan alat.

toolUseTokensByModality[] object (ModalityTokens)

Perincian penggunaan token penggunaan alat menurut modalitas.

totalThoughtTokens integer

Jumlah token pemikiran untuk model penalaran.

totalTokens integer

Jumlah total token untuk permintaan interaksi (prompt + respons + token internal lainnya).

groundingToolCount[] object (GroundingToolCount)

Jumlah alat perujukan.

Representasi JSON
{
  "totalInputTokens": integer,
  "inputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalCachedTokens": integer,
  "cachedTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalOutputTokens": integer,
  "outputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalToolUseTokens": integer,
  "toolUseTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalThoughtTokens": integer,
  "totalTokens": integer,
  "groundingToolCount": [
    {
      object (GroundingToolCount)
    }
  ]
}

ModalityTokens

Jumlah token untuk modalitas respons tunggal.

Kolom
modality enum (ResponseModality)

Modalitas yang terkait dengan jumlah token.

tokens integer

Jumlah token untuk modalitas.

Representasi JSON
{
  "modality": enum (ResponseModality),
  "tokens": integer
}

GroundingToolCount

Jumlah alat perataan tanah.

Kolom
type enum (Type)

Jenis alat perujukan yang terkait dengan jumlah.

count integer

Jumlah alat perataan tanah.

Representasi JSON
{
  "type": enum (Type),
  "count": integer
}

WebhookConfig

Pesan untuk mengonfigurasi peristiwa webhook untuk permintaan.

Kolom
uris[] string

Opsional. Jika disetel, URI webhook ini akan digunakan untuk peristiwa webhook, bukan webhook terdaftar.

userMetadata object (Struct format)

Opsional. Metadata pengguna yang akan ditampilkan pada setiap pengiriman peristiwa ke webhook.

Representasi JSON
{
  "uris": [
    string
  ],
  "userMetadata": {
    object
  }
}

SafetySetting

Setelan keamanan yang memengaruhi perilaku pemblokiran keamanan.

[SafetySetting][google.cloud.aiplatform.master.SafetySetting] terdiri dari [kategori][google.cloud.aiplatform.master.SafetySetting.category] bahaya dan [nilai minimum][google.cloud.aiplatform.master.SafetySetting.threshold] untuk kategori tersebut.

Kolom
type enum (HarmCategory)

Wajib. Jenis kategori bahaya yang akan diblokir.

threshold enum (HarmBlockThreshold)

Wajib. Nilai minimum untuk memblokir konten. Jika probabilitas bahaya melebihi nilai minimum ini, konten akan diblokir.

method enum (HarmBlockMethod)

Opsional. Metode untuk memblokir konten. Jika tidak ditentukan, perilaku defaultnya adalah menggunakan skor probabilitas.

Representasi JSON
{
  "type": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold),
  "method": enum (HarmBlockMethod)
}

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.

Lingkungan

Mewakili lingkungan yang dioperasikan, seperti browser web.

Enum
ENVIRONMENT_UNSPECIFIED Nilai defaultnya adalah browser.
BROWSER Beroperasi di browser web.
MOBILE Beroperasi di lingkungan seluler.
DESKTOP Beroperasi di lingkungan desktop.

HarmBlockMethod

Metode untuk memblokir konten.

Enum
HARM_BLOCK_METHOD_UNSPECIFIED Metode pemblokiran bahaya tidak ditentukan.
SEVERITY Metode pemblokiran bahaya menggunakan skor probabilitas dan keparahan.
PROBABILITY Metode pemblokiran bahaya menggunakan skor probabilitas.

HarmBlockThreshold

Nilai minimum untuk memblokir konten berdasarkan probabilitas bahaya.

Enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED Batas blokir bahaya tidak ditentukan.
BLOCK_LOW_AND_ABOVE Blokir konten dengan probabilitas bahaya rendah atau lebih tinggi.
BLOCK_MEDIUM_AND_ABOVE Memblokir konten dengan probabilitas bahaya sedang atau lebih tinggi.
BLOCK_ONLY_HIGH Memblokir konten dengan probabilitas bahaya tinggi.
BLOCK_NONE Jangan memblokir konten apa pun, terlepas dari probabilitas bahayanya.
OFF Menonaktifkan filter keamanan sepenuhnya.

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.

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.

MediaResolution

Resolusi untuk media input (gambar/video).

Enum
MEDIA_RESOLUTION_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
LOW Resolusi rendah.
MEDIUM Resolusi sedang.
HIGH Resolusi tinggi.
ULTRA_HIGH Resolusi sangat tinggi.

Jenis Mime

Enum
TYPE_UNSPECIFIED
TYPE_WAV Format audio WAV
TYPE_MP3 Format audio MP3
TYPE_AIFF Format audio AIFF
TYPE_AAC Format audio AAC
TYPE_OGG Format audio OGG
TYPE_FLAC Format audio FLAC
TYPE_MPEG Format audio MPEG
TYPE_M4A Format audio M4A
TYPE_L16 Format audio L16
TYPE_OPUS Format audio OPUS
TYPE_ALAW Format audio ALAW
TYPE_MULAW Format audio MULAW

Mode

Menentukan kedalaman dan ketelitian sesi penemuan.

Enum
MODE_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
MODE_SCAN Pemindaian cepat hanya menggunakan pengklasifikasi awal.
MODE_VERIFY Melakukan klasifikasi yang diikuti dengan penyelidikan mendetail.

NetworkMode

Mode egress jaringan untuk konfigurasi non-daftar yang diizinkan.

Enum
NETWORK_MODE_UNSPECIFIED Nilai default. Tidak digunakan.
DISABLED Semua traffic keluar jaringan diblokir.

ResponseModality

Modalitas respons.

Enum
RESPONSE_MODALITY_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
TEXT Menunjukkan bahwa model harus menampilkan teks.
IMAGE Menunjukkan bahwa model harus menampilkan gambar.
AUDIO Menunjukkan bahwa model harus menampilkan audio.
VIDEO Menunjukkan bahwa model harus menampilkan video.
DOCUMENT Menunjukkan bahwa model harus menampilkan dokumen.

ReviewSnippet

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

Kolom
title string

Judul ulasan.

url string

Link yang sesuai dengan ulasan pengguna di Google Maps.

reviewId string

ID cuplikan ulasan.

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

SafetyPolicy

Enum
SAFETY_POLICY_UNSPECIFIED Kebijakan keselamatan 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 keselamatan untuk istilah dan perjanjian hukum.

Skema

Objek Schema memungkinkan definisi jenis data input dan output. Jenis ini dapat berupa objek, tetapi juga primitif dan array. Mewakili subset pilihan 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 apa pun.

title string

Opsional. Judul skema.

description string

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

nullable boolean

Opsional. Menunjukkan apakah nilai boleh berupa null.

enum[] string

Opsional. Kemungkinan nilai 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 wajib 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 diisi saat objek 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 BILANGAN BULAT dan ANGKA Nilai minimum Jenis.BILANGAN BULAT dan Jenis.ANGKA

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

Type 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 angka.
INTEGER Jenis bilangan bulat.
BOOLEAN Jenis Boolean.
ARRAY Jenis array.
OBJECT Jenis objek.
NULL Jenis null.

JenisPenelusuran

Jenis perujukan penelusuran yang akan diaktifkan.

Enum
SEARCH_TYPE_UNSPECIFIED Jenis penelusuran tidak ditentukan. Nilai ini tidak boleh digunakan.

Struct

Struct merepresentasikan nilai data terstruktur, yang terdiri dari kolom yang dipetakan ke nilai yang diketik secara dinamis.

Kolom
fields[] object (Field)

Kolom yang diketik secara dinamis. Daftar, bukan peta, karena LLM sensitif terhadap pengurutan, dan kami ingin memberikan kontrol penuh kepada pengguna.

Representasi JSON
{
  "fields": [
    {
      object (Field)
    }
  ]
}

Kolom

Mewakili satu kolom dalam struct.

Kolom
name string
value object (Value)
Representasi JSON
{
  "name": string,
  "value": {
    object (Value)
  }
}

Tugas

Tugas pembuatan video yang didukung.

Enum
TASK_UNSPECIFIED Tugas tidak ditentukan. Tugas disimpulkan dari perintah input dan media.
TEXT_TO_VIDEO Membuat video hanya dari perintah teks.
IMAGE_TO_VIDEO Membuat video dari satu atau dua gambar sumber. Gambar pertama menentukan frame awal, dan gambar kedua opsional menentukan frame akhir.
REFERENCE_TO_VIDEO Membuat video menggunakan media referensi (seperti gambar, audio, atau video).
EDIT Mengubah video input yang ada.

ThinkingLevel

Tingkat token pemikiran yang harus dihasilkan model.

Enum
THINKING_LEVEL_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
THINKING_LEVEL_MINIMAL Tidak perlu banyak berpikir.
THINKING_LEVEL_LOW Tingkat penalaran rendah.
THINKING_LEVEL_MEDIUM Tingkat pemikiran sedang.
THINKING_LEVEL_HIGH Tingkat pemikiran tinggi.

ThinkingSummaries

Apakah akan menyertakan ringkasan pemikiran dalam respons.

Enum
THINKING_SUMMARIES_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
THINKING_SUMMARIES_AUTO Ringkasan pemikiran otomatis.
THINKING_SUMMARIES_NONE Tidak ada ringkasan pemikiran.

Alat

Detail alat yang dapat digunakan model untuk membuat respons.

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

ID Berikutnya: 16

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 sebagian 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 penelusuran Google.

codeExecution object (CodeExecution)

Opsional. Memungkinkan model menjalankan kode sebagai bagian dari pembuatan.

computerUse object (ComputerUse)

Opsional. Alat untuk mendukung model yang 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 perujukan 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. Yang disertakan dalam deklarasi ini adalah nama dan parameter fungsi. FunctionDeclaration ini adalah representasi 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. Nilai Skema: Skema yang menentukan jenis yang digunakan untuk parameter.

parametersJsonSchema value (Value format)

Opsional. Menjelaskan parameter ke fungsi dalam format Skema JSON. Skema harus menjelaskan objek yang propertinya adalah parameter ke fungsi. Contoh:

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

Kolom ini sama eksklusifnya dengan parameters.

response object (Schema)

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

responseJsonSchema value (Value format)

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

Kolom ini sama eksklusifnya 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 disetel, sistem akan menunggu untuk menerima respons fungsi sebelum melanjutkan percakapan.
NON_BLOCKING Jika ditetapkan, sistem tidak akan menunggu untuk menerima respons fungsi. Sebagai gantinya, fungsi ini 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 tertentu.

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

DynamicRetrievalConfig

Menjelaskan opsi untuk menyesuaikan pengambilan dinamis.

Kolom
mode enum (Mode)

Mode prediksi yang akan digunakan dalam pengambilan dinamis.

dynamicThreshold number

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

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

Mode

Mode prediksi yang akan digunakan dalam pengambilan dinamis.

Enum
MODE_UNSPECIFIED Selalu memicu 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 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 perujukan dan konfigurasi terkait.

ImageSearch

Jenis ini tidak memiliki kolom.

Penelusuran gambar untuk konfigurasi perujukan dan terkait.

ComputerUse

Jenis alat Penggunaan Komputer.

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 secara eksplisit dikecualikan agar tidak disertakan secara otomatis. Hal ini dapat memiliki dua tujuan: 1. Menggunakan ruang tindakan yang lebih dibatasi / berbeda. 2. Meningkatkan kualitas definisi / petunjuk fungsi yang telah ditentukan sebelumnya.

enablePromptInjectionDetection boolean

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

disabledSafetyPolicies[] enum (SafetyPolicy)

Opsional. Menonaktifkan kebijakan keamanan 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 ditentukan sebelumnya untuk penggunaan komputer.

Enum
SAFETY_POLICY_UNSPECIFIED Kebijakan keselamatan 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 keselamatan untuk istilah dan perjanjian hukum.

UrlContext

Jenis ini tidak memiliki kolom.

Alat untuk mendukung pengambilan konteks URL.

FileSearch

Alat FileSearch yang mengambil pengetahuan dari korpus Semantic Retrieval. File diimpor ke korpora 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 bagian 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 adalah server yang mengimplementasikan protokol MCP. ID Berikutnya: 6

Kolom
name string

Nama MCPServer.

transport Union type
Transportasi yang akan digunakan untuk terhubung ke MCPServer. transport hanya dapat berupa salah satu dari hal berikut:
streamableHttpTransport object (StreamableHttpTransport)

Transportasi yang dapat melakukan streaming permintaan dan respons HTTP.

Representasi JSON
{
  "name": string,

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

StreamableHttpTransport

Transportasi yang dapat melakukan streaming permintaan dan respons HTTP. ID Berikutnya: 6

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, yang diakhiri dengan 's'. Contoh: "3.5s".

sseReadTimeout string (Duration format)

Waktu tunggu habis untuk operasi baca SSE.

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

terminateOnClose boolean

Menentukan apakah akan menutup sesi klien saat transportasi ditutup.

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

GoogleMaps

Alat GoogleMaps yang memberikan 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
}

ToolChoiceType

Jenis pilihan alat.

Enum
TOOL_CHOICE_TYPE_UNSPECIFIED Nilai default. Nilai ini tidak digunakan.
AUTO Pemilihan alat otomatis.
ANY Pilihan alat apa pun.
NONE Tidak ada pilihan alat.
VALIDATED Pilihan alat yang divalidasi.

Nilai

Value merepresentasikan nilai yang diketik secara dinamis yang dapat berupa null, angka, string, boolean, nilai struct rekursif, atau daftar nilai. Produsen nilai diharapkan menetapkan salah satu varian ini. Tidak adanya varian menunjukkan error.

Kolom
kind Union type
Jenis nilai. kind hanya dapat berupa salah satu dari hal berikut:
nullValue null

Mewakili nilai null.

numberValue number

Mewakili nilai ganda.

stringValue string

Mewakili nilai string.

boolValue boolean

Mewakili nilai boolean.

structValue object (Struct)

Mewakili nilai terstruktur.

listValue object (ListValue)

Merepresentasikan Value yang berulang.

contentValue object (Content)

Mewakili konten lengkap (teks, gambar, dll.).

Representasi JSON
{

  // kind
  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object (Struct)
  },
  "listValue": {
    object (ListValue)
  },
  "contentValue": {
    object (Content)
  }
  // Union type
}

ListValue

ListValue adalah wrapper di sekitar kolom nilai berulang.

Kolom
values[] object (Value)

Kolom berulang dari nilai yang diketik secara dinamis.

Representasi JSON
{
  "values": [
    {
      object (Value)
    }
  ]
}

VisualizationMode

Enum untuk mode visualisasi. Pada akhirnya, kami akan mendukung mode interaktif tempat pengguna dapat memilih apakah akan menyertakan visualisasi HTML dalam respons.

Enum
UNSPECIFIED Mode visualisasi default. Akan ditetapkan ke OTOMATIS secara default.
OFF Jangan menyertakan visualisasi.
AUTO Menyertakan visualisasi secara otomatis.

REST Resource: 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 setelah itu, saat menggunakan token yang dihasilkan, pesan dalam sesi BidiGenerateContent akan ditolak. (Gemini dapat menutup sesi secara preventif setelah waktu ini.)

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

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 disetel, defaultnya adalah 60 detik pada masa mendatang. Jika ditetapkan, nilai ini harus kurang dari 20 jam ke depan.

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, maka pesan BidiGenerateContentSetup yang efektif diambil dari koneksi Live API.

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

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

Ini adalah comma-separated list berisi nama kolom yang sepenuhnya memenuhi syarat. Contoh: "user.displayName,photo".

config Union type
Konfigurasi khusus metode untuk token yang dihasilkan. config hanya dapat berupa salah satu dari hal berikut:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

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

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, 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 dalam BidiGenerateContentClientMessage pertama (dan hanya dalam pertama). Berisi konfigurasi yang akan berlaku selama RPC streaming.

Klien harus menunggu pesan BidiGenerateContentSetupComplete sebelum mengirim pesan tambahan.

Kolom
model string

Wajib. Nama resource model. 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. Pengguna memberikan petunjuk sistem untuk model.

Catatan: Hanya teks yang boleh digunakan di setiap 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 kelanjutan sesi.

Jika disertakan, server akan mengirim 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 disesuaikan dengan bahasa audio input, jika dikonfigurasi.

outputAudioTranscription object (AudioTranscriptionConfig)

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

historyConfig object (HistoryConfig)

Opsional. Mengonfigurasi pertukaran histori antara klien dan server.

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

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 penghentian tidak akan disertakan sebagai bagian dari respons.

responseMimeType string

Opsional. Jenis MIME 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 dokumen untuk mengetahui daftar semua jenis MIME teks yang didukung.

responseSchema
(deprecated)
object (Schema)

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

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

_responseJsonSchema
(deprecated)
value (Value format)

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

Jika ditetapkan, responseSchema harus dihapus, tetapi responseMimeType diperlukan.

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 disetel.

Referensi siklik diuraikan hingga batas tertentu dan, oleh karena itu, hanya dapat digunakan dalam properti yang tidak wajib. (Properti yang dapat bernilai null tidak cukup.) Jika $ref ditetapkan pada sub-skema, tidak ada properti lain, kecuali yang dimulai sebagai $, yang dapat ditetapkan.

responseJsonSchema value (Value format)

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

responseModalities[] enum (Modality)

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

Model dapat memiliki beberapa kombinasi modalitas yang didukung. Jika modalitas yang diminta tidak cocok dengan kombinasi yang didukung, error akan ditampilkan.

Daftar kosong setara dengan hanya meminta teks.

candidateCount integer

Opsional. Jumlah respons yang dihasilkan untuk ditampilkan. Jika tidak disetel, 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].

topP number

Opsional. Probabilitas kumulatif maksimum token yang akan dipertimbangkan saat melakukan sampling.

Model ini menggunakan sampling Top-k dan Top-p (inti) 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 inti 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 setelan topK pada permintaan.

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 setelan topK pada permintaan.

seed integer

Opsional. Seed yang digunakan dalam decoding. Jika tidak disetel, permintaan akan menggunakan nilai awal yang dibuat secara acak.

presencePenalty number

Opsional. Penalti kehadiran diterapkan pada logprob token berikutnya jika token telah dilihat dalam respons.

Sanksi ini bersifat biner aktif/nonaktif dan tidak bergantung pada berapa kali token digunakan (setelah yang pertama). Gunakan frequencyPenalty untuk penalti yang meningkat setiap kali digunakan.

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 pada logprob token berikutnya, dikalikan dengan jumlah berapa kali setiap token telah terlihat dalam respons sejauh ini.

Penalti positif akan mencegah penggunaan token yang telah digunakan, secara proporsional dengan jumlah penggunaan token: Semakin sering token digunakan, semakin 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 jumlah penggunaan token. 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 benar, ekspor hasil logprobs dalam respons.

logprobs integer

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

enableEnhancedCivicAnswers boolean

Opsional. Mengaktifkan jawaban publik yang lebih baik. 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 pemikiran.

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.

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

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 satu suara.

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 yang akan digunakan speaker. voice_config hanya dapat berupa salah satu dari hal berikut:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Konfigurasi untuk suara bawaan yang akan digunakan.

Representasi JSON
{

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

PrebuiltVoiceConfig

Konfigurasi untuk speaker bawaan yang akan digunakan.

Kolom
voiceName string

Nama suara preset yang akan digunakan.

Representasi JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Konfigurasi untuk penyiapan multi-speaker.

Kolom
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Wajib. Semua suara speaker 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 benar, pikiran hanya ditampilkan jika tersedia.

thinkingBudget integer

Jumlah token pemikiran yang harus dihasilkan model.

thinkingLevel enum (ThinkingLevel)

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

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

ThinkingLevel

Izinkan pengguna menentukan jumlah yang akan dipikirkan menggunakan enum, bukan anggaran bilangan bulat.

Enum
THINKING_LEVEL_UNSPECIFIED Nilai default.
MINIMAL Tidak perlu banyak berpikir.
LOW Tingkat penalaran rendah.
MEDIUM Tingkat pemikiran sedang.
HIGH Tingkat pemikiran 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 disetel ke rendah (64 token).
MEDIA_RESOLUTION_MEDIUM Resolusi media ditetapkan ke sedang (256 token).
MEDIA_RESOLUTION_HIGH Resolusi media ditetapkan ke tinggi (penyesuaian frame yang di-zoom dengan 256 token).

ResponseFormatConfig

Konfigurasi untuk format output respons. Ini adalah objek datar yang setiap sub-kolom 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 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 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 benar, model akan menghasilkan audio saat bahasa target diucapkan, pada dasarnya model akan menirukan input. Jika salah (false), kami tidak akan membuat audio untuk bahasa target.

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

RealtimeInputConfig

Mengonfigurasi perilaku input real-time di BidiGenerateContent.

Kolom
automaticActivityDetection object (AutomaticActivityDetection)

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

activityHandling enum (ActivityHandling)

Opsional. Mendefinisikan efek aktivitas.

turnCoverage enum (TurnCoverage)

Opsional. Menentukan input mana yang disertakan dalam giliran pengguna.

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

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 kemungkinan ucapan terdeteksi.

prefixPaddingMs integer

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

endOfSpeechSensitivity enum (EndSensitivity)

Opsional. Menentukan kemungkinan ucapan yang terdeteksi telah berakhir.

silenceDurationMs integer

Opsional. Durasi yang diperlukan dari non-ucapan yang terdeteksi (misalnya, keheningan) sebelum akhir ucapan dilakukan. Makin besar nilai ini, makin lama jeda ucapan 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 awal ucapan dideteksi.

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

EndSensitivity

Menentukan cara mendeteksi akhir ucapan.

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 defaultnya adalah START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Jika benar, dimulainya aktivitas akan mengganggu respons model (juga disebut "interupsi"). Respons model saat ini akan terputus saat gangguan terjadi. Ini merupakan perilaku default.
NO_INTERRUPTION Respons model tidak akan terganggu.

TurnCoverage

Opsi tentang input mana yang disertakan dalam giliran pengguna.

Enum
TURN_COVERAGE_UNSPECIFIED Jika tidak ditentukan, perilaku default akan dipilih berdasarkan model. Misalnya, untuk Gemini 2.5, setelan defaultnya adalah TURN_INCLUDES_ONLY_ACTIVITY, sedangkan untuk Gemini 3.1 dan yang lebih baru, setelan defaultnya adalah TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Mencakup aktivitas sejak giliran terakhir, tidak termasuk tidak aktif (misalnya, keheningan pada streaming audio).
TURN_INCLUDES_ALL_INPUT Mencakup semua input real-time sejak giliran terakhir, termasuk tidak ada aktivitas (misalnya, tidak ada suara dalam aliran 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 pelanjutan 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.

Handle sesi berasal dari nilai SessionResumptionUpdate.token dalam koneksi sebelumnya.

Representasi JSON
{
  "handle": string
}

ContextWindowCompressionConfig

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

Kolom
compression_mechanism Union type
Mekanisme kompresi jendela konteks yang digunakan. compression_mechanism hanya dapat berupa salah satu dari hal berikut:
slidingWindow object (SlidingWindow)

Mekanisme jendela geser.

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, setiap operasi kompresi akan menyebabkan peningkatan latensi sementara, sehingga tidak boleh dipicu terlalu sering.

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 di awal giliran peran PENGGUNA. Petunjuk sistem dan BidiGenerateContentSetup.prefix_turns akan selalu berada di awal hasil.

Kolom
targetTokens string (int64 format)

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

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

Representasi JSON
{
  "targetTokens": string
}

AudioTranscriptionConfig

Konfigurasi transkripsi audio.

Kolom
adaptationPhrases[]
(deprecated)
string

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

customVocabulary[] string

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

language_config Union type
Konfigurasi bahasa untuk transkripsi audio. Untuk model ASR, parameter ini wajib diisi. Error akan ditampilkan jika tidak ditetapkan. language_config hanya dapat berupa salah satu dari hal berikut:
languageAuto object (LanguageAuto)

Opsional. Model akan mendeteksi bahasa secara otomatis.

languageHints object (LanguageHints)

Opsional. Menentukan satu atau beberapa bahasa dalam audio.

Representasi JSON
{
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],

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

LanguageAuto

Jenis ini tidak memiliki kolom.

Menunjukkan bahwa bahasa audio harus dideteksi secara otomatis.

LanguageHints

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

Kolom
languageCodes[] string

Wajib. Kode bahasa BCP-47.

Representasi JSON
{
  "languageCodes": [
    string
  ]
}

HistoryConfig

Konfigurasi histori.

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

Kolom
initialHistoryInClientContent boolean

Opsional. Jika benar (true), setelah mengirim setupComplete, server akan menunggu dan pertama-tama memproses pesan clientContent hingga turnComplete menjadi true. Histori awal ini tidak akan memicu panggilan model dan dapat berakhir dengan peran MODEL. Setelah turnComplete menjadi 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

postingan 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 setelah itu, saat menggunakan token yang dihasilkan, pesan dalam sesi BidiGenerateContent akan ditolak. (Gemini dapat menutup sesi secara preventif setelah waktu ini.)

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

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 disetel, defaultnya adalah 60 detik pada masa mendatang. Jika ditetapkan, nilai ini harus kurang dari 20 jam ke depan.

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, maka pesan BidiGenerateContentSetup yang efektif diambil dari koneksi Live API.

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

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

Ini adalah comma-separated list berisi nama kolom yang sepenuhnya memenuhi syarat. Contoh: "user.displayName,photo".

config Union type
Konfigurasi khusus metode untuk token yang dihasilkan. config hanya dapat berupa salah satu dari hal berikut:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

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

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, defaultnya adalah 1.

Isi respons

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