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 antara 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 satu giliran, ini adalah satu instance. Untuk kueri multi-giliran seperti chat, ini adalah kolom berulang yang berisi histori percakapan dan permintaan terbaru.

tools[] object (Tool)

Opsional. Daftar Tools yang dapat digunakan Model untuk 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 gagal 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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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 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 gagal 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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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.7-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 perintah (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 efektif total perintah 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 perhentian alami model atau urutan perhentian 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 pembacaan.
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)

Konten sumber perujukan 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 Semantic Retriever 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 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 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 rating.

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

Enum
HARM_CATEGORY_UNSPECIFIED Kategori tidak ditentukan.
HARM_CATEGORY_DEROGATORY PaLM - Komentar negatif atau berbahaya yang menargetkan identitas dan/atau atribut yang dilindungi.
HARM_CATEGORY_TOXICITY PaLM - Konten yang kasar, tidak sopan, atau tidak senonoh.
HARM_CATEGORY_VIOLENCE PaLM - Menjelaskan skenario yang menggambarkan kekerasan terhadap individu atau kelompok, atau deskripsi umum tentang adegan menyeramkan.
HARM_CATEGORY_SEXUAL PaLM - Berisi referensi ke tindakan seksual atau konten cabul lainnya.
HARM_CATEGORY_MEDICAL PaLM - Mempromosikan saran medis yang tidak diperiksa.
HARM_CATEGORY_DANGEROUS PaLM - Konten berbahaya yang mempromosikan, memfasilitasi, atau mendorong tindakan berbahaya.
HARM_CATEGORY_HARASSMENT Gemini - Konten pelecehan.
HARM_CATEGORY_HATE_SPEECH Gemini - Ujaran kebencian dan konten.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - Konten seksual vulgar.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - Konten berbahaya.
HARM_CATEGORY_CIVIC_INTEGRITY

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

HARM_CATEGORY_JAILBREAK Gemini - Perintah yang mencoba melewati atau mengacaukan pedoman keamanan model (upaya jailbreak).

ModalityTokenCount

Menampilkan info penghitungan token untuk satu modalitas.

Kolom
modality enum (Modality)

Modalitas yang terkait dengan jumlah token ini.

tokenCount integer

Jumlah token.

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

Metode

Modalitas Bagian Konten

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

SafetyRating

Rating keamanan untuk suatu konten.

Peringkat keamanan berisi kategori bahaya dan tingkat probabilitas bahaya dalam kategori tersebut untuk sebuah konten. Konten diklasifikasikan untuk keamanan di berbagai 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 permintaan.

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

Konten

Jenis data terstruktur dasar yang berisi konten multi-bagian dari pesan.

Content mencakup kolom role yang menunjukkan produser Content dan kolom parts yang berisi data multi-bagian yang berisi konten giliran pesan.

Kolom
parts[] object (Part)

Parts yang berurutan dan membentuk satu pesan. Bagian dapat memiliki jenis MIME yang berbeda.

role string

Opsional. Produser konten. Harus 'user' atau 'model'.

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

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

Bagian

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

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

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

Kolom
thought boolean

Opsional. Menunjukkan apakah bagian tersebut dipikirkan dari model.

thoughtSignature string (bytes format)

Opsional. Tanda tangan buram untuk pemikiran sehingga dapat digunakan kembali dalam permintaan berikutnya.

String berenkode base64.

partMetadata object (Struct format)

Metadata kustom yang terkait dengan Bagian. Agen yang menggunakan genai.Part sebagai representasi konten mungkin perlu melacak informasi tambahan. Misalnya, dapat berupa nama file/sumber dari mana Bagian berasal atau cara untuk memultipleks beberapa aliran Bagian.

mediaResolution object (MediaResolution)

Opsional. Resolusi media untuk media input.

mediaProcessing enum (MediaProcessing)

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

data Union type
data hanya dapat berupa salah satu dari hal berikut:
text string

