Generating content

Die Gemini API unterstützt die Erstellung von Inhalten mit Bildern, Audio, Code, Tools und mehr. Weitere Informationen zu den einzelnen Funktionen finden Sie im Folgenden. Sehen Sie sich auch den aufgabenorientierten Beispielcode an oder lesen Sie die umfassenden Leitfäden.

Methode: models.generateContent

Generiert eine Modellantwort für eine bestimmte Eingabe (GenerateContentRequest). Ausführliche Informationen zur Verwendung finden Sie im Leitfaden zur Textgenerierung. Die Eingabefunktionen unterscheiden sich je nach Modell, einschließlich abgestimmter Modelle. Weitere Informationen finden Sie im Modellleitfaden und im Leitfaden zur Abstimmung.

Endpunkt

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

Pfadparameter

model string

Erforderlich. Der Name des Model, der zum Generieren der Vervollständigung verwendet werden soll.

Format: models/{model}. Sie nimmt die Form models/{model} an.

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

Felder
contents[] object (Content)

Erforderlich. Der Inhalt der aktuellen Unterhaltung mit dem Modell.

Bei Einzelabfragen ist dies eine einzelne Instanz. Bei Mehrfachabfragen wie Chat ist dies ein wiederkehrendes Feld, das den Unterhaltungsverlauf und die letzte Anfrage enthält.

tools[] object (Tool)

Optional. Eine Liste von Tools, die die Model verwenden kann, um die nächste Antwort zu generieren.

Ein Tool ist ein Code, der es dem System ermöglicht, mit externen Systemen zu interagieren, um eine Aktion oder eine Reihe von Aktionen außerhalb des Wissens und Umfangs des Model auszuführen. Unterstützte Tools sind Function und codeExecution. Weitere Informationen finden Sie in den Leitfäden zu Funktionsaufrufen und zur Code-Ausführung.

toolConfig object (ToolConfig)

Optional. Toolkonfiguration für alle in der Anfrage angegebenen Tool. Ein Anwendungsbeispiel finden Sie im Leitfaden zu Funktionsaufrufen.

safetySettings[] object (SafetySetting)

Optional. Eine Liste eindeutiger SafetySetting-Instanzen zum Blockieren unsicherer Inhalte.

Diese Richtlinie wird am GenerateContentRequest.contents und am GenerateContentResponse.candidates durchgesetzt. Es darf nicht mehr als eine Einstellung für jeden SafetyCategory-Typ geben. Die API blockiert alle Inhalte und Antworten, die die in diesen Einstellungen festgelegten Schwellenwerte nicht erfüllen. Diese Liste überschreibt die Standardeinstellungen für jede SafetyCategory, die in den safetySettings angegeben ist. Wenn für eine bestimmte SafetyCategory in der Liste keine SafetySetting angegeben ist, verwendet die API die Standardsicherheitseinstellung für diese Kategorie. Die Schadenskategorien HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY und HARM_CATEGORY_JAILBREAK werden unterstützt. Ausführliche Informationen zu den verfügbaren Sicherheitseinstellungen finden Sie im Leitfaden. In den Sicherheitsrichtlinien erfahren Sie außerdem, wie Sie Sicherheitsaspekte in Ihre KI-Anwendungen einbeziehen können.

continuationToken string (bytes format)

Optional. Ein undurchsichtiges Fortsetzungstoken, mit dem die Generierung aus einer vorherigen models.generateContent- oder models.streamGenerateContent-Antwort fortgesetzt wird, die mit finishReason auf CONTINUATION beendet wurde. contents ist obligatorisch und muss den Prompt und den Unterhaltungsverlauf aus der ursprünglichen Anfrage identisch replizieren, wenn ein Fortsetzungstoken in einer Anfrage angegeben wird.

Ein base64-codierter String.

labels map (key: string, value: string)

Optional. Labels mit benutzerdefinierten Metadaten für die Anfrage.

Optional. Labels müssen den standardmäßigen einheitlichen Cloud-Labelanforderungen entsprechen: - Labelschlüssel müssen mit einem Buchstaben beginnen. – Labelschlüssel und -werte dürfen maximal 63 Zeichen (Unicode-Codepunkte) lang sein und nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. – Internationale Zeichen sind zulässig.

Verwendung: – Sicherheitskennungen von Aggregatoren: Verwenden Sie den Schlüssel safety_identifier (z.B. {"safety_identifier": "user_session_123"})

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

systemInstruction object (Content)

Optional. Vom Entwickler festgelegte Systemanweisung(en). Derzeit nur Text.

generationConfig object (GenerationConfig)

Optional. Konfigurationsoptionen für die Modellgenerierung und ‑ausgabe.

cachedContent string

Optional. Der Name des im Cache gespeicherten Inhalts, der als Kontext für die Vorhersage verwendet werden soll. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Optional. Die Dienststufe der Anfrage.

store boolean

Optional. Konfiguriert das Logging-Verhalten für eine bestimmte Anfrage. Wenn diese Option festgelegt ist, hat sie Vorrang vor der Logging-Konfiguration auf Projektebene.

Beispielanfrage

Text

Python

from google import genai

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

Node.js

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

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

Ok

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

Muschel

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

Java

Client client = new Client();

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

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

Bild

Python

from google import genai
import PIL.Image

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

Node.js

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

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

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

Ok

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

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

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

Muschel

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

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

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

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

Java

Client client = new Client();

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

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

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

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

Audio

Python

from google import genai

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

Node.js

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

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

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

Ok

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

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

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

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

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

Muschel

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

tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

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

Video

Python

from google import genai
import time

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

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

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

Node.js

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

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

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

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

Ok

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

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

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

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

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

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

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

Muschel

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

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

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

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

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

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

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

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

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

cat response.json
echo

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

PDF

Python

from google import genai

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

Ok

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

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

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

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

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

Muschel

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


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

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

Chat

Python

from google import genai
from google.genai import types

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

Node.js

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

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

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

Ok

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

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

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

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

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

Muschel

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

Java

Client client = new Client();

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

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

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

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

Cache

Python

from google import genai
from google.genai import types

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

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

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

Node.js

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

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

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

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

Ok

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

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

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

Abgestimmtes Modell

Python

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

JSON-Modus

Python

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

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

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

Node.js

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

Ok

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

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

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

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

Muschel

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

Java

Client client = new Client();

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

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

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

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

Code-Ausführung

Python

from google import genai
from google.genai import types

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

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

Go

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

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

// Print the response.
printResponse(response)

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

Java

Client client = new Client();

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

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

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

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

Funktionsaufrufe

Python

from google import genai
from google.genai import types

client = genai.Client()

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

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

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

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

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

Go

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

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

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

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

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

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

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

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

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

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

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

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

printResponse(finalResponse)

Node.js

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Muschel


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

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

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

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

Java

Client client = new Client();

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

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

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

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

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

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

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

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

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

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

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

System.out.println(result);

GenerationConfig

Python

from google import genai
from google.genai import types

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

Node.js

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

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

console.log(response.text);

Ok

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

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

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

printResponse(response)

Muschel

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

Java

Client client = new Client();

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

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

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

Sicherheitseinstellungen

Python

from google import genai
from google.genai import types

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

print(response.candidates[0].safety_ratings)

Node.js

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

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

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

Ok

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

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

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

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

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

Muschel

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

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

Java

Client client = new Client();

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

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

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

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

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

Systemanweisung

Python

from google import genai
from google.genai import types

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

Node.js

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

Ok

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

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

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

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

Muschel

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

Java

Client client = new Client();

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

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

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

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

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

Antworttext

Wenn der Vorgang erfolgreich abgeschlossen wurde, enthält der Antworttext eine Instanz von GenerateContentResponse.

Methode: models.streamGenerateContent

Generiert eine gestreamte Antwort aus dem Modell für eine Eingabe GenerateContentRequest.

Endpunkt

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

Pfadparameter

model string

Erforderlich. Der Name des Model, der zum Generieren der Vervollständigung verwendet werden soll.

Format: models/{model}. Sie nimmt die Form models/{model} an.

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

Felder
contents[] object (Content)

Erforderlich. Der Inhalt der aktuellen Unterhaltung mit dem Modell.

Bei Einzelabfragen ist dies eine einzelne Instanz. Bei Mehrfachabfragen wie Chat ist dies ein wiederkehrendes Feld, das den Unterhaltungsverlauf und die letzte Anfrage enthält.

tools[] object (Tool)

Optional. Eine Liste von Tools, die die Model verwenden kann, um die nächste Antwort zu generieren.

Ein Tool ist ein Code, der es dem System ermöglicht, mit externen Systemen zu interagieren, um eine Aktion oder eine Reihe von Aktionen außerhalb des Wissens und Umfangs des Model auszuführen. Unterstützte Tools sind Function und codeExecution. Weitere Informationen finden Sie in den Leitfäden zu Funktionsaufrufen und zur Code-Ausführung.

toolConfig object (ToolConfig)

Optional. Toolkonfiguration für alle in der Anfrage angegebenen Tool. Ein Anwendungsbeispiel finden Sie im Leitfaden zu Funktionsaufrufen.

safetySettings[] object (SafetySetting)

Optional. Eine Liste eindeutiger SafetySetting-Instanzen zum Blockieren unsicherer Inhalte.

Diese Richtlinie wird am GenerateContentRequest.contents und am GenerateContentResponse.candidates durchgesetzt. Es darf nicht mehr als eine Einstellung für jeden SafetyCategory-Typ geben. Die API blockiert alle Inhalte und Antworten, die die in diesen Einstellungen festgelegten Schwellenwerte nicht erfüllen. Diese Liste überschreibt die Standardeinstellungen für jede SafetyCategory, die in den safetySettings angegeben ist. Wenn für eine bestimmte SafetyCategory in der Liste kein SafetySetting angegeben ist, verwendet die API die Standardsicherheitseinstellung für diese Kategorie. Die Schadenskategorien HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY und HARM_CATEGORY_JAILBREAK werden unterstützt. Ausführliche Informationen zu den verfügbaren Sicherheitseinstellungen finden Sie im Leitfaden. In den Sicherheitsrichtlinien erfahren Sie außerdem, wie Sie Sicherheitsaspekte in Ihre KI-Anwendungen einbeziehen können.

continuationToken string (bytes format)

Optional. Ein undurchsichtiges Fortsetzungstoken, mit dem die Generierung aus einer vorherigen models.generateContent- oder models.streamGenerateContent-Antwort fortgesetzt wird, die mit finishReason auf CONTINUATION beendet wurde. contents ist obligatorisch und muss den Prompt und den Unterhaltungsverlauf aus der ursprünglichen Anfrage identisch replizieren, wenn ein Fortsetzungstoken in einer Anfrage angegeben wird.

Ein base64-codierter String.

labels map (key: string, value: string)

Optional. Labels mit benutzerdefinierten Metadaten für die Anfrage.

Optional. Labels müssen den standardmäßigen einheitlichen Cloud-Labelanforderungen entsprechen: - Labelschlüssel müssen mit einem Buchstaben beginnen. – Labelschlüssel und -werte dürfen maximal 63 Zeichen (Unicode-Codepunkte) lang sein und nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. – Internationale Zeichen sind zulässig.

Verwendung: – Sicherheitskennungen von Aggregatoren: Verwenden Sie den Schlüssel safety_identifier (z.B. {"safety_identifier": "user_session_123"})

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

systemInstruction object (Content)

Optional. Vom Entwickler festgelegte Systemanweisung(en). Derzeit nur Text.

generationConfig object (GenerationConfig)

Optional. Konfigurationsoptionen für die Modellgenerierung und ‑ausgabe.

cachedContent string

Optional. Der Name des im Cache gespeicherten Inhalts, der als Kontext für die Vorhersage verwendet werden soll. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Optional. Die Dienststufe der Anfrage.

store boolean

Optional. Konfiguriert das Logging-Verhalten für eine bestimmte Anfrage. Wenn diese Option festgelegt ist, hat sie Vorrang vor der Logging-Konfiguration auf Projektebene.

Beispielanfrage

Text

Python

from google import genai

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

Node.js

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

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

Ok

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

Muschel

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

Java

Client client = new Client();

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

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

responseStream.close();

Bild

Python

from google import genai
import PIL.Image

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

Node.js

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

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

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

Ok

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

Muschel

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

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

Java

Client client = new Client();

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

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

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

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

responseStream.close();

Audio

Python

from google import genai

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

Ok

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

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

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

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

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

Muschel

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

tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

Video

Python

from google import genai
import time

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

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

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

Node.js

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

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

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

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

Ok

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

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

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

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

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

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

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

Muschel

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

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

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

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

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

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

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

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

cat response.json
echo

PDF

Python

from google import genai

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

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

Ok

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

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

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

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

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

Muschel

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


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

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

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

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

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

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

cat response.json
echo

Chat

Python

from google import genai
from google.genai import types

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

print(chat.get_history())

Node.js

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

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

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

console.log(chat.getHistory());

Ok

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

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

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

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

fmt.Println(chat.History(false))

Muschel

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"

Antworttext

Bei Erfolg enthält der Antworttext einen Stream von GenerateContentResponse-Instanzen.

GenerateContentResponse

Antwort des Modells, die mehrere Antwortvorschläge unterstützt.

Sicherheitsbewertungen und Inhaltsfilter werden sowohl für den Prompt in GenerateContentResponse.prompt_feedback als auch für jeden Kandidaten in finishReason und safetyRatings gemeldet. Die API: – Gibt entweder alle angeforderten Kandidaten oder keinen von ihnen zurück – Gibt nur dann keine Kandidaten zurück, wenn etwas mit dem Prompt nicht stimmte (siehe promptFeedback) – Gibt Feedback zu jedem Kandidaten in finishReason und safetyRatings zurück.

Felder
candidates[] object (Candidate)

Kandidatenantworten des Modells.

promptFeedback object (PromptFeedback)

Gibt das Feedback des Prompts zu den Inhaltsfiltern zurück.

usageMetadata object (UsageMetadata)

Nur Ausgabe. Metadaten zur Tokennutzung der Generierungsanfragen.

modelVersion string

Nur Ausgabe. Die Modellversion, die zum Generieren der Antwort verwendet wird.

responseId string

Nur Ausgabe. „responseId“ wird verwendet, um jede Antwort zu identifizieren.

modelStatus object (ModelStatus)

Nur Ausgabe. Der aktuelle Modellstatus dieses Modells.

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

PromptFeedback

Eine Reihe von Feedback-Metadaten, die im Prompt in GenerateContentRequest.content angegeben sind.

Felder
blockReason enum (BlockReason)

Optional. Wenn dieser Wert festgelegt ist, wurde der Prompt blockiert und es werden keine Kandidaten zurückgegeben. Formulieren Sie den Prompt um.

safetyRatings[] object (SafetyRating)

Bewertungen für die Sicherheit des Prompts. Pro Kategorie gibt es maximal eine Bewertung.

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

BlockReason

Gibt den Grund an, warum der Prompt blockiert wurde.