Teks inline.

inlineData object (Blob)

Byte media inline.

functionCall object (FunctionCall)

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

functionResponse object (FunctionResponse)

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

fileData object (FileData)

Data berbasis URI.

executableCode object (ExecutableCode)

Kode yang dihasilkan oleh model yang dimaksudkan untuk dieksekusi.

codeExecutionResult object (CodeExecutionResult)

Hasil penerapan ExecutableCode.

toolCall object (ToolCall)

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

toolResponse object (ToolResponse)

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

metadata Union type
Mengontrol pra-pemrosesan data tambahan. metadata hanya dapat berupa salah satu dari hal berikut:
videoMetadata object (VideoMetadata)

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

Representasi JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),

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

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

Blob

Byte media mentah.

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

Kolom
mimeType string

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

data string (bytes format)

Byte mentah untuk format media.

String berenkode base64.

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

FunctionCall

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

Kolom
id string

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

name string

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

args object (Struct format)

Opsional. Parameter dan nilai fungsi dalam format objek JSON.

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

FunctionResponse

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

Kolom
id string

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

name string

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

response object (Struct format)

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

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

parts[] object (FunctionResponsePart)

Opsional. Parts yang diurutkan yang membentuk respons fungsi. Bagian dapat memiliki jenis MIME IANA yang berbeda.

willContinue boolean

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

scheduling enum (Scheduling)

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

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

FunctionResponsePart

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

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

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

Kolom
data Union type
Data bagian respons fungsi. data hanya dapat berupa salah satu dari hal berikut:
inlineData object (FunctionResponseBlob)

Byte media inline.