Enums
BLOCK_REASON_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
SAFETY Der Prompt wurde aus Sicherheitsgründen blockiert. Prüfen Sie safetyRatings, um herauszufinden, welche Sicherheitskategorie die Blockierung verursacht hat.
OTHER Der Prompt wurde aus unbekannten Gründen blockiert.
BLOCKLIST Der Prompt wurde aufgrund von Begriffen blockiert, die in der Sperrliste für Begriffe enthalten sind.
PROHIBITED_CONTENT Der Prompt wurde aufgrund unzulässiger Inhalte blockiert.
IMAGE_SAFETY Kandidaten wurden aufgrund von unsicheren Inhalten für die Bildgenerierung blockiert.

UsageMetadata

Metadaten zur Tokennutzung der Generierungsanfrage.

Felder
promptTokenCount integer

Anzahl der Tokens im Prompt. Wenn cachedContent festgelegt ist, ist dies immer noch die effektive Gesamtgröße des Prompts. Das bedeutet, dass die Anzahl der Tokens im im Cache gespeicherten Inhalt enthalten ist.

cachedContentTokenCount integer

Anzahl der Tokens im im Cache gespeicherten Teil des Prompts (im Cache gespeicherter Inhalt)

candidatesTokenCount integer

Gesamtzahl der Tokens für alle generierten Antwortkandidaten.

toolUsePromptTokenCount integer

Nur Ausgabe. Anzahl der Tokens in den Prompts für die Toolnutzung.

thoughtsTokenCount integer

Nur Ausgabe. Anzahl der Tokens für Gedanken bei Thinking-Modellen.

totalTokenCount integer

Gesamtzahl der Tokens für die Generierungsanfrage (Prompt + Prompt für die Toolnutzung + Gedanken + Antwortkandidaten).

promptTokensDetails[] object (ModalityTokenCount)

Nur Ausgabe. Liste der Modalitäten, die in der Anfrageeingabe verarbeitet wurden.

cacheTokensDetails[] object (ModalityTokenCount)

Nur Ausgabe. Liste der Modalitäten der im Cache gespeicherten Inhalte in der Anfrageeingabe.

candidatesTokensDetails[] object (ModalityTokenCount)

Nur Ausgabe. Liste der Modalitäten, die in der Antwort zurückgegeben wurden.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Nur Ausgabe. Liste der Modalitäten, die für die Eingaben von Toolnutzungsanfragen verarbeitet wurden.

serviceTier enum (ServiceTier)

Nur Ausgabe. Dienststufe der Anfrage.

JSON-Darstellung
{
  "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

Der Status des zugrunde liegenden Modells. Damit werden die Phase des zugrunde liegenden Modells und gegebenenfalls der Zeitpunkt der Einstellung angegeben.

Felder
modelStage enum (ModelStage)

Die Phase des zugrunde liegenden Modells.

retirementTime string (Timestamp format)

Der Zeitpunkt, zu dem das Modell eingestellt wird.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

message string

Eine Nachricht, die den Modellstatus erläutert.

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

ModelStage

Definiert die Phase des zugrunde liegenden Modells.

Enums
MODEL_STAGE_UNSPECIFIED Nicht angegebene Modellphase.
UNSTABLE_EXPERIMENTAL

Das zugrunde liegende Modell wird häufig optimiert.

EXPERIMENTAL Modelle in dieser Phase sind nur für experimentelle Zwecke gedacht.
PREVIEW Modelle in dieser Phase sind ausgereifter als experimentelle Modelle.
STABLE Modelle in dieser Phase gelten als stabil und produktionsreif.
LEGACY Wenn sich das Modell in dieser Phase befindet, wird es in naher Zukunft eingestellt. Nur Bestandskunden können dieses Modell verwenden.
DEPRECATED

Modelle in dieser Phase werden eingestellt. Diese Modelle können nicht verwendet werden.

RETIRED Modelle in dieser Phase werden eingestellt. Diese Modelle können nicht verwendet werden.

Kandidat

Ein vom Modell generierter Antwortkandidat.

Felder
content object (Content)

Nur Ausgabe. Vom Modell zurückgegebene generierte Inhalte.

finishReason enum (FinishReason)

Optional. Nur Ausgabe. Der Grund, warum das Modell keine Tokens mehr generiert.

Wenn leer, wird das Modell weiterhin die Tokens generieren.

safetyRatings[] object (SafetyRating)

Liste der Bewertungen für die Sicherheit eines Antwortkandidaten.

Es gibt maximal eine Bewertung pro Kategorie.

citationMetadata object (CitationMetadata)

Nur Ausgabe. Quellenangaben für den vom Modell generierten Kandidaten.

Dieses Feld kann mit Informationen zur Rezitation für jeden Text im content gefüllt werden. Das sind Passagen, die aus urheberrechtlich geschütztem Material in den Trainingsdaten des zugrunde liegenden LLM „zitiert“ werden.

tokenCount integer

Nur Ausgabe. Tokenanzahl für diesen Kandidaten.

groundingAttributions[] object (GroundingAttribution)

Nur Ausgabe. Attributionsinformationen für Quellen, die zu einer fundierten Antwort beigetragen haben.

Dieses Feld wird für GenerateAnswer-Aufrufe ausgefüllt.

groundingMetadata object (GroundingMetadata)

Nur Ausgabe. Fundierungsmetadaten für den Kandidaten.

Dieses Feld wird für GenerateContent-Aufrufe ausgefüllt.

avgLogprobs number

Nur Ausgabe. Durchschnittlicher Log-Wahrscheinlichkeitswert des Kandidaten.

logprobsResult object (LogprobsResult)

Nur Ausgabe. Log-Likelihood-Werte für die Antwort-Tokens und die Top-Tokens

urlContextMetadata object (UrlContextMetadata)

Nur Ausgabe. Metadaten im Zusammenhang mit dem Tool zum Abrufen von URL-Kontext.

continuationToken string (bytes format)

Ein optionales verschlüsseltes Fortsetzungstoken, das zurückgegeben wird, wenn finishReason den Wert CONTINUATION hat. Clients können dieses Token in einer nachfolgenden GenerateContentRequest übergeben, um die Generierung fortzusetzen.

Ein base64-codierter String.

index integer

Nur Ausgabe. Index des Kandidaten in der Liste der Antwortkandidaten.

finishMessage string

Optional. Nur Ausgabe. Details zum Grund, warum das Modell keine Tokens mehr generiert. Dieses Feld wird nur ausgefüllt, wenn finishReason festgelegt ist.

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

FinishReason

Definiert den Grund, warum das Modell keine Tokens mehr generiert.

Enums
FINISH_REASON_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
STOP Natürlicher Stopppunkt des Modells oder angegebene Stoppsequenz.
MAX_TOKENS Die in der Anfrage angegebene maximale Anzahl von Tokens wurde erreicht.
SAFETY Der Inhalt des Antwortvorschlags wurde aus Sicherheitsgründen gemeldet.
RECITATION Der Antwortvorschlag wurde aus Gründen der Rezitation gemeldet.
LANGUAGE Der Inhalt des Antwortkandidaten wurde wegen der Verwendung einer nicht unterstützten Sprache gemeldet.
OTHER Unbekannter Grund.
BLOCKLIST Die Tokengenerierung wurde gestoppt, weil der Inhalt verbotene Begriffe enthält.
PROHIBITED_CONTENT Die Tokengenerierung wurde gestoppt, weil die Antwort möglicherweise unzulässige Inhalte enthält.
SPII Die Tokengenerierung wurde gestoppt, da der Inhalt möglicherweise vertrauliche personenidentifizierbare Informationen enthält.
MALFORMED_FUNCTION_CALL Der vom Modell generierte Funktionsaufruf ist ungültig.
IMAGE_SAFETY Die Tokengenerierung wurde gestoppt, weil die generierten Bilder Sicherheitsverstöße enthalten.
IMAGE_PROHIBITED_CONTENT Die Bildgenerierung wurde beendet, weil die generierten Bilder andere unzulässige Inhalte enthalten.
IMAGE_OTHER Die Bildgenerierung wurde aufgrund eines anderen Problems beendet.
NO_IMAGE Das Modell sollte ein Bild generieren, es wurde jedoch keines generiert.
IMAGE_RECITATION Die Bildgenerierung wurde aufgrund von Rezitation gestoppt.
UNEXPECTED_TOOL_CALL Das Modell hat einen Toolaufruf generiert, aber in der Anfrage waren keine Tools aktiviert.
TOO_MANY_TOOL_CALLS Das Modell hat zu viele Tools nacheinander aufgerufen, sodass das System die Ausführung beendet hat.
MISSING_THOUGHT_SIGNATURE In der Anfrage fehlt mindestens eine Thought-Signatur.
MALFORMED_RESPONSE Aufgrund einer fehlerhaften Antwort beendet.
ESCALATION Die Anfrage wurde durch eine Eskalationsregel herausgefiltert.
PUP_LIMITED_DISABLED Gibt an, dass die Tokengenerierung beendet wurde, weil das Nutzerkonto aufgrund von Verstößen gegen die Richtlinie zur unzulässigen Nutzung eingeschränkt oder deaktiviert ist.
CONTINUATION Die Tokengenerierung wurde gestoppt, da die Antwort das Tokenlimit pro Anfrage erreicht hat, die Generierung aber noch nicht abgeschlossen ist. Die Modellantwort kann über eine nachfolgende Anfrage mit dem zurückgegebenen continuationToken fortgesetzt werden. Hinweis: Der maxOutputTokens ist über Fortsetzungssprünge hinweg kumulativ und muss monoton erhöht oder weggelassen werden.

GroundingAttribution

Quellenangabe für eine Quelle, die zu einer Antwort beigetragen hat.

Felder
sourceId object (AttributionSourceId)

Nur Ausgabe. Kennung für die Quelle, die zu dieser Attribution beiträgt.

content object (Content)

Fundierte Quellinhalte, die diese Attribution ausmachen.

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

AttributionSourceId

Kennung für die Quelle, die zu dieser Attribution beiträgt.

Felder
source Union type
Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
groundingPassage object (GroundingPassageId)

Kennung für eine Inline-Passage.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Kennung für ein Chunk, das über Semantic Retriever abgerufen wurde.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{

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

GroundingPassageId

Kennung für einen Teil innerhalb eines GroundingPassage.

Felder
passageId string

Nur Ausgabe. ID des Abschnitts, der mit dem GroundingPassage.id des GenerateAnswerRequest übereinstimmt.

partIndex integer

Nur Ausgabe. Index des Teils innerhalb des GroundingPassage.content des GenerateAnswerRequest.

JSON-Darstellung
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

ID für ein Chunk, das über Semantic Retriever abgerufen wurde, angegeben in der GenerateAnswerRequest mit SemanticRetrieverConfig.

Felder
source string

Nur Ausgabe. Name der Quelle, die mit dem SemanticRetrieverConfig.source der Anfrage übereinstimmt. Beispiel: corpora/123 oder corpora/123/documents/abc

chunk string

Nur Ausgabe. Name des Chunk, der die Quellenangabe enthält. Beispiel: corpora/123/documents/abc/chunks/xyz

JSON-Darstellung
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Metadaten, die an den Client zurückgegeben werden, wenn die Fundierung aktiviert ist.

Felder
groundingChunks[] object (GroundingChunk)

Liste der unterstützenden Referenzen, die aus der angegebenen Fundierungsquelle abgerufen wurden. Beim Streaming enthält dies nur die Fundierungsblöcke, die nicht in den Fundierungsmetadaten früherer Antworten enthalten waren.

groundingSupports[] object (GroundingSupport)

Liste der Fundierungsunterstützung.

webSearchQueries[] string

Websuchanfragen für die nachfolgende Websuche.

imageSearchQueries[] string

Bildsuchanfragen, die für die Fundierung verwendet werden.

searchEntryPoint object (SearchEntryPoint)

Optional. Eintrag in der Google Suche für die folgenden Websuchen.

retrievalMetadata object (RetrievalMetadata)

Metadaten im Zusammenhang mit dem Abruf im Fundierungsablauf.

googleMapsWidgetContextToken string

Optional. Ressourcenname des Kontext-Tokens für das Google Maps-Widget, das mit dem PlacesContextElement-Widget verwendet werden kann, um Kontextdaten zu rendern. Wird nur angegeben, wenn die Fundierung mit Google Maps aktiviert ist.

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

SearchEntryPoint

Einstiegspunkt für die Google Suche.

Felder
renderedContent string

Optional. Webinhalts-Snippet, das in eine Webseite oder eine App-Webview eingebettet werden kann.

sdkBlob string (bytes format)

Optional. Base64-codiertes JSON-Objekt, das ein Array von <Suchbegriff, Such-URL>-Tupeln darstellt.

Ein base64-codierter String.

JSON-Darstellung
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

Ein GroundingChunk stellt ein Segment von unterstützenden Belegen dar, die die Antwort des Modells fundieren. Das kann ein Chunk aus dem Web, ein abgerufener Kontext aus einer Datei oder Informationen aus Google Maps sein.

Felder
chunk_type Union type
Blocktyp. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
web object (Web)

Fundierungsblock aus dem Web.

image object (Image)

Optional. Fundierungsblock aus der Bildersuche.

retrievedContext object (RetrievedContext)

Optional. Fundierungsblock aus dem Kontext, der vom Tool für die Dateisuche abgerufen wurde.

maps object (Maps)

Optional. Fundierungsblock aus Google Maps.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{

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

Web

Auszug aus dem Web.

Felder
uri string

Nur Ausgabe. URI-Referenz des Chunks.

title string

Nur Ausgabe. Titel des Blocks.

JSON-Darstellung
{
  "uri": string,
  "title": string
}

Bild

Chunk aus der Bildersuche.

Felder
sourceUri string

Der Webseiten-URI für die Attribution.

imageUri string

Die URL des Bild-Assets.

title string

Der Titel der Webseite, von der das Bild stammt.

domain string

Die Stammdomain der Webseite, von der das Bild stammt, z.B. „beispiel.de“.

JSON-Darstellung
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Block aus dem Kontext, der vom Tool für die Dateisuche abgerufen wurde.

Felder
customMetadata[] object (CustomMetadata)

Optional. Vom Nutzer bereitgestellte Metadaten zum abgerufenen Kontext.

uri string

Optional. URI-Referenz des Dokuments für den semantischen Abruf.

title string

Optional. Titel des Dokuments.

text string

Optional. Text des Chunks.

fileSearchStore string

Optional. Name des FileSearchStore, der das Dokument enthält. Beispiel: fileSearchStores/123

pageNumber integer

Optional. Seitennummer des abgerufenen Kontexts, falls zutreffend.

mediaId string

Optional. Der Ressourcenname des Medien-Blobs für multimodale Dateisuchergebnisse. Format: fileSearchStores/{file_search_store_id}/media/{blobId}

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

CustomMetadata

Vom Nutzer bereitgestellte Metadaten zum GroundingFact.

Felder
key string

Der Schlüssel der Metadaten.

value Union type
Der Wert der Metadaten. Kann ein String, eine Liste von Strings oder eine Zahl sein. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
stringValue string

Optional. Der Stringwert der Metadaten.

stringListValue object (StringList)

Optional. Eine Liste von Stringwerten für die Metadaten.

numericValue number

Optional. Der numerische Wert der Metadaten. Der erwartete Bereich für diesen Wert hängt vom verwendeten key ab.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{
  "key": string,

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

StringList

Eine Liste von Stringwerten.

Felder
values[] string

Die Stringwerte der Liste.

JSON-Darstellung
{
  "values": [
    string
  ]
}

Maps

Ein Fundierungsblock aus Google Maps. Ein Maps-Chunk entspricht einem einzelnen Ort.

Felder
uri string

URI-Referenz des Orts.

title string

Titel des Orts.

text string

Textbeschreibung der Ortsantwort.

placeId string

Die ID des Ortes im places/{placeId}-Format. Nutzer können diese ID verwenden, um nach dem Ort zu suchen.

placeAnswerSources object (PlaceAnswerSources)

Quellen, die Antworten zu den Merkmalen eines bestimmten Ortes in Google Maps liefern.

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

PlaceAnswerSources

Sammlung von Quellen, die Antworten zu den Merkmalen eines bestimmten Ortes in Google Maps liefern. Jede „PlaceAnswerSources“-Nachricht entspricht einem bestimmten Ort in Google Maps. Das Google Maps-Tool hat diese Quellen verwendet, um Fragen zu den Merkmalen des Ortes zu beantworten (z. B. „Gibt es in Bar Foo WLAN?“ oder „Ist Foo Bar rollstuhlgerecht?“). Derzeit werden nur Rezensions-Snippets als Quellen unterstützt.

Felder
reviewSnippets[] object (ReviewSnippet)

Auszüge aus Rezensionen, die verwendet werden, um Antworten zu den Merkmalen eines bestimmten Ortes in Google Maps zu generieren.

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

ReviewSnippet

Enthält einen Ausschnitt einer Nutzerrezension, in der eine Frage zu den Merkmalen eines bestimmten Orts in Google Maps beantwortet wird.

Felder
reviewId string

Die ID des Rezensions-Snippets.

googleMapsUri string

Ein Link, der der Nutzerrezension auf Google Maps entspricht.

title string

Titel der Rezension.

JSON-Darstellung
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Fundierungsunterstützung.

Felder
groundingChunkIndices[] integer

Optional. Eine Liste von Indexen (in „grounding_chunk“ in response.candidate.grounding_metadata) mit den Quellenangaben für die Behauptung. Beispiel: [1,3,4] bedeutet, dass grounding_chunk[1], grounding_chunk[3] und grounding_chunk[4] die abgerufenen Inhalte sind, die der Behauptung zugeordnet sind. Wenn die Antwort gestreamt wird, beziehen sich die groundingChunkIndices auf die Indizes aller Antworten. Der Client ist dafür verantwortlich, die Fundierungsblöcke aus allen Antworten zu sammeln und dabei die Reihenfolge beizubehalten.

confidenceScores[] number

Optional. Konfidenzwert der Supportreferenzen. Liegt im Bereich von 0 bis 1. 1 ist die höchste Zuversicht. Diese Liste muss dieselbe Größe wie die groundingChunkIndices haben.

renderedParts[] integer

Nur Ausgabe. Indexe im Feld parts des Inhalts des Kandidaten. Diese Indizes geben an, welche gerenderten Teile mit dieser Supportquelle verknüpft sind.

segment object (Segment)

Segment des Inhalts, zu dem diese Unterstützung gehört.

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

Segment

Segment des Inhalts.

Felder
partIndex integer

Der Index eines Part-Objekts innerhalb des übergeordneten Content-Objekts.

startIndex integer

Startindex im angegebenen Teil, gemessen in Byte. Offset vom Anfang des Teils, einschließlich, beginnend bei null.

endIndex integer

Endindex im angegebenen Teil, gemessen in Byte. Offset vom Anfang des Teils, exklusiv, beginnend bei null.

text string

Der Text, der dem Segment aus der Antwort entspricht.

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

RetrievalMetadata

Metadaten im Zusammenhang mit dem Abruf im Fundierungsablauf.

Felder
googleSearchDynamicRetrievalScore number

Optional. Wert, der angibt, wie wahrscheinlich es ist, dass Informationen aus der Google Suche bei der Beantwortung des Prompts helfen können. Der Wert liegt im Bereich [0, 1], wobei 0 am wenigsten wahrscheinlich und 1 am wahrscheinlichsten ist. Dieser Wert wird nur ausgefüllt, wenn die Fundierung mit der Google Suche und der dynamische Abruf aktiviert sind. Er wird mit dem Schwellenwert verglichen, um zu bestimmen, ob die Google Suche ausgelöst werden soll.

JSON-Darstellung
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Logprobs-Ergebnis

Felder
topCandidates[] object (TopCandidates)

Länge = Gesamtzahl der Decodierungsschritte.

chosenCandidates[] object (Candidate)

Länge = Gesamtzahl der Decodierungsschritte. Die ausgewählten Kandidaten befinden sich möglicherweise in „topCandidates“.

logProbabilitySum number

Summe der Logwahrscheinlichkeiten für alle Tokens.

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

TopCandidates

Kandidaten mit den höchsten Log-Wahrscheinlichkeiten bei jedem Decodierungsschritt.

Felder
candidates[] object (Candidate)

Sortiert nach Log-Wahrscheinlichkeit in absteigender Reihenfolge.

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

Kandidat

Kandidat für das Logprobs-Token und die Bewertung.

Felder
token string

Der Token-Stringwert des Kandidaten.

tokenId integer

Der Token-ID-Wert des Kandidaten.

logProbability number

Die Logwahrscheinlichkeit des Kandidaten.

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

UrlContextMetadata

Metadaten zum Tool zum Abrufen des URL-Kontexts.

Felder
urlMetadata[] object (UrlMetadata)

Liste der URL-Kontexte.

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

UrlMetadata

Kontext des Abrufs einer einzelnen URL.

Felder
retrievedUrl string

Vom Tool abgerufene URL.

urlRetrievalStatus enum (UrlRetrievalStatus)

Status des URL-Abrufs.

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

UrlRetrievalStatus

Status des URL-Abrufs.

Enums
URL_RETRIEVAL_STATUS_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
URL_RETRIEVAL_STATUS_SUCCESS URL-Abruf erfolgreich.
URL_RETRIEVAL_STATUS_ERROR Das Abrufen der URL ist aufgrund eines Fehlers fehlgeschlagen.
URL_RETRIEVAL_STATUS_PAYWALL Der URL-Abruf ist fehlgeschlagen, da sich der Inhalt hinter einer Paywall befindet.
URL_RETRIEVAL_STATUS_UNSAFE Der URL-Abruf ist fehlgeschlagen, da der Inhalt unsicher ist.

CitationMetadata

Eine Sammlung von Quellenangaben für einen bestimmten Inhalt

Felder
citationSources[] object (CitationSource)

Quellenangaben für eine bestimmte Antwort.

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

CitationSource

Ein Zitat einer Quelle für einen Teil einer bestimmten Antwort.

Felder
startIndex integer

Optional. Beginn des Segments der Antwort, das dieser Quelle zugeordnet ist.

Der Index gibt den Anfang des Segments an. Wird in Byte gemessen.

endIndex integer

Optional. Ende des zugeordneten Segments (ausschließlich).

uri string

Optional. URI, der als Quelle für einen Teil des Textes angegeben wird.

license string

Optional. Lizenz für das GitHub-Projekt, das als Quelle für das Segment angegeben ist.

Für Codezitate sind Lizenzinformationen erforderlich.

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

HarmCategory

Die Kategorie einer Bewertung.

Diese Kategorien decken verschiedene Arten von Schäden ab, die Entwickler möglicherweise anpassen möchten.

Enums
HARM_CATEGORY_UNSPECIFIED Kategorie ist nicht angegeben.
HARM_CATEGORY_DEROGATORY

PaLM: Negative oder schädliche Kommentare, die auf Identität und/oder geschützte Merkmale ausgerichtet sind. VERALTET: Nur PaLM-Kategorie, wird von Gemini-Modellen nicht unterstützt.

HARM_CATEGORY_TOXICITY

PaLM: Unhöfliche, respektlose oder vulgäre Inhalte. VERALTET: Nur PaLM-Kategorie, wird von Gemini-Modellen nicht unterstützt.

HARM_CATEGORY_VIOLENCE

PaLM: Beschreibt Szenarien, in denen Gewalt gegen eine Person oder Gruppe dargestellt wird, oder allgemein blutrünstige Inhalte. VERALTET: Nur PaLM-Kategorie, wird von Gemini-Modellen nicht unterstützt.

HARM_CATEGORY_SEXUAL

PaLM: Enthält Verweise auf sexuelle Handlungen oder andere vulgäre Inhalte. VERALTET: Nur PaLM-Kategorie, wird von Gemini-Modellen nicht unterstützt.

HARM_CATEGORY_MEDICAL

PaLM: Fördert ungeprüfte medizinische Ratschläge. VERALTET: Nur PaLM-Kategorie, wird von Gemini-Modellen nicht unterstützt.

HARM_CATEGORY_DANGEROUS

PaLM: Gefährliche Inhalte, die schädliche Handlungen fördern oder erleichtern bzw. dazu ermuntern. VERALTET: Nur PaLM-Kategorie, wird von Gemini-Modellen nicht unterstützt.

HARM_CATEGORY_HARASSMENT Gemini – Belästigende Inhalte.
HARM_CATEGORY_HATE_SPEECH Gemini – Hassrede und hasserfüllte Inhalte.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini – Sexuell explizite Inhalte.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini – Gefährliche Inhalte.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini: Inhalte, die verwendet werden können, um die Integrität öffentlicher Aussagen zu beeinträchtigen. VERWORFEN: Verwenden Sie stattdessen „enableEnhancedCivicAnswers“.

HARM_CATEGORY_JAILBREAK Gemini: Prompts, die versuchen, die Sicherheitsrichtlinien des Modells zu umgehen oder zu untergraben (Jailbreak-Versuche).

ModalityTokenCount

Stellt Informationen zur Tokenzählung für eine einzelne Modalität dar.

Felder
modality enum (Modality)

Die Modalität, die mit dieser Tokenanzahl verknüpft ist.

tokenCount integer

Anzahl der Tokens.

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

Modalität

Modalität des Inhaltsteils

Enums
MODALITY_UNSPECIFIED Nicht angegebene Modalität.
TEXT Nur Text
IMAGE Bild.
VIDEO Video.
AUDIO Audio.
DOCUMENT Dokument, z.B. PDF.

SafetyRating

Sicherheitsbewertung für einen Inhalt.

Die Sicherheitsbewertung enthält die Schadenskategorie und die Wahrscheinlichkeitsstufe für Schäden in dieser Kategorie für einen Inhalt. Inhalte werden im Hinblick auf die Sicherheit in verschiedene Schadenskategorien eingeteilt. Die Wahrscheinlichkeit der Schadensklassifizierung wird hier angegeben.

Felder
category enum (HarmCategory)

Erforderlich. Die Kategorie für diese Bewertung.

probability enum (HarmProbability)

Erforderlich. Die Wahrscheinlichkeit von Schäden bei diesem Inhalt.

blocked boolean

Wurde dieser Inhalt aufgrund dieser Bewertung blockiert?

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

HarmProbability

Die Wahrscheinlichkeit, dass ein Inhalt schädlich ist.

Das Klassifizierungssystem gibt die Wahrscheinlichkeit an, dass der Inhalt unsicher ist. Dies ist kein Hinweis auf den Schweregrad des Schadens, der durch einen Inhalt verursacht wird.

Enums
HARM_PROBABILITY_UNSPECIFIED Wahrscheinlichkeit ist nicht angegeben.
NEGLIGIBLE Inhalte haben eine vernachlässigbare Wahrscheinlichkeit, unsicher zu sein.
LOW Inhalte haben eine geringe Wahrscheinlichkeit, unsicher zu sein.
MEDIUM Inhalte haben eine mittlere Wahrscheinlichkeit, unsicher zu sein.
HIGH Inhalte haben eine hohe Wahrscheinlichkeit, unsicher zu sein.

SafetySetting

Sicherheitseinstellung, die das Verhalten beim Blockieren von Inhalten beeinflusst.

Wenn Sie eine Sicherheitseinstellung für eine Kategorie übergeben, ändert sich die zulässige Wahrscheinlichkeit, dass Inhalte blockiert werden.

Felder
category enum (HarmCategory)

Erforderlich. Die Kategorie für diese Einstellung.

threshold enum (HarmBlockThreshold)

Erforderlich. Steuert den Wahrscheinlichkeitsschwellenwert, ab dem schädliche Inhalte blockiert werden.

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

HarmBlockThreshold

Blockieren ab einer bestimmten Wahrscheinlichkeit von Schäden.

Enums
HARM_BLOCK_THRESHOLD_UNSPECIFIED Der Grenzwert ist nicht angegeben.
BLOCK_LOW_AND_ABOVE Inhalte mit der Einstufung „NEGLIGIBLE“ (Vernachlässigbar) sind zulässig.
BLOCK_MEDIUM_AND_ABOVE Inhalte mit den Schweregraden „VERNACHLÄSSIGBAR“ und „NIEDRIG“ sind zulässig.
BLOCK_ONLY_HIGH Inhalte mit den Risikostufen UNBEDEUTEND, NIEDRIG und MITTEL sind zulässig.
BLOCK_NONE Alle Inhalte sind zulässig.
OFF Sicherheitsfilter deaktivieren

ServiceTier

Dienststufe der Anfrage.

Enums
unspecified Standard-Dienststufe, die „Standard“ ist.
standard Standard-Dienststufe.
flex Flex-Dienststufe.
priority Prioritätsstufe für den Service.

Inhalt

Der strukturierte Basisdatentyp, der mehrteilige Inhalte einer Nachricht enthält.

Eine Content enthält ein role-Feld, das den Ersteller der Content angibt, und ein parts-Feld mit mehrteiligen Daten, die den Inhalt des Nachrichten-Turns enthalten.

Felder
parts[] object (Part)

Geordnete Parts, die eine einzelne Nachricht bilden. Teile können unterschiedliche MIME-Typen haben.

role string

Optional. Der Produzent des Inhalts. Muss entweder „user“ oder „model“ sein.

Nützlich für Unterhaltungen, die mehrere Themen enthalten, kann ansonsten leer bleiben oder nicht festgelegt werden.

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

Teil

Ein Datentyp mit Medien, die Teil einer mehrteiligen Content-Nachricht sind.

Ein Part besteht aus Daten, denen ein Datentyp zugeordnet ist. Ein Part kann nur einen der akzeptierten Typen in Part.data enthalten.

Ein Part muss einen festen IANA-MIME-Typ haben, der den Typ und Untertyp des Mediums identifiziert, wenn das Feld inlineData mit Rohbytes gefüllt ist.

Felder
thought boolean

Optional. Gibt an, ob der Teil zu den Überlegungen des Modells gehört.

thoughtSignature string (bytes format)

Optional. Eine opake Signatur für den Gedanken, damit er in nachfolgenden Anfragen wiederverwendet werden kann.

Ein base64-codierter String.

partMetadata object (Struct format)

Benutzerdefinierte Metadaten, die mit dem Teil verknüpft sind. KI-Agenten, die genai.Part als Inhaltsdarstellung verwenden, müssen möglicherweise die zusätzlichen Informationen im Blick behalten. Dies kann beispielsweise der Name einer Datei/Quelle sein, aus der der Teil stammt, oder eine Möglichkeit, mehrere Teil-Streams zu multiplexen.

mediaResolution object (MediaResolution)

Optional. Medienauflösung für die Eingabemedien.

mediaProcessing enum (MediaProcessing)

Optional. Wie das Modell die Medien dieses Teils verarbeitet, um sie zu verstehen. Nur für Videoteile sinnvoll (inlineData oder fileData mit Video-MIME). Dieses Feld wird für Nicht-Videoteile ignoriert.

audioTranscription object (AudioTranscription)

Optional. Transkription von Audio (Eingabe oder Ausgabe). Dies wird nur festgelegt, wenn dieser Teil Audiodaten enthält.

speechMetadata object (SpeechMetadata)

Optional. Metadaten, die auf Textteile angewendet werden, um anzupassen, wie sie gesprochen oder synthetisiert werden sollen, z. B. durch Angabe der Sprecheridentität oder des Sprechstils.

data Union type
Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
text string

Inline-Text

inlineData object (Blob)

Inline-Medienbyte.

functionCall object (FunctionCall)

Ein vorhergesagter FunctionCall, der vom Modell zurückgegeben wird und einen String enthält, der FunctionDeclaration.name mit den Argumenten und ihren Werten darstellt.

functionResponse object (FunctionResponse)

Die Ergebnisausgabe eines FunctionCall, der einen String enthält, der den FunctionDeclaration.name darstellt, und ein strukturiertes JSON-Objekt, das alle Ausgaben der Funktion enthält, wird als Kontext für das Modell verwendet.

fileData object (FileData)

URI-basierte Daten.

executableCode object (ExecutableCode)

Vom Modell generierter Code, der ausgeführt werden soll

codeExecutionResult object (CodeExecutionResult)

Ergebnis der Ausführung des ExecutableCode.

toolCall object (ToolCall)

Serverseitiger Toolaufruf. Dieses Feld wird ausgefüllt, wenn das Modell einen Toolaufruf vorhersagt, der auf dem Server ausgeführt werden soll. Der Client muss diese Nachricht an die API zurückgeben.

toolResponse object (ToolResponse)

Die Ausgabe einer serverseitigen ToolCall-Ausführung. Dieses Feld wird vom Client mit den Ergebnissen der Ausführung des entsprechenden ToolCall ausgefüllt.

Ende der sich gegenseitig ausschließenden Felder.
metadata Union type
Steuert die zusätzliche Vorverarbeitung von Daten. Legen Sie dies fest, wenn inline_data oder file_data vorhanden ist, um die statische Medienvorverarbeitung pro Teil zu konfigurieren. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
videoMetadata object (VideoMetadata)

Optional. Videometadaten Die Metadaten sollten nur angegeben werden, wenn die Videodaten in „inlineData“ oder „fileData“ dargestellt werden.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),
  "audioTranscription": {
    object (AudioTranscription)
  },
  "speechMetadata": {
    object (SpeechMetadata)
  },

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

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

Blob

Roh-Medienbyte.

Text sollte nicht als Rohbytes gesendet werden. Verwenden Sie das Feld „text“.

Felder
mimeType string

Der IANA-Standard-MIME-Typ der Quelldaten. Beispiele für unterstützte Typen: - Bilder: 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/* - Text: 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 - Anwendungen: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Weitere Informationen finden Sie unter Unterstützte Dateiformate. //

data string (bytes format)

Rohbyte für Medienformate.

Ein base64-codierter String.

displayName string

Optional. Gibt den Namen an, mit dem auf dieses Blob im Modell verwiesen wird (z.B. „my_blob.png“). Wird als Blob-Referenz-ID verwendet, wenn verbalizationMode auf REFERENCE_ONLY festgelegt ist.

JSON-Darstellung
{
  "mimeType": string,
  "data": string,
  "displayName": string
}

FunctionCall

Ein vorhergesagter FunctionCall, der vom Modell zurückgegeben wird und einen String enthält, der FunctionDeclaration.name mit den Argumenten und ihren Werten darstellt.

Felder
id string

Optional. Eindeutige Kennung des Funktionsaufrufs. Wenn dieser Wert angegeben ist, führt der Client die functionCall aus und gibt die Antwort mit der entsprechenden id zurück.

name string

Erforderlich. Der Name der aufzurufenden Funktion. Muss a–z, A–Z, 0–9 sein oder Unterstriche und Bindestriche enthalten. Die maximale Länge beträgt 128.

args object (Struct format)

Optional. Die Funktionsparameter und -werte im JSON-Objektformat.

JSON-Darstellung
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Die Ergebnisausgabe eines FunctionCall, die einen String enthält, der den FunctionDeclaration.name darstellt, und ein strukturiertes JSON-Objekt, das alle Ausgaben der Funktion enthält, wird als Kontext für das Modell verwendet. Dieses sollte das Ergebnis einerFunctionCall enthalten, die auf der Modellvorhersage basiert.

Felder
id string

Optional. Die Kennung des Funktionsaufrufs, für den diese Antwort bestimmt ist. Wird vom Client ausgefüllt, um dem entsprechenden Funktionsaufruf id zu entsprechen.

name string

Erforderlich. Der Name der aufzurufenden Funktion. Muss a–z, A–Z, 0–9 sein oder Unterstriche und Bindestriche enthalten. Die maximale Länge beträgt 128.

response object (Struct format)

Erforderlich. Die Funktionsantwort im JSON-Objektformat. Aufrufer können beliebige Schlüssel verwenden, die der Syntax der Funktion entsprechen, um die Funktionsausgabe zurückzugeben, z.B. „output“, „result“ usw. Wenn der Funktionsaufruf nicht ausgeführt werden konnte, kann die Antwort einen „error“-Schlüssel enthalten, um Fehlerdetails an das Modell zurückzugeben.

Multimedia-Inhalte können mithilfe eines Unterobjekts eingefügt werden, das einen einzelnen „$ref“-Schlüssel enthält, dessen Wert die inlineData.display_name einer FunctionResponsePart ist, die die Multimedia-Inhalte enthält. Weitere Informationen finden Sie unter https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Optional. Geordnete Parts, die eine Funktionsantwort bilden. Teile können unterschiedliche IANA-MIME-Typen haben.

willContinue boolean

Optional. Signalisiert, dass der Funktionsaufruf fortgesetzt wird und weitere Antworten zurückgegeben werden, wodurch der Funktionsaufruf zu einem Generator wird. Gilt nur für NON_BLOCKING-Funktionsaufrufe, wird ansonsten ignoriert. Wenn „false“ festgelegt ist, werden zukünftige Antworten nicht berücksichtigt. Es ist zulässig, ein leeres response mit willContinue=False zurückzugeben, um zu signalisieren, dass der Funktionsaufruf abgeschlossen ist. Dies kann trotzdem die Modellgenerierung auslösen. Wenn Sie die Generierung nicht auslösen und den Funktionsaufruf beenden möchten, setzen Sie scheduling zusätzlich auf SILENT.

scheduling enum (Scheduling)

Optional. Gibt an, wie die Antwort in der Unterhaltung geplant werden soll. Gilt nur für NON_BLOCKING-Funktionsaufrufe, wird ansonsten ignoriert. Die Standardeinstellung ist WHEN_IDLE.

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

FunctionResponsePart

Ein Datentyp mit Medien, die Teil einer FunctionResponse-Nachricht sind.

Ein FunctionResponsePart besteht aus Daten, denen ein Datentyp zugeordnet ist. Ein FunctionResponsePart kann nur einen der akzeptierten Typen in FunctionResponsePart.data enthalten.

Ein FunctionResponsePart muss einen festen IANA-MIME-Typ haben, der den Typ und Untertyp des Mediums identifiziert, wenn das Feld inlineData mit Rohbytes gefüllt ist.

Felder
data Union type
Die Daten des Funktionsantwortteils. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
inlineData object (FunctionResponseBlob)

Inline-Medienbyte.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{

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

FunctionResponseBlob

Rohe Medienbytes für die Funktionsantwort.

Text sollte nicht als Rohbytes gesendet werden. Verwenden Sie das Feld „FunctionResponse.response“.

Felder
mimeType string

Der IANA-Standard-MIME-Typ der Quelldaten. Beispiele: - image/png - image/jpeg Wenn ein nicht unterstützter MIME-Typ angegeben wird, wird ein Fehler zurückgegeben. Eine vollständige Liste der unterstützten Typen finden Sie unter Unterstützte Dateiformate.

data string (bytes format)

Rohbyte für Medienformate.

Ein base64-codierter String.

JSON-Darstellung
{
  "mimeType": string,
  "data": string
}

Wird geplant

Gibt an, wie die Antwort in der Unterhaltung geplant werden soll.

Enums
SCHEDULING_UNSPECIFIED Dieser Wert wird nicht verwendet.
SILENT Only add the result to the conversation context, do not interrupt or trigger generation.
WHEN_IDLE Fügen Sie das Ergebnis dem Unterhaltungskontext hinzu und fordern Sie die Ausgabe an, ohne die laufende Generierung zu unterbrechen.
INTERRUPT Fügt das Ergebnis dem Unterhaltungskontext hinzu, unterbricht die laufende Generierung und fordert zur Generierung der Ausgabe auf.

FileData

URI-basierte Daten.

Felder
mimeType string

Optional. Der IANA-Standard-MIME-Typ der Quelldaten.

fileUri string

Erforderlich. URI.

displayName string

Optional. Gibt den Namen an, mit dem auf diese Datei im Modell verwiesen wird (z.B. „meine_datei.pdf“). Wird als Dateireferenz-ID verwendet, wenn verbalizationMode auf REFERENCE_ONLY festgelegt ist.

JSON-Darstellung
{
  "mimeType": string,
  "fileUri": string,
  "displayName": string
}

ExecutableCode

Code, der vom Modell generiert wird und ausgeführt werden soll, und das Ergebnis, das an das Modell zurückgegeben wird.

Wird nur generiert, wenn das CodeExecution-Tool verwendet wird. Der Code wird dann automatisch ausgeführt und es wird auch ein entsprechender CodeExecutionResult generiert.

Felder
id string

Optional. Eindeutige Kennung des ExecutableCode-Teils. Der Server gibt die CodeExecutionResult mit der übereinstimmenden id zurück.

language enum (Language)

Erforderlich. Programmiersprache des code.

code string

Erforderlich. Der auszuführende Code.

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

Sprache

Unterstützte Programmiersprachen für den generierten Code.

Enums
LANGUAGE_UNSPECIFIED Sprache nicht bekannt. Dieser Wert sollte nicht verwendet werden.
PYTHON Python >= 3.10, mit numpy und simpy verfügbar. Python ist die Standardsprache.

CodeExecutionResult

Ergebnis der Ausführung des ExecutableCode.

Wird nur generiert, wenn das Tool CodeExecution verwendet wird.

Felder
id string

Optional. Die Kennung des ExecutableCode-Teils, für den dieses Ergebnis gilt. Wird nur ausgefüllt, wenn die entsprechende ExecutableCode eine ID hat.

outcome enum (Outcome)

Erforderlich. Ergebnis der Codeausführung.

output string

Optional. Enthält stdout, wenn die Codeausführung erfolgreich ist, andernfalls stderr oder eine andere Beschreibung.

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

Ergebnis

Auflistung der möglichen Ergebnisse der Codeausführung

Enums
OUTCOME_UNSPECIFIED Nicht angegebener Status. Dieser Wert sollte nicht verwendet werden.
OUTCOME_OK Die Codeausführung wurde erfolgreich abgeschlossen. output enthält die Standardausgabe, falls vorhanden.
OUTCOME_FAILED Die Codeausführung ist fehlgeschlagen. output enthält die Standardfehlerausgabe und die Standardausgabe, falls vorhanden.
OUTCOME_DEADLINE_EXCEEDED Die Codeausführung dauerte zu lange und wurde abgebrochen. Möglicherweise ist eine Teil-output vorhanden.

ToolCall

Ein vorhergesagter serverseitiger ToolCall, der vom Modell zurückgegeben wird. Diese Nachricht enthält Informationen zu einem Tool, das das Modell aufrufen möchte. Der Client muss diese ToolCall NICHT ausführen. Stattdessen sollte der Client diese ToolCall in einer nachfolgenden Runde in einer Content-Nachricht zusammen mit der entsprechenden ToolResponse an die API zurückgeben.

Felder
id string

Optional. Eindeutige Kennung des Toolaufrufs. Der Server gibt die Toolantwort mit der entsprechenden id zurück.

toolName string

Optional. Der Name des aufgerufenen Tools.

toolType enum (ToolType)

Erforderlich. Der Typ des aufgerufenen Tools.

args object (Struct format)

Optional. Die Argumente für den Toolaufruf. Beispiel: {"arg1" : "value1", "arg2" : "value2" , ...}

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

ToolType

Der Typ des Tools im Funktionsaufruf.

Enums
TOOL_TYPE_UNSPECIFIED Nicht angegebener Tooltyp.
GOOGLE_SEARCH_WEB Tool für die Google Suche, wird Tool.google_search.search_types.web_search zugeordnet.
GOOGLE_SEARCH_IMAGE Tool für die Bildersuche, wird Tool.google_search.search_types.image_search zugeordnet.
URL_CONTEXT URL-Kontexttool, wird Tool.url_context zugeordnet.
GOOGLE_MAPS Google Maps-Tool, wird Tool.google_maps zugeordnet.

ToolResponse

Die Ausgabe einer serverseitigen ToolCall-Ausführung. Diese Nachricht enthält die Ergebnisse eines Toolaufrufs, der durch einen ToolCall vom Modell initiiert wurde. Der Client sollte diese ToolResponse in einer nachfolgenden Runde in einer Content-Nachricht zusammen mit der entsprechenden ToolCall an die API zurückgeben.

Felder
id string

Optional. Die Kennung des Toolaufrufs, für den diese Antwort bestimmt ist.

toolType enum (ToolType)

Erforderlich. Der Typ des aufgerufenen Tools, der mit dem toolType im entsprechenden ToolCall übereinstimmt.

response object (Struct format)

Optional. Die Antwort des Tools.

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

VideoMetadata

Metadaten beschreiben die Eingabe-Videoinhalte. Legen Sie dies in Part.video_metadata oder FunctionResponsePart.video_metadata fest, wenn inlineData oder fileData Videoinhalte enthält, um die statische Videovorverarbeitung zu konfigurieren (z. B. Zeitbeschneidung, Framerate, maximale Frameanzahl oder extrahierte Inhaltsebenen).

Felder
startOffset string (Duration format)

Optional. Startversatz des Videos.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit „s“. Beispiel: "3.5s".

endOffset string (Duration format)

Optional. Endversatz des Videos.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit „s“. Beispiel: "3.5s".

fps number

Optional. Die Framerate des Videos, das an das Modell gesendet wird. Wenn keine Angabe erfolgt, beträgt der Standardwert 1,0. Der fps-Bereich ist (0,0, 24,0].

JSON-Darstellung
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

Medienauflösung für die Tokenisierung.

Felder
value Union type
Die Auflösung von Medien. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
level enum (Level)

Die für die angegebenen Medien verwendete Tokenisierungsqualität. für Gemini API-Support .

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{

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

Level

Die Auflösung von Medien.

Enums
MEDIA_RESOLUTION_UNSPECIFIED Die Medienauflösung wurde nicht festgelegt.
MEDIA_RESOLUTION_LOW Die Medienauflösung ist auf „Niedrig“ eingestellt.
MEDIA_RESOLUTION_MEDIUM Die Auflösung von Medien wurde auf „Mittel“ festgelegt.
MEDIA_RESOLUTION_HIGH Medienauflösung auf „Hoch“ festgelegt.
MEDIA_RESOLUTION_ULTRA_HIGH Die Auflösung von Medien ist auf „Ultrahoch“ festgelegt.

MediaProcessing

Wie das Modell Eingabemedien verarbeitet, um sie zu verstehen.

Enums
MEDIA_PROCESSING_UNSPECIFIED Standardmäßig wird die modellspezifische Verarbeitung verwendet.
STATIC Frame-Extraktion mit fester Rate. Alle Frames wurden in den Kontext gestellt.
AGENTIC Modellgesteuerte dynamische Navigation. Für die meisten Anwendungsfälle empfohlen.

AudioTranscription

Die Transkription eines Audioteils. Bei Audio mit mehreren Sprechern ist jedes Sprechersegment ein separater Teil mit einer eigenen AudioTranscription, die das speakerLabel enthält.

Felder
text string

Erforderlich. Der Transkriptionstext dieses Audiosegments.

speakerLabel string

Optional. Ein Label, das den Sprecher dieses Audiosegments identifiziert (z.B. „spk_1“, „spk_2“). Vorhanden, wenn die Sprecherbestimmung festgelegt ist.

words[] object (WordInfo)

Optional. Detaillierte Transkriptionen auf Wortebene und Zeitangaben. Vorhanden, wenn wordTimestamp festgelegt ist.

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

WordInfo

Informationen zu einem einzelnen erkannten Wort.

Felder
word string

Erforderlich. Transkript des Wortes.

startOffset string (Duration format)

Optional. Zeitlicher Versatz des Wortes relativ zum Beginn des Audios.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit „s“. Beispiel: "3.5s".

endOffset string (Duration format)

Optional. Endversatz des Wortes relativ zum Beginn des Audios.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit „s“. Beispiel: "3.5s".

JSON-Darstellung
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

Sprachmetadaten für text-Teile.

Felder
speaker string

Optional. Optionaler Sprechername für die Sprachsynthese mit mehreren Sprechern.

style string

Optional. Optionale Stilanweisung für die Sprachsynthese.

JSON-Darstellung
{
  "speaker": string,
  "style": string
}

Umgebung

Eine Ausführungsumgebung für einen KI-Agenten.

Felder
id string

Erforderlich. Nur Ausgabe. Die ID der Umgebung.

sources[] object (Source)

Quellen, die in der Umgebung bereitgestellt werden sollen.

created string

Nur Ausgabe. Der Zeitpunkt, zu dem die Umgebung erstellt wurde, im ISO 8601-Format (JJJJ-MM-TTThh:mm:ssZ).

updated string

Nur Ausgabe. Der Zeitpunkt, zu dem die Umgebung zuletzt aktualisiert wurde, im ISO 8601-Format (JJJJ-MM-TTThh:mm:ssZ).

lastAccessed string

Nur Ausgabe. Der Zeitpunkt, zu dem zuletzt auf die Umgebung zugegriffen wurde, im ISO 8601-Format (JJJJ-MM-TTThh:mm:ssZ).

status enum (Status)

Nur Ausgabe. Der Status des Umgebungscontainers.

fileCount string (int64 format)

Nur Ausgabe. Die Anzahl der Dateien in der Umgebung, nur Ausgabe.

sizeBytes string (int64 format)

Nur Ausgabe. Die Gesamtgröße der Umgebungsdateien in Byte, nur Ausgabe.

network Union type
Netzwerkkonfiguration für die Umgebung. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Nur bestimmte Domains zulassen.

networkMode enum (NetworkMode)

Modus für ausgehenden Netzwerktraffic.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{
  "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 der Umgebung.

Enums
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Modus für ausgehenden Netzwerktraffic für Konfigurationen, die nicht auf der Zulassungsliste stehen.

Enums
NETWORK_MODE_UNSPECIFIED Standardwert. Nicht verwendet
DISABLED Der gesamte ausgehende Netzwerktraffic wird blockiert.

Schema

Mit dem Schema-Objekt können Eingabe- und Ausgabedatentypen definiert werden. Diese Typen können Objekte, aber auch Primitive und Arrays sein. Stellt eine ausgewählte Teilmenge eines OpenAPI 3.0-Schemaobjekts dar.

Felder
type enum (Type)

Erforderlich. Datentyp.

format string

Optional. Das Format der Daten. Jeder Wert ist zulässig, aber die meisten lösen keine speziellen Funktionen aus.

title string

Optional. Der Titel des Schemas.

description string

Optional. Eine kurze Beschreibung des Parameters. Diese könnte Anwendungsbeispiele enthalten. Die Parameterbeschreibung kann als Markdown formatiert sein.

nullable boolean

Optional. Gibt an, ob der Wert null sein darf.

enum[] string

Optional. Mögliche Werte des Elements vom Typ STRING im enum-Format. Beispiel: Wir können ein Enum „Direction“ so definieren: {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Optional. Maximale Anzahl der Elemente für Type.ARRAY.

minItems string (int64 format)

Optional. Mindestanzahl der Elemente für Type.ARRAY.

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

Optional. Attribute von Type.OBJECT.

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Optional. Erforderliche Attribute von Type.OBJECT.

minProperties string (int64 format)

Optional. Mindestanzahl der Attribute für Type.OBJECT.

maxProperties string (int64 format)

Optional. Maximale Anzahl der Attribute für Type.OBJECT.

minLength string (int64 format)

Optional. SCHEMA-FELDER FÜR TYP STRING Mindestlänge des Typs STRING

maxLength string (int64 format)

Optional. Maximale Länge des Type.STRING

pattern string

Optional. Muster des Typs STRING, um einen String auf einen regulären Ausdruck zu beschränken.

example value (Value format)

Optional. Beispiel für das Objekt. Wird nur ausgefüllt, wenn das Objekt das Stammobjekt ist.

anyOf[] object (Schema)

Optional. Der Wert muss anhand eines oder mehrerer Unterschemas in der Liste validiert werden.

propertyOrdering[] string

Optional. Die Reihenfolge der Properties. Kein Standardfeld in der OpenAPI-Spezifikation. Wird verwendet, um die Reihenfolge der Attribute in der Antwort zu bestimmen.

default value (Value format)

Optional. Standardwert des Felds. Gemäß JSON-Schema ist dieses Feld für Dokumentationsgeneratoren vorgesehen und hat keine Auswirkungen auf die Validierung. Es ist hier enthalten und wird ignoriert, damit Entwickler, die Schemas mit einem default-Feld senden, keine Fehler wegen unbekannter Felder erhalten.

items object (Schema)

Optional. Schema der Elemente von Type.ARRAY.

minimum number

Optional. SCHEMA-FELDER FÜR TYP INTEGER und NUMBER Mindestwert von Type.INTEGER und Type.NUMBER

maximum number

Optional. Höchstwert für Type.INTEGER und Type.NUMBER

JSON-Darstellung
{
  "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
}

Typ

„Type“ enthält die Liste der OpenAPI-Datentypen, wie unter https://spec.openapis.org/oas/v3.0.3#data-types definiert.

Enums
TYPE_UNSPECIFIED Nicht angegeben, sollte nicht verwendet werden.
STRING String-Typ.
NUMBER Zahlentyp.
INTEGER Ganzzahltyp.
BOOLEAN Boolescher Typ.
ARRAY Array-Typ.
OBJECT Objekttyp.
NULL Null-Typ.

Tool

Tool-Details, die das Modell zum Generieren einer Antwort verwenden kann.

Ein Tool ist ein Code, der es dem System ermöglicht, mit externen Systemen zu interagieren, um eine Aktion oder eine Reihe von Aktionen außerhalb des Wissens und Umfangs des Modells auszuführen.

Felder
functionDeclarations[] object (FunctionDeclaration)

Optional. Eine Liste von FunctionDeclarations, die dem Modell zur Verfügung stehen und für Funktionsaufrufe verwendet werden können.

Das Modell oder System führt die Funktion nicht aus. Stattdessen kann die definierte Funktion als FunctionCall mit Argumenten zur Ausführung an die Clientseite zurückgegeben werden. Das Modell kann entscheiden, eine Teilmenge dieser Funktionen aufzurufen, indem es FunctionCall in der Antwort füllt. Der nächste Gesprächsbeitrag kann ein FunctionResponse mit dem Content.role-Generierungskontext „function“ für den nächsten Modellbeitrag enthalten.

googleSearchRetrieval object (GoogleSearchRetrieval)

Optional. Retrieval-Tool, das auf der Google Suche basiert.

codeExecution object (CodeExecution)

Optional. Ermöglicht dem Modell, Code im Rahmen der Generierung auszuführen.

computerUse object (ComputerUse)

Optional. Tool, mit dem das Modell direkt mit dem Computer interagieren kann. Wenn diese Option aktiviert ist, werden automatisch Funktionsdeklarationen für die Computernutzung eingefügt.

urlContext object (UrlContext)

Optional. Tool zur Unterstützung des Abrufs von URL-Kontext.

mcpServers[] object (McpServer)

Optional. MCP-Server, mit denen eine Verbindung hergestellt werden soll.

googleMaps object (GoogleMaps)

Optional. Tool, mit dem die Antwort des Modells mit einem geografischen Kontext fundiert werden kann, der sich auf die Anfrage des Nutzers bezieht.

JSON-Darstellung
{
  "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

Strukturierte Darstellung einer Funktionsdeklaration gemäß der Definition der OpenAPI 3.03-Spezifikation. Diese Deklaration enthält den Funktionsnamen und die Parameter. Diese FunctionDeclaration ist eine Darstellung eines Codeblocks, der vom Modell als Tool verwendet und vom Client ausgeführt werden kann.

Felder
name string

Erforderlich. Der Name der Funktion. Muss a–z, A–Z, 0–9 sein oder Unterstriche, Doppelpunkte, Punkte und Bindestriche enthalten. Die maximale Länge beträgt 128.

description string

Erforderlich. Eine kurze Beschreibung der Funktion.

behavior enum (Behavior)

Optional. Gibt das Funktionsverhalten an. Wird derzeit nur von der BidiGenerateContent-Methode unterstützt.

parameters object (Schema)

Optional. Beschreibt die Parameter für diese Funktion. Entspricht dem Stringschlüssel des Open API 3.03-Parameterobjekts: dem Namen des Parameters. Bei Parameternamen wird die Groß-/Kleinschreibung beachtet. Schemawert: Das Schema, das den für den Parameter verwendeten Typ definiert.

parametersJsonSchema value (Value format)

Optional. Beschreibt die Parameter der Funktion im JSON-Schemaformat. Das Schema muss ein Objekt beschreiben, dessen Attribute die Parameter der Funktion sind. Beispiel:

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

Dieses Feld und parameters schließen sich gegenseitig aus.

response object (Schema)

Optional. Beschreibt die Ausgabe dieser Funktion im JSON-Schemaformat. Spiegelt das Open API 3.03-Antwortobjekt wider. Das Schema definiert den Typ, der für den Antwortwert der Funktion verwendet wird.

responseJsonSchema value (Value format)

Optional. Beschreibt die Ausgabe dieser Funktion im JSON-Schemaformat. Der im Schema angegebene Wert ist der Antwortwert der Funktion.

Dieses Feld und response schließen sich gegenseitig aus.

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

Verhalten

Definiert das Funktionsverhalten. Die Standardeinstellung ist BLOCKING.

Enums
UNSPECIFIED Dieser Wert wird nicht verwendet.
BLOCKING Wenn diese Option festgelegt ist, wartet das System auf die Funktionsantwort, bevor die Unterhaltung fortgesetzt wird.
NON_BLOCKING Wenn diese Option festgelegt ist, wartet das System nicht auf die Funktionsantwort. Stattdessen wird versucht, Funktionsantworten zu verarbeiten, sobald sie verfügbar sind, während die Unterhaltung zwischen dem Nutzer und dem Modell aufrechterhalten wird.

GoogleSearchRetrieval

Tool zum Abrufen öffentlicher Webdaten für die Fundierung, bereitgestellt von Google.

Felder
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Gibt die Konfiguration für den dynamischen Abruf für die angegebene Quelle an.

JSON-Darstellung
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Beschreibt die Optionen zum Anpassen des dynamischen Abrufs.

Felder
mode enum (Mode)

Der Modus des Prädiktors, der beim dynamischen Abruf verwendet werden soll.

dynamicThreshold number

Der Schwellenwert, der beim dynamischen Abruf verwendet werden soll. Wenn nicht festgelegt, wird ein Systemstandardwert verwendet.

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

Modus

Der Modus des Prädiktors, der beim dynamischen Abruf verwendet werden soll.

Enums
MODE_UNSPECIFIED Abruf immer auslösen.
MODE_DYNAMIC Der Abruf wird nur ausgeführt, wenn das System dies für erforderlich hält.

CodeExecution

Dieser Typ hat keine Felder.

Tool, das vom Modell generierten Code ausführt und das Ergebnis automatisch an das Modell zurückgibt.

Siehe auch ExecutableCode und CodeExecutionResult, die nur bei Verwendung dieses Tools generiert werden.

GoogleSearch

Tooltyp „GoogleSearch“. Tool zur Unterstützung der Google Suche im Modell. Powered by Google

Felder
timeRangeFilter object (Interval)

Optional. Suchergebnisse auf einen bestimmten Zeitraum beschränken. Wenn Kunden eine Startzeit festlegen, müssen sie auch eine Endzeit festlegen (und umgekehrt).

searchTypes object (SearchTypes)

Optional. Die Suchtypen, die aktiviert werden sollen. Wenn nicht festgelegt, ist die Websuche standardmäßig aktiviert.

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

Intervall

Stellt ein Zeitintervall dar, das als Zeitstempelstart (einschließlich) und Zeitstempelende (ausschließlich) codiert ist.

Der Start muss kleiner oder gleich dem Ende sein. Wenn der Start dem Ende entspricht, ist das Intervall leer (die Zeit ist null). Wenn sowohl der Start als auch das Ende nicht angegeben sind, entspricht das Intervall einer beliebigen Zeit.

Felder
startTime string (Timestamp format)

Optional. Eingeschlossener Start des Intervalls.

Wenn angegeben, muss ein Zeitstempel, der diesem Intervall entspricht, gleich dem Start sein oder darauf folgen.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Optional. Ausgeschlossenes Ende des Intervalls.

Wenn angegeben, muss ein Zeitstempel, der diesem Intervall entspricht, vor dem Ende liegen.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

JSON-Darstellung
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Verschiedene Suchtypen, die im GoogleSearch-Tool aktiviert werden können.

Felder
JSON-Darstellung
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Dieser Typ hat keine Felder.

Standard-Websuche für Fundierung und zugehörige Konfigurationen.

ImageSearch

Dieser Typ hat keine Felder.

Bildsuche für Fundierung und zugehörige Konfigurationen.

ComputerUse

Tooltyp „Computer Use“.

Felder
environment enum (Environment)

Erforderlich. Die Umgebung, die betrieben wird.

excludedPredefinedFunctions[] string

Optional. Standardmäßig sind vordefinierte Funktionen im endgültigen Modellaufruf enthalten. Einige davon können explizit von der automatischen Einbeziehung ausgeschlossen werden. Dies kann zwei Zwecken dienen: 1. Einen eingeschränkteren / anderen Aktionsbereich verwenden. 2. Verbesserung der Definitionen / Anleitungen für vordefinierte Funktionen.

enablePromptInjectionDetection boolean

Optional. Gibt an, ob die Prompt-Injection-Erkennung für die Anfrage zur Computernutzung aktiviert werden soll.

disabledSafetyPolicies[] enum (SafetyPolicy)

Optional. Deaktivierte Sicherheitsrichtlinien für die Computernutzung.

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

Umgebung

Stellt die Umgebung dar, in der die Anwendung ausgeführt wird, z. B. einen Webbrowser.

Enums
ENVIRONMENT_UNSPECIFIED Die Standardeinstellung ist „browser“.
ENVIRONMENT_BROWSER Funktioniert in einem Webbrowser.
ENVIRONMENT_MOBILE Funktioniert in einer mobilen Umgebung.
ENVIRONMENT_DESKTOP Funktioniert in einer Desktop-Umgebung.

SafetyPolicy

Vordefinierte Sicherheitsrichtlinien für die Computernutzung.

Enums
SAFETY_POLICY_UNSPECIFIED Nicht angegebene Sicherheitsrichtlinie.
FINANCIAL_TRANSACTIONS Sicherheitsrichtlinie für Finanztransaktionen.
SENSITIVE_DATA_MODIFICATION Sicherheitsrichtlinie für die Änderung sensibler Daten.
COMMUNICATION_TOOL Sicherheitsrichtlinie für Kommunikationstools (z.B. Gmail, Chat, Meet).
ACCOUNT_CREATION Sicherheitsrichtlinie für die Kontoerstellung.
DATA_MODIFICATION Sicherheitsrichtlinie für die Datenänderung.
LEGAL_TERMS_AND_AGREEMENTS Sicherheitsrichtlinie für rechtliche Bedingungen und Vereinbarungen.

UrlContext

Dieser Typ hat keine Felder.

Tool zur Unterstützung des Abrufs von URL-Kontext.

FileSearch

Das FileSearch-Tool, das Wissen aus Semantic Retrieval-Korpora abruft. Dateien werden mit der ImportFile API in Semantic Retrieval-Korpora importiert.

Felder
fileSearchStoreNames[] string

Erforderlich. Die Namen der fileSearchStores, aus denen abgerufen werden soll. Beispiel: fileSearchStores/my-file-search-store-123

metadataFilter string

Optional. Metadatenfilter, der auf die Dokumente und Chunks des semantischen Abrufs angewendet werden soll.

topK integer

Optional. Die Anzahl der semantischen Abrufblöcke, die abgerufen werden sollen.

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

McpServer

Ein MCPServer ist ein Server, der vom Modell aufgerufen werden kann, um Aktionen auszuführen. Es ist ein Server, der das MCP-Protokoll implementiert.

Felder
name string

Der Name des MCPServers.

transport Union type
Der Transport, der für die Verbindung zum MCPServer verwendet werden soll. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
streamableHttpTransport object (StreamableHttpTransport)

Ein Transport, der HTTP-Anfragen und -Antworten streamen kann.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{
  "name": string,

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

StreamableHttpTransport

Ein Transport, der HTTP-Anfragen und -Antworten streamen kann.

Felder
url string

Die vollständige URL für den MCPServer-Endpunkt. Beispiel: „https://api.example.com/mcp“

headers map (key: string, value: string)

Optional: Felder für Authentifizierungsheader, Zeitlimits usw., falls erforderlich.

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

HTTP-Zeitlimit für reguläre Vorgänge.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit „s“. Beispiel: "3.5s".

sseReadTimeout string (Duration format)

Zeitüberschreitung für SSE-Lesevorgänge.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit „s“. Beispiel: "3.5s".

terminateOnClose boolean

Gibt an, ob die Clientsitzung geschlossen werden soll, wenn der Transport geschlossen wird.

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

GoogleMaps

Das GoogleMaps-Tool, das Geodatenkontext für die Nutzeranfrage bereitstellt.

Felder
enableWidget boolean

Optional. Gibt an, ob ein Widget-Kontext-Token in den GroundingMetadata der Antwort zurückgegeben werden soll. Entwickler können das Widget-Kontext-Token verwenden, um ein Google Maps-Widget mit georäumlichem Kontext zu den Orten zu rendern, auf die das Modell in der Antwort verweist.

JSON-Darstellung
{
  "enableWidget": boolean
}

REST-Ressource: auth_tokens

Ressource: AuthToken

Eine Anfrage zum Erstellen eines sitzungsspezifischen Authentifizierungstokens.

Felder
name string

Nur Ausgabe. ID. Das Token selbst.

expireTime string (Timestamp format)

Optional. Nur Eingabe. Nicht veränderbar. Eine optionale Zeit, nach der bei Verwendung des resultierenden Tokens Nachrichten in BidiGenerateContent-Sitzungen abgelehnt werden. (Gemini kann die Sitzung nach dieser Zeit vorzeitig beenden.)

Wenn nichts anderes festgelegt ist, wird standardmäßig ein Wert von 30 Minuten in der Zukunft verwendet. Wenn dieser Wert festgelegt ist, muss er weniger als 20 Stunden in der Zukunft liegen.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Optional. Nur Eingabe. Nicht veränderbar. Die Zeit, nach der neue Live API-Sitzungen mit dem aus dieser Anfrage resultierenden Token abgelehnt werden.

Wenn nichts anderes festgelegt ist, beträgt der Wert standardmäßig 60 Sekunden in der Zukunft. Wenn dieser Wert festgelegt ist, muss er weniger als 20 Stunden in der Zukunft liegen.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Optional. Nur Eingabe. Nicht veränderbar. Wenn „fieldMask“ leer ist und bidiGenerateContentSetup nicht vorhanden ist, wird die effektive BidiGenerateContentSetup-Nachricht aus der Live API-Verbindung übernommen.

Wenn „fieldMask“ leer ist und bidiGenerateContentSetup vorhanden ist, wird die effektive BidiGenerateContentSetup-Nachricht in dieser Anfrage vollständig aus bidiGenerateContentSetup übernommen. Die Einrichtungsnachricht der Live API-Verbindung wird ignoriert.

Wenn „fieldMask“ nicht leer ist, überschreiben die entsprechenden Felder aus bidiGenerateContentSetup die Felder aus der Einrichtungsnachricht in der Live API-Verbindung.

Dies ist eine durch Kommas getrennte Liste vollständig qualifizierter Feldnamen. Beispiel: "user.displayName,photo".

config Union type
Die methodenspezifische Konfiguration für das resultierende Token. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Optional. Nur Eingabe. Nicht veränderbar. Konfiguration speziell für BidiGenerateContent.

Ende der sich gegenseitig ausschließenden Felder.
uses integer

Optional. Nur Eingabe. Nicht veränderbar. Wie oft das Token verwendet werden kann. Wenn dieser Wert null ist, wird kein Limit angewendet. Das Fortsetzen einer Live API-Sitzung zählt nicht als Nutzung. Wenn nicht angegeben, ist der Standardwert 1.

JSON-Darstellung
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

Nachricht, die im ersten (und nur im ersten) BidiGenerateContentClientMessage gesendet werden soll. Enthält eine Konfiguration, die für die Dauer des Streaming-RPC gilt.

Clients sollten auf eine BidiGenerateContentSetupComplete-Nachricht warten, bevor sie weitere Nachrichten senden.

Felder
model string

Erforderlich. Der Ressourcenname des Modells. Dies dient als ID für das zu verwendende Modell.

Format: models/{model}

generationConfig object (GenerationConfig)

Optional. Generierungskonfiguration.

Die folgenden Felder werden nicht unterstützt:

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

Optional. Die vom Nutzer bereitgestellten Systemanweisungen für das Modell.

Hinweis: In Teilen sollte nur Text verwendet werden. Der Inhalt jedes Teils wird in einem separaten Absatz angezeigt.

tools[] object (Tool)

Optional. Eine Liste von Tools, die das Modell zum Generieren der nächsten Antwort verwenden kann.

Ein Tool ist ein Code, der es dem System ermöglicht, mit externen Systemen zu interagieren, um eine Aktion oder eine Reihe von Aktionen außerhalb des Wissens und Umfangs des Modells auszuführen.

realtimeInputConfig object (RealtimeInputConfig)

Optional. Konfiguriert die Verarbeitung von Echtzeiteingaben.

sessionResumption object (SessionResumptionConfig)

Optional. Konfiguriert den Mechanismus zur Wiederaufnahme von Sitzungen.

Wenn enthalten, sendet der Server SessionResumptionUpdate-Nachrichten.

contextWindowCompression object (ContextWindowCompressionConfig)

Optional. Konfiguriert einen Mechanismus zur Komprimierung des Kontextfensters.

Wenn dieser Parameter angegeben ist, reduziert der Server die Größe des Kontexts automatisch, wenn er die konfigurierte Länge überschreitet.

inputAudioTranscription object (AudioTranscriptionConfig)

Optional. Wenn diese Option aktiviert ist, wird die Transkription von Spracheingaben aktiviert. Die Transkription wird an die Sprache des Eingabeaudios angepasst, sofern konfiguriert.

outputAudioTranscription object (AudioTranscriptionConfig)

Optional. Wenn diese Option festgelegt ist, wird die Transkription der Audioausgabe des Modells aktiviert. Die Transkription entspricht dem Sprachcode, der für die Audioausgabe angegeben wurde, sofern konfiguriert.

historyConfig object (HistoryConfig)

Optional. Konfiguriert den Austausch des Verlaufs zwischen Client und Server.

labels map (key: string, value: string)

Optional. Labels mit benutzerdefinierten Metadaten für die Anfrage.

Optional. Labels müssen den standardmäßigen einheitlichen Cloud-Labelanforderungen entsprechen: - Labelschlüssel müssen mit einem Buchstaben beginnen. – Labelschlüssel und -werte dürfen maximal 63 Zeichen (Unicode-Codepunkte) lang sein und nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. – Internationale Zeichen sind zulässig.

Verwendung: – Sicherheitskennungen von Aggregatoren: Verwenden Sie den Schlüssel safety_identifier (z.B. {"safety_identifier": "user_session_123"})

Ein Objekt, das eine Liste von "key": value-Paaren enthält. Beispiel: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

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

GenerationConfig

Konfigurationsoptionen für die Modellgenerierung und -ausgabe. Nicht alle Parameter sind für jedes Modell konfigurierbar.

Felder
stopSequences[] string

Optional. Die Gruppe von Zeichenfolgen (bis zu 5), die die Ausgabegenerierung beenden. Wenn angegeben, stoppt die API beim ersten Auftreten eines stop_sequence. Die Stoppsequenz ist nicht Teil der Antwort.

responseMimeType string

Optional. MIME-Typ des generierten Kandidatentextes. Unterstützte MIME-Typen: text/plain: (Standard) Textausgabe. application/json: JSON-Antwort in den Antwortkandidaten. text/x.enum: ENUM als Stringantwort in den Antwortkandidaten. Eine Liste aller unterstützten MIME-Typen für Text finden Sie in der Dokumentation.

responseSchema
(deprecated)
object (Schema)

Optional. Ausgabeschema des generierten Kandidatentextes. Schemas müssen eine Teilmenge des OpenAPI-Schemas sein und können Objekte, Primitive oder Arrays sein.

Wenn dieser Wert festgelegt ist, muss auch ein kompatibler responseMimeType festgelegt werden. Kompatible MIME-Typen: application/json: Schema für JSON-Antwort. Weitere Informationen finden Sie im Leitfaden zur JSON-Textgenerierung.

Verworfen. Verwenden Sie stattdessen responseFormat.

_responseJsonSchema
(deprecated)
value (Value format)

Optional. Ausgabeschema der generierten Antwort. Dies ist eine Alternative zu responseSchema, die JSON-Schema akzeptiert.

Wenn dieser Wert festgelegt ist, muss responseSchema weggelassen werden, aber responseMimeType ist erforderlich.

Es kann zwar das vollständige JSON-Schema gesendet werden, aber nicht alle Funktionen werden unterstützt. Konkret werden nur die folgenden Properties unterstützt:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (für Strings und Zahlen)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (wird wie anyOf interpretiert)
  • properties
  • additionalProperties
  • required

Die nicht standardmäßige Property propertyOrdering kann ebenfalls festgelegt werden.

Zyklische Verweise werden nur in begrenztem Umfang aufgelöst und dürfen daher nur in nicht erforderlichen Properties verwendet werden. (Attribute, die null sein können, reichen nicht aus.) Wenn $ref für ein Unterschema festgelegt ist, dürfen keine anderen Attribute festgelegt werden, außer denen, die mit $ beginnen.

Verworfen. Verwenden Sie stattdessen responseFormat.

responseJsonSchema value (Value format)

Optional. Ein internes Detail. Verwenden Sie stattdessen responseJsonSchema.

responseModalities[] enum (Modality)

Optional. Die angeforderten Modalitäten der Antwort. Stellt die Modalitäten dar, die das Modell zurückgeben kann und die in der Antwort erwartet werden sollten. Dies ist eine genaue Übereinstimmung mit den Modalitäten der Antwort.

Ein Modell kann mehrere Kombinationen unterstützter Modalitäten haben. Wenn die angeforderten Modalitäten mit keiner der unterstützten Kombinationen übereinstimmen, wird ein Fehler zurückgegeben.

Eine leere Liste entspricht der Anforderung von nur Text.

candidateCount integer

Optional. Anzahl der zurückzugebenden generierten Antworten. Wenn nicht festgelegt, wird standardmäßig 1 verwendet. Bitte beachten Sie, dass dies nicht für Modelle der vorherigen Generation (Gemini 1.0-Familie) funktioniert.

maxOutputTokens integer

Optional. Die maximale Anzahl von Tokens, die in einem Antwortkandidaten enthalten sein sollen.

Hinweis: Der Standardwert variiert je nach Modell. Weitere Informationen finden Sie im Attribut Model.output_token_limit des Model, das von der Funktion getModel zurückgegeben wird.

temperature number

Optional. Steuert die Zufälligkeit der Ausgabe.

Hinweis: Der Standardwert variiert je nach Modell. Weitere Informationen finden Sie im Attribut Model.temperature des Model, das von der Funktion getModel zurückgegeben wird.

Die Werte können zwischen [0,0, 2,0] liegen.

Dieses Feld wird nicht mehr unterstützt und bei Gemini 3.6 Flash und neueren Modellen stillschweigend ignoriert.

topP number

Optional. Die maximale kumulative Wahrscheinlichkeit von Tokens, die beim Sampling berücksichtigt werden sollen.

Das Modell verwendet eine kombinierte Top-K- und Top-P-Stichprobenerhebung (Nucleus Sampling).

Tokens werden anhand ihrer zugewiesenen Wahrscheinlichkeiten sortiert, sodass nur die wahrscheinlichsten Tokens berücksichtigt werden. Top-K-Sampling begrenzt direkt die maximale Anzahl der zu berücksichtigenden Tokens, während Nucleus-Sampling die Anzahl der Tokens basierend auf der kumulativen Wahrscheinlichkeit begrenzt.

Hinweis: Der Standardwert variiert je nach Model und wird durch das Attribut Model.top_p angegeben, das von der Funktion getModel zurückgegeben wird. Ein leeres topK-Attribut gibt an, dass das Modell kein Top-K-Sampling anwendet und das Festlegen von topK für Anfragen nicht zulässt.

Dieses Feld wird nicht mehr unterstützt und bei Gemini 3.6 Flash und neueren Modellen stillschweigend ignoriert.

topK integer

Optional. Die maximale Anzahl von Tokens, die beim Sampling berücksichtigt werden sollen.

Gemini-Modelle verwenden Top-P-Sampling (Nucleus Sampling) oder eine Kombination aus Top-K- und Nucleus Sampling. Beim Top-k-Sampling wird die Gruppe der topK wahrscheinlichsten Tokens berücksichtigt. Bei Modellen, die mit Nucleus Sampling ausgeführt werden, ist die Einstellung „topK“ nicht zulässig.

Hinweis: Der Standardwert variiert je nach Model und wird durch das Attribut Model.top_p angegeben, das von der Funktion getModel zurückgegeben wird. Ein leeres topK-Attribut gibt an, dass das Modell kein Top-K-Sampling anwendet und das Festlegen von topK für Anfragen nicht zulässt.

Dieses Feld wird nicht mehr unterstützt und bei Gemini 3.6 Flash und neueren Modellen stillschweigend ignoriert.

seed integer

Optional. Seed, der bei der Decodierung verwendet wird. Wenn nicht festgelegt, wird für die Anfrage ein zufällig generierter Seed verwendet.

presencePenalty number

Optional. Präsenzstrafe, die auf die Logprobs des nächsten Tokens angewendet wird, wenn das Token bereits in der Antwort enthalten ist.

Diese Strafe ist binär (ein/aus) und hängt nicht davon ab, wie oft das Token verwendet wird (nach dem ersten Mal). Verwenden Sie frequencyPenalty für eine Strafe, die sich mit jeder Verwendung erhöht.

Eine positive Strafe verhindert die Verwendung von Tokens, die bereits in der Antwort verwendet wurden, und vergrößert das Vokabular.

Eine negative Strafe fördert die Verwendung von Tokens, die bereits in der Antwort verwendet wurden, und verringert das Vokabular.

frequencyPenalty number

Optional. Häufigkeitsstrafe, die auf die Logprobs des nächsten Tokens angewendet wird, multipliziert mit der Anzahl der Vorkommen jedes Tokens in der Antwort bis jetzt.

Eine positive Strafe verhindert die Verwendung von Tokens, die bereits verwendet wurden, proportional zur Häufigkeit der Verwendung des Tokens: Je häufiger ein Token verwendet wird, desto schwieriger ist es für das Modell, dieses Token noch einmal zu verwenden. Dadurch wird das Vokabular der Antworten erweitert.

Achtung: Eine negative Strafe führt dazu, dass das Modell Tokens proportional zur Häufigkeit ihrer Verwendung wiederverwendet. Kleine negative Werte reduzieren das Vokabular einer Antwort. Größere negative Werte führen dazu, dass das Modell ein gängiges Token wiederholt, bis das maxOutputTokens-Limit erreicht ist.

responseLogprobs boolean

Optional. Wenn „true“, werden die logprobs-Ergebnisse in der Antwort exportiert.

logprobs integer

Optional. Nur gültig, wenn responseLogprobs=True. Damit wird die Anzahl der Top-Logprobs festgelegt, einschließlich des ausgewählten Kandidaten, die bei jedem Decodierungsschritt in der Candidate.logprobs_result zurückgegeben werden sollen. Die Zahl muss im Bereich von [0, 20] liegen.

enableEnhancedCivicAnswers boolean

Optional. Aktiviert erweiterte Antworten auf Fragen zu Wahlen. Sie ist möglicherweise nicht für alle Modelle verfügbar.

speechConfig object (SpeechConfig)

Optional. Die Konfiguration für die Sprachgenerierung.

thinkingConfig object (ThinkingConfig)

Optional. Konfiguration für Denkfunktionen. Wenn dieses Feld für Modelle festgelegt ist, die das Nachdenken nicht unterstützen, wird ein Fehler zurückgegeben.

imageConfig object (ImageConfig)

Optional. Konfiguration für die Bildgenerierung. Wenn dieses Feld für Modelle festgelegt ist, die diese Konfigurationsoptionen nicht unterstützen, wird ein Fehler zurückgegeben.

mediaResolution enum (MediaResolution)

Optional. Falls angegeben, wird die angegebene Medienauflösung verwendet.

enableAffectiveDialog boolean

Optional. Wenn diese Option aktiviert ist, erkennt das Modell Emotionen und passt seine Antworten entsprechend an.

responseFormat object (ResponseFormatConfig)

Optional. Konfiguration für das Ausgabeformat der Antwort. Ermöglicht die Angabe der Ausgabekonfiguration pro Modalität (Text, Audio, Bild) in einer flachen Struktur.

translationConfig object (TranslationConfig)

Optional. Konfiguration für die Übersetzung.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Optional. Konfiguration für die Audiotranskription (Spracherkennung).

JSON-Darstellung
{
  "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)
  }
}

Modalität

Unterstützte Modalitäten der Antwort.

Enums
MODALITY_UNSPECIFIED Standardwert.
TEXT Gibt an, dass das Modell Text zurückgeben soll.
IMAGE Gibt an, dass das Modell Bilder zurückgeben soll.
AUDIO Gibt an, dass das Modell Audio zurückgeben soll.

SpeechConfig

Konfiguration für die Sprachgenerierung und Transkription.

Felder
voiceConfig object (VoiceConfig)

Die Konfiguration für die Ausgabe mit einer einzelnen Stimme.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Optional. Die Konfiguration für die Einrichtung mit mehreren Sprechern. Es schließt sich mit dem Feld „voiceConfig“ gegenseitig aus.

languageCode string

Optional. Der IETF-BCP-47-Sprachcode, den der Nutzer für die App konfiguriert hat. Wird für die Spracherkennung und ‑synthese verwendet.

Gültige Werte sind: 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 und th-TH.

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

VoiceConfig

Die Konfiguration für die zu verwendende Stimme.

Felder
voice_config Union type
Die Konfiguration für den zu verwendenden Lautsprecher. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Die Konfiguration für die vordefinierte Stimme, die verwendet werden soll.

voice string

Optional. Die Sprecher-ID für die Synthese. Unterstützte Formate:

  • Name des Sprechers für vordefinierte Stimmen (z. B. Orus oder Kore).
  • Stimm-ID für gespeicherte Stimmen (z. B. voice_xxx).
  • Schlüssel für die Stimmen-Replikation (z. B. voicekey_xxx).
Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{

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

PrebuiltVoiceConfig

Die Konfiguration für den vordefinierten Sprecher, der verwendet werden soll.

Felder
voiceName string

Optional. Der Name der voreingestellten Stimme, die verwendet werden soll.

JSON-Darstellung
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Die Konfiguration für die Einrichtung mit mehreren Sprechern.

Felder
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Erforderlich. Alle aktivierten Sprecherstimmen.

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

SpeakerVoiceConfig

Die Konfiguration für einen einzelnen Lautsprecher in einer Einrichtung mit mehreren Lautsprechern.

Felder
speaker string

Erforderlich. Der Name des zu verwendenden Sprechers. Sollte mit dem Prompt übereinstimmen.

voiceConfig object (VoiceConfig)

Erforderlich. Die Konfiguration für die zu verwendende Stimme.

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

ThinkingConfig

Konfiguration für Denkfunktionen.

Felder
includeThoughts boolean

Gibt an, ob Überlegungen in die Antwort aufgenommen werden sollen. Wenn „true“, werden Gedanken nur zurückgegeben, wenn sie verfügbar sind.

thinkingBudget integer

Die Anzahl der Gedanken-Tokens, die das Modell generieren soll.

thinkingLevel enum (ThinkingLevel)

Optional. Steuert den maximalen Detailgrad des internen Problemlösungsprozesses des Modells, bevor es eine Antwort generiert. Der Standardwert ist modellabhängig. Weitere Informationen finden Sie im Leitfaden zu Denkebenen. Empfohlen für Gemini 3 oder höher. Die Verwendung mit früheren Modellen führt zu einem Fehler.

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

ThinkingLevel

Nutzer können mit einem Enum anstelle eines ganzzahligen Budgets angeben, wie viel nachgedacht werden soll.

Enums
THINKING_LEVEL_UNSPECIFIED Standardwert.
MINIMAL Wenig bis gar kein Nachdenken.
LOW Niedriger Denkaufwand.
MEDIUM Mittlerer Denkaufwand.
HIGH Hoher Denkaufwand.

ImageConfig

Konfiguration für Funktionen zur Bildgenerierung.

Felder
aspectRatio string

Optional. Das Seitenverhältnis des zu generierenden Bildes. Unterstützte Seitenverhältnisse: 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 oder 21:9.

Wenn nichts angegeben ist, wählt das Modell ein Standard-Seitenverhältnis basierend auf den bereitgestellten Referenzbildern aus.

imageSize string

Optional. Gibt die Größe der generierten Bilder an. Unterstützte Werte sind 512, 1K, 2K und 4K. Wenn nicht angegeben, verwendet das Modell den Standardwert 1K.

JSON-Darstellung
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Medienauflösung für die Eingabemedien.

Enums
MEDIA_RESOLUTION_UNSPECIFIED Die Medienauflösung wurde nicht festgelegt.
MEDIA_RESOLUTION_LOW Auflösung von Medien auf „Niedrig“ (64 Tokens) festgelegt.
MEDIA_RESOLUTION_MEDIUM Auflösung von Medien auf „Mittel“ (256 Tokens) festgelegt.
MEDIA_RESOLUTION_HIGH Medienauflösung auf „Hoch“ festgelegt (gezoomtes Reframing mit 256 Tokens).

ResponseFormatConfig

Konfiguration für das Ausgabeformat der Antwort. Dies ist ein flaches Objekt, bei dem jedes optionale Unterfeld eine bestimmte Ausgabemodalität konfiguriert.

Felder
text object (TextResponseFormat)

Optional. Konfiguration des Textausgabeformats.

audio object (AudioResponseFormat)

Optional. Konfiguration des Audioausgabeformats.

image object (ImageResponseFormat)

Optional. Konfiguration des Bildausgabeformats.

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

TextResponseFormat

Konfiguration für das Textausgabeformat.

Felder
mimeType enum (MimeType)

Optional. Der MIME-Typ der Textausgabe.

schema value (Value format)

Optional. Das JSON-Schema, dem die Ausgabe entsprechen soll. Gilt nur, wenn mimeType APPLICATION_JSON ist.

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

MimeType

Unterstützte MIME-Typen für die Textausgabe.

Enums
MIME_TYPE_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
APPLICATION_JSON JSON-Ausgabeformat.
TEXT_PLAIN Nur-Text-Ausgabeformat.

AudioResponseFormat

Konfiguration für das Audioausgabeformat.

Felder
mimeType enum (MimeType)

Optional. Der MIME-Typ der Audioausgabe.

delivery enum (Delivery)

Optional. Der Übermittlungsmodus für die Audioausgabe.

sampleRate integer

Optional. Abtastrate in Hz.

bitRate integer

Optional. Bitrate in Bit pro Sekunde (Bit/s). Gilt nur für komprimierte Formate (MP3, Opus).

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

MimeType

Unterstützte MIME-Typen für die Audioausgabe.

Enums
MIME_TYPE_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
AUDIO_MP3 MP3-Audioformat.
AUDIO_OGG_OPUS OGG Opus-Audioformat.
AUDIO_L16 Audioformat: Raw PCM (L16).
AUDIO_WAV Audioformat: WAV
AUDIO_ALAW A-Law-Audioformat.
AUDIO_MULAW Mu-Law-Audioformat.

Auslieferung

Übermittlungsmodus für die Audioausgabe.

Enums
DELIVERY_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
INLINE Audiodaten werden inline in der Antwort zurückgegeben.
URI Audiodaten werden als URI zurückgegeben.

ImageResponseFormat

Konfiguration für das Bildausgabeformat.

Felder
mimeType enum (MimeType)

Optional. Der MIME-Typ der Bildausgabe.

delivery enum (Delivery)

Optional. Der Übermittlungsmodus für die Bildausgabe.

aspectRatio enum (AspectRatio)

Optional. Das Seitenverhältnis für die Bildausgabe.

imageSize enum (ImageSize)

Optional. Die Größe der Bildausgabe.

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

MimeType

Unterstützte MIME-Typen für die Bildausgabe.

Enums
MIME_TYPE_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
IMAGE_JPEG JPEG-Bildformat.

Auslieferung

Übermittlungsmodus für die Bildausgabe.

Enums
DELIVERY_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
INLINE Bilddaten werden inline in der Antwort zurückgegeben.
URI Bilddaten werden als URI zurückgegeben.

AspectRatio

Unterstützte Seitenverhältnisse für die Bildausgabe.

Enums
ASPECT_RATIO_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
ASPECT_RATIO_ONE_BY_ONE Seitenverhältnis: 1:1
ASPECT_RATIO_TWO_BY_THREE Seitenverhältnis: 2:3
ASPECT_RATIO_THREE_BY_TWO Seitenverhältnis: 3:2
ASPECT_RATIO_THREE_BY_FOUR Seitenverhältnis: 3:4.
ASPECT_RATIO_FOUR_BY_THREE Seitenverhältnis 4:3
ASPECT_RATIO_FOUR_BY_FIVE Seitenverhältnis: 4:5
ASPECT_RATIO_FIVE_BY_FOUR Seitenverhältnis: 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Seitenverhältnis: 9:16
ASPECT_RATIO_SIXTEEN_BY_NINE Seitenverhältnis: 16:9
ASPECT_RATIO_TWENTY_ONE_BY_NINE Seitenverhältnis: 21:9
ASPECT_RATIO_ONE_BY_EIGHT Seitenverhältnis: 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Seitenverhältnis: 8:1.
ASPECT_RATIO_ONE_BY_FOUR Seitenverhältnis: 1:4.
ASPECT_RATIO_FOUR_BY_ONE Seitenverhältnis: 4:1.

ImageSize

Unterstützte Bildgrößen für die Bildausgabe.

Enums
IMAGE_SIZE_UNSPECIFIED Standardwert. Dieser Wert wird nicht verwendet.
IMAGE_SIZE_FIVE_TWELVE Bildgröße: 512 Pixel
IMAGE_SIZE_ONE_K Bildgröße: 1K.
IMAGE_SIZE_TWO_K 2K-Bildgröße.
IMAGE_SIZE_FOUR_K 4K-Bildgröße.

TranslationConfig

Konfiguration für Übersetzungsfunktionen.

Felder
targetLanguageCode string

Erforderlich. Die Zielsprache für die Übersetzung. Unterstützte Werte sind BCP-47-Sprachcodes (z.B. „en“, „es“, „fr“).

echoTargetLanguage boolean

Optional. Wenn „true“, generiert das Modell Audio, wenn die Zielsprache gesprochen wird. Es wiederholt also im Wesentlichen die Eingabe. Wenn „false“, wird kein Audio für die Zielsprache erstellt.

JSON-Darstellung
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

Die Konfiguration der Audiotranskription.

Felder
languageCodes[] string

Optional. BCP-47-Sprachcodes, die Hinweise zu den im Audio enthaltenen Sprachen geben. Wenn nicht angegeben oder leer, wird standardmäßig die automatische Spracherkennung verwendet.

adaptationPhrases[]
(deprecated)
string

Optional. Eine Liste von Wortgruppen, die für die Sprachanpassung verwendet werden. Dadurch wird das ASR-Modell so beeinflusst, dass diese spezifischen Begriffe besser erkannt werden.

customVocabulary[] string

Optional. Eine Liste mit benutzerdefinierten Vokabularformulierungen, um das Spracherkennungsmodell so zu beeinflussen, dass bestimmte Begriffe (Produktnamen, Eigennamen, Fachjargon) erkannt werden.

wordTimestamp boolean

Optional. Konfiguriert die Generierung von Zeitstempeln auf Wortebene.

diarization boolean

Optional. Konfiguriert die Sprecherbestimmung.

mode enum (Mode)

Optional. Konfiguriert den Transkriptionsmodus. Unterstützte Werte: VERBATIM und SMART. Wenn nicht angegeben, wird standardmäßig die Transkription VERBATIM verwendet. Im Modus SMART entfernt das Modell Unflüssigkeiten (Füllwörter, Wiederholungen und falsche Anfänge), nimmt leichte grammatikalische Korrekturen vor, formatiert automatisch (Absätze, Aufzählungspunkte, nummerierte Listen) und führt kleinere Änderungen durch (Inline-Selbstkorrekturen). Zeitstempel und Sprecherbestimmung sind mit dem Modus SMART nicht kompatibel.

language_config Union type
Nicht mehr unterstützt: Verwenden Sie stattdessen language_codes auf oberster Ebene. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
languageAuto
(deprecated)
object (LanguageAuto)

Optional. Das Modell erkennt die Sprache automatisch.

languageHints
(deprecated)
object (LanguageHints)

Optional. Gibt eine oder mehrere Sprachen im Audio an.

Ende der sich gegenseitig ausschließenden Felder.
JSON-Darstellung
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,
  "mode": enum (Mode),

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

LanguageAuto

Dieser Typ hat keine Felder.

Gibt an, dass die Sprache des Audios automatisch erkannt werden soll.

LanguageHints

Gibt dem Modell Hinweise zu möglichen Sprachen in den Audiodaten.

Felder
languageCodes[]
(deprecated)
string

Erforderlich. BCP-47-Sprachcodes.

JSON-Darstellung
{
  "languageCodes": [
    string
  ]
}

Modus

Transkriptionsmodus

Enums
MODE_UNSPECIFIED Nicht angegebener Transkriptionsmodus.
VERBATIM Wörtlicher Transkriptionsmodus.
SMART Intelligenter Transkriptionsmodus.

RealtimeInputConfig

Konfiguriert das Echtzeit-Eingabeverhalten in BidiGenerateContent.

Felder
automaticActivityDetection object (AutomaticActivityDetection)

Optional. Wenn nicht festgelegt, ist die automatische Aktivitätserkennung standardmäßig aktiviert. Wenn die automatische Spracherkennung deaktiviert ist, muss der Client Aktivitätssignale senden.

activityHandling enum (ActivityHandling)

Optional. Definiert, welche Auswirkungen die Aktivität hat.

turnCoverage enum (TurnCoverage)

Optional. Definiert, welche Eingabe in der Runde des Nutzers enthalten ist.

interimTranscriptTimestampEnabled boolean

Optional. Konfiguriert Zeitstempel für Zwischenergebnisse des Transkripts.

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

AutomaticActivityDetection

Konfiguriert die automatische Erkennung von Aktivitäten.

Felder
disabled boolean

Optional. Wenn diese Option aktiviert ist (Standardeinstellung), werden erkannte Sprach- und Texteingaben als Aktivität gezählt. Wenn diese Option deaktiviert ist, muss der Client Aktivitätssignale senden.

startOfSpeechSensitivity enum (StartSensitivity)

Optional. Bestimmt, wie wahrscheinlich es ist, dass Sprache erkannt wird.

prefixPaddingMs integer

Optional. Die erforderliche Dauer der erkannten Sprache, bevor der Sprachbeginn bestätigt wird. Je niedriger dieser Wert ist, desto empfindlicher ist die Erkennung des Sprachbeginns und desto kürzer kann die Sprache sein, die erkannt wird. Dadurch erhöht sich jedoch auch die Wahrscheinlichkeit von falsch positiven Ergebnissen.

endOfSpeechSensitivity enum (EndSensitivity)

Optional. Bestimmt, wie wahrscheinlich es ist, dass die erkannte Sprache beendet wird.

silenceDurationMs integer

Optional. Die erforderliche Dauer der erkannten Nicht-Sprache (z.B. Stille), bevor das Ende der Sprache festgelegt wird. Je größer dieser Wert ist, desto länger können die Sprechpausen sein, ohne dass die Aktivität des Nutzers unterbrochen wird. Dadurch erhöht sich jedoch die Latenz des Modells.

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

StartSensitivity

Bestimmt, wie der Beginn der Sprache erkannt wird.

Enums
START_SENSITIVITY_UNSPECIFIED Die Standardeinstellung ist START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH Bei der automatischen Erkennung wird der Beginn der Sprache häufiger erkannt.
START_SENSITIVITY_LOW Die automatische Erkennung erkennt den Beginn der Sprache seltener.

EndSensitivity

Bestimmt, wie das Ende der Sprache erkannt wird.

Enums
END_SENSITIVITY_UNSPECIFIED Der Standardwert ist END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Die automatische Erkennung beendet die Spracheingabe häufiger.
END_SENSITIVITY_LOW Bei der automatischen Erkennung wird die Sprache seltener beendet.

ActivityHandling

Die verschiedenen Möglichkeiten, mit Nutzeraktivitäten umzugehen.

Enums
ACTIVITY_HANDLING_UNSPECIFIED Wenn nicht angegeben, ist das Standardverhalten START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Wenn „true“, wird die Antwort des Modells durch den Beginn der Aktivität unterbrochen (auch als „Barge-In“ bezeichnet). Die aktuelle Antwort des Modells wird im Moment der Unterbrechung abgeschnitten. Das ist das Standardverhalten.
NO_INTERRUPTION Die Antwort des Modells wird nicht unterbrochen.

TurnCoverage

Optionen, die festlegen, welche Eingabe in der Nutzerrunde enthalten ist.

Enums
TURN_COVERAGE_UNSPECIFIED Wenn nichts angegeben ist, wird ein Standardverhalten basierend auf dem Modell ausgewählt. Für Gemini 2.5 ist der Standardwert beispielsweise TURN_INCLUDES_ONLY_ACTIVITY, für Gemini 3.1 und höher dagegen TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Umfasst die Aktivität seit dem letzten Turn, ausgenommen Inaktivität (z.B. Stille im Audiostream).
TURN_INCLUDES_ALL_INPUT Umfasst alle Echtzeiteingaben seit dem letzten Turn, einschließlich Inaktivität (z.B. Stille im Audiostream).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Enthält Audioaktivitäten und alle Videos seit der letzten Abbiegung. Bei der automatischen Aktivitätserkennung bedeutet Audioaktivität Sprache und schließt Stille aus.

SessionResumptionConfig

Konfiguration der Sitzungswiederaufnahme.

Diese Nachricht ist in der Sitzungskonfiguration als BidiGenerateContentSetup.session_resumption enthalten. Wenn konfiguriert, sendet der Server SessionResumptionUpdate Nachrichten.

Felder
handle string

Das Handle einer vorherigen Sitzung. Wenn keine vorhanden ist, wird eine neue Sitzung erstellt.

Sitzungs-Handles stammen aus SessionResumptionUpdate.token-Werten in vorherigen Verbindungen.

JSON-Darstellung
{
  "handle": string
}

ContextWindowCompressionConfig

Aktiviert die Komprimierung des Kontextfensters – ein Mechanismus zum Verwalten des Kontextfensters des Modells, damit es eine bestimmte Länge nicht überschreitet.

Felder
compression_mechanism Union type
Der verwendete Mechanismus zur Komprimierung des Kontextfensters. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
slidingWindow object (SlidingWindow)

Ein Gleitfenstermechanismus.

Ende der sich gegenseitig ausschließenden Felder.
triggerTokens string (int64 format)

Die Anzahl der Tokens (vor dem Ausführen einer Runde), die erforderlich sind, um eine Komprimierung des Kontextfensters auszulösen.

Damit lässt sich die Qualität im Verhältnis zur Latenz ausgleichen, da kürzere Kontextfenster zu schnelleren Modellantworten führen können. Jeder Komprimierungsvorgang führt jedoch zu einer vorübergehenden Erhöhung der Latenz. Daher sollten sie nicht häufig ausgelöst werden.

Wenn nicht festgelegt, beträgt der Standardwert 80% des Kontextfensterlimits des Modells. Damit bleiben 20% für die nächste Nutzeranfrage/Modellantwort übrig.

JSON-Darstellung
{

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

SlidingWindow

Bei der SlidingWindow-Methode werden Inhalte am Anfang des Kontextfensters verworfen. Der resultierende Kontext beginnt immer am Anfang eines USER-Rollen-Turns. Systemanweisungen und alle BidiGenerateContentSetup.prefix_turns bleiben immer am Anfang des Ergebnisses.

Felder
targetTokens string (int64 format)

Die Zielanzahl der beizubehaltenden Tokens. Der Standardwert ist triggerTokens/2.

Das Verwerfen von Teilen des Kontextfensters führt zu einer vorübergehenden Erhöhung der Latenz. Daher sollte dieser Wert so kalibriert werden, dass häufige Komprimierungsvorgänge vermieden werden.

JSON-Darstellung
{
  "targetTokens": string
}

HistoryConfig

Verlaufskonfiguration.

Diese Nachricht ist in der Sitzungskonfiguration als BidiGenerateContentSetup.history_config enthalten. Konfiguriert den Austausch von Verlaufsmeldungen.

Felder
initialHistoryInClientContent boolean

Optional. Wenn „true“, wartet der Server nach dem Senden von setupComplete und verarbeitet zuerst clientContent-Nachrichten, bis turnComplete den Wert true hat. Dieser anfängliche Verlauf löst keinen Modellaufruf aus und kann mit der Rolle MODEL enden. Nachdem turnComplete den Wert true hat, kann der Client die Echtzeitunterhaltung über realtimeInput starten.

JSON-Darstellung
{
  "initialHistoryInClientContent": boolean
}

Methode: auth_tokens.create

Erstellt ein Token, mit dem das Verhalten einer BidiGenerateContent-Sitzung eingeschränkt werden kann.

Endpunkt

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

Anfragetext

Der Anfragetext enthält eine Instanz von AuthToken.

Felder
expireTime string (Timestamp format)

Optional. Nur Eingabe. Nicht veränderbar. Eine optionale Zeit, nach der bei Verwendung des resultierenden Tokens Nachrichten in BidiGenerateContent-Sitzungen abgelehnt werden. (Gemini kann die Sitzung nach dieser Zeit vorzeitig beenden.)

Wenn nichts anderes festgelegt ist, wird standardmäßig ein Wert von 30 Minuten in der Zukunft verwendet. Wenn dieser Wert festgelegt ist, muss er weniger als 20 Stunden in der Zukunft liegen.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Optional. Nur Eingabe. Nicht veränderbar. Die Zeit, nach der neue Live API-Sitzungen mit dem aus dieser Anfrage resultierenden Token abgelehnt werden.

Wenn nichts anderes festgelegt ist, beträgt der Wert standardmäßig 60 Sekunden in der Zukunft. Wenn dieser Wert festgelegt ist, muss er weniger als 20 Stunden in der Zukunft liegen.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Optional. Nur Eingabe. Nicht veränderbar. Wenn „fieldMask“ leer ist und bidiGenerateContentSetup nicht vorhanden ist, wird die effektive BidiGenerateContentSetup-Nachricht aus der Live API-Verbindung übernommen.

Wenn „fieldMask“ leer ist und bidiGenerateContentSetup vorhanden ist, wird die effektive BidiGenerateContentSetup-Nachricht in dieser Anfrage vollständig aus bidiGenerateContentSetup übernommen. Die Einrichtungsnachricht der Live API-Verbindung wird ignoriert.

Wenn „fieldMask“ nicht leer ist, überschreiben die entsprechenden Felder aus bidiGenerateContentSetup die Felder aus der Einrichtungsnachricht in der Live API-Verbindung.

Dies ist eine durch Kommas getrennte Liste vollständig qualifizierter Feldnamen. Beispiel: "user.displayName,photo".

config Union type
Die methodenspezifische Konfiguration für das resultierende Token. Im Folgenden finden Sie eine Liste der Felder, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Optional. Nur Eingabe. Nicht veränderbar. Konfiguration speziell für BidiGenerateContent.

Ende der sich gegenseitig ausschließenden Felder.
uses integer

Optional. Nur Eingabe. Nicht veränderbar. Wie oft das Token verwendet werden kann. Wenn dieser Wert null ist, wird kein Limit angewendet. Das Fortsetzen einer Live API-Sitzung zählt nicht als Nutzung. Wenn nicht angegeben, ist der Standardwert 1.

Antworttext

Wenn der Vorgang erfolgreich abgeschlossen wurde, enthält der Antworttext eine neu erstellte Instanz von AuthToken.