Representasi JSON
{

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

FunctionResponseBlob

Byte media mentah untuk respons fungsi.

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

Kolom
mimeType string

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

data string (bytes format)

Byte mentah untuk format media.

String berenkode base64.

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

Penjadwalan

Menentukan cara respons harus dijadwalkan dalam percakapan.

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

FileData

Data berbasis URI.

Kolom
mimeType string

Opsional. Jenis MIME standar IANA dari data sumber.

fileUri string

Wajib. URI.

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

ExecutableCode

Kode yang dibuat oleh model yang dimaksudkan untuk dieksekusi, dan hasil yang ditampilkan ke model.

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

Kolom
id string

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

language enum (Language)

Wajib. Bahasa pemrograman code.

code string

Wajib. Kode yang akan dieksekusi.

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

Language

Bahasa pemrograman yang didukung untuk kode yang dihasilkan.

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

CodeExecutionResult

Hasil penerapan ExecutableCode.

Dihasilkan hanya saat alat CodeExecution digunakan.

Kolom
id string

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

outcome enum (Outcome)

Wajib. Hasil eksekusi kode.

output string

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

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

Hasil

Enumerasi kemungkinan hasil eksekusi kode.

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

ToolCall

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

Kolom
id string

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

toolName string

Opsional. Nama alat yang dipanggil.

toolType enum (ToolType)

Wajib. Jenis alat yang dipanggil.

args object (Struct format)

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

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

ToolType

Jenis alat dalam panggilan fungsi.

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

ToolResponse

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

Kolom
id string

Opsional. ID panggilan alat yang menjadi tujuan respons ini.

toolType enum (ToolType)

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

response object (Struct format)

Opsional. Respons alat.

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

VideoMetadata

Tidak digunakan lagi: Gunakan GenerateContentRequest.processing_options sebagai gantinya. Metadata mendeskripsikan konten video input.

Kolom
startOffset string (Duration format)

Opsional. Offset awal video.

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

endOffset string (Duration format)

Opsional. Offset akhir video.

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

fps number

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

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

MediaResolution

Resolusi media untuk tokenisasi.

Kolom
value Union type
Tingkat resolusi media. value hanya dapat berupa salah satu dari hal berikut:
level enum (Level)

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

Representasi JSON
{

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

Level

Tingkat resolusi media.

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

MediaProcessing

Cara model memproses media input untuk pemahaman.

Enum
MEDIA_PROCESSING_UNSPECIFIED Default. Menggunakan pemrosesan khusus model (3.5 Pro+ -> AGENTIC, model lama -> STATIC).
STATIC Ekstraksi frame dengan kecepatan tetap. Semua frame ditempatkan dalam konteks.
AGENTIC Navigasi dinamis berbasis model. Direkomendasikan untuk sebagian besar kasus penggunaan.

Lingkungan

Lingkungan eksekusi untuk agen.

Kolom
id string

Wajib. Hanya output. ID lingkungan.

sources[] object (Source)

Sumber yang akan di-mount ke dalam lingkungan.

created string

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

updated string

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

lastAccessed string

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

status enum (Status)

Hanya output. Status penampung lingkungan.

fileCount string (int64 format)

Hanya output. Jumlah file di lingkungan, hanya output.

sizeBytes string (int64 format)

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

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
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

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

Status

Status lingkungan.

Enum
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Mode egress jaringan untuk konfigurasi non-daftar yang diizinkan.

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

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.

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: 17

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 disetel, 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 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 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
}

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 lebih awal 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 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, dengan demikian, 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 pencocokan 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, sementara sampling Nucleus membatasi jumlah token berdasarkan probabilitas kumulatif.

Catatan: Nilai default bervariasi menurut Model dan ditentukan oleh atribut Model.top_p yang ditampilkan dari fungsi getModel. Atribut topK yang kosong menunjukkan bahwa model tidak menerapkan pengambilan sampel top-k dan tidak mengizinkan 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 pemikiran. 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.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Opsional. Konfigurasi untuk transkripsi audio (pengenalan ucapan).

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

Metode

Modalitas respons yang didukung.

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

SpeechConfig

Konfigurasi untuk pembuatan dan transkripsi ucapan.

Kolom
voiceConfig object (VoiceConfig)

Konfigurasi jika output 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 pemikiran.

Kolom
includeThoughts boolean

Menunjukkan apakah akan menyertakan pemikiran dalam respons. Jika benar (true), 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 secara inline dalam respons.
URI Data gambar ditampilkan sebagai URI.

AspectRatio

Rasio aspek yang didukung untuk output gambar.

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

ImageSize

Ukuran gambar yang didukung untuk output gambar.

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

TranslationConfig

Konfigurasi untuk fitur terjemahan.

Kolom
targetLanguageCode string

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

echoTargetLanguage boolean

Opsional. Jika 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
}

AudioTranscriptionConfig

Konfigurasi transkripsi audio.

Kolom
languageCodes[] string

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

adaptationPhrases[]
(deprecated)
string

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

customVocabulary[] string

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

wordTimestamp boolean

Opsional. Mengonfigurasi pembuatan stempel waktu tingkat kata.

diarization boolean

Opsional. Mengonfigurasi pemisahan pembicara.

language_config Union type
Tidak digunakan lagi: Gunakan language_codes tingkat teratas sebagai gantinya. language_config hanya dapat berupa salah satu dari berikut:
languageAuto
(deprecated)
object (LanguageAuto)

Opsional. Model akan mendeteksi bahasa secara otomatis.

languageHints
(deprecated)
object (LanguageHints)

Opsional. Menentukan satu atau beberapa bahasa dalam audio.

Representasi JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

  // 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[]
(deprecated)
string

Wajib. Kode bahasa BCP-47.

Representasi JSON
{
  "languageCodes": [
    string
  ]
}

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 start-of-speech 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, defaultnya adalah TURN_INCLUDES_ONLY_ACTIVITY, sedangkan untuk Gemini 3.1 dan yang lebih baru, 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 aktif (misalnya, tidak ada suara di 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 pada 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
}

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 lebih awal 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.