Generating content

Die Gemini API unterstützt die Generierung von Inhalten mit Bildern, Audio, Code, Tools und mehr. Weitere Informationen zu den einzelnen Funktionen finden Sie unten und im aufgabenorientierten Beispielcode oder in den umfassenden Anleitungen.

Methode: models.generateContent

Generiert eine Modellantwort auf Grundlage einer Eingabe GenerateContentRequest. Ausführliche Informationen zur Verwendung finden Sie im Leitfaden zur Texterstellung. Die Eingabefunktionen unterscheiden sich je nach Modell, einschließlich der optimierten Modelle. Weitere Informationen finden Sie im Modellleitfaden und im Leitfaden zum Abstimmen.

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 Mehrfachdialogabfragen wie chat ist dies ein wiederkehrendes Feld, das den Unterhaltungsverlauf und die letzte Anfrage enthält.

tools[] object (Tool)

Optional. Eine Liste der Tools, die das 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 Anleitungen Funktionsaufrufe und Code-Ausführung.

toolConfig object (ToolConfig)

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

safetySettings[] object (SafetySetting)

Optional. Eine Liste mit eindeutigen SafetySetting-Instanzen zum Blockieren unsicherer Inhalte.

Dies wird auf dem GenerateContentRequest.contents und dem GenerateContentResponse.candidates erzwungen. Für jeden SafetyCategory-Typ darf nur eine Einstellung vorhanden sein. Die API blockiert alle Inhalte und Antworten, die die durch diese Einstellungen festgelegten Grenzwerte nicht erfüllen. Diese Liste überschreibt die Standardeinstellungen für die einzelnen SafetyCategory, die in „safetySettings“ angegeben sind. Wenn für ein bestimmtes SafetyCategory kein SafetySetting in der Liste angegeben ist, verwendet die API die Standardeinstellung für die Sicherheit 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. Hier finden Sie eine detaillierte Beschreibung der verfügbaren Sicherheitseinstellungen. Hier finden Sie Informationen dazu, wie Sie Sicherheitsaspekte in Ihre KI-Anwendungen einbeziehen.

systemInstruction object (Content)

Optional. Der Entwickler hat Systemanweisungen festgelegt. Derzeit nur Text.

generationConfig object (GenerationConfig)

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

cachedContent string

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

serviceTier enum (ServiceTier)

Optional. Die Dienstleistungsvariante der Anfrage.

store boolean

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

Beispielanfrage

Text

Python

from google import genai

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

Node.js

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

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

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

Node.js

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

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

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

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

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

Audio

Python

from google import genai

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

Node.js

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

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

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

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

Node.js

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

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

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

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

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

Node.js

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

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

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

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

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

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

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

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

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

Cache

Python

from google import genai
from google.genai import types

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

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

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

Node.js

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

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

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

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

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

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

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

Node.js

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

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.7-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.7-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.7-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50 prime numbers. "
        "Ensure that only the executable code and its resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
    print(part, "\n")

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

Go

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

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

// Print the response.
printResponse(response)

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

Java

Client client = new Client();

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

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

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

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

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

Go

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

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

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

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

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

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

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

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

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

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

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

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

printResponse(finalResponse)

Node.js

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

System.out.println(result);

Generierungskonfiguration

Python

from google import genai
from google.genai import types

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

Node.js

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

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

console.log(response.text);

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.7-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

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

print(response.candidates[0].safety_ratings)

Node.js

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

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

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

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

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

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

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

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

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

Systemanweisung

Python

from google import genai
from google.genai import types

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

Node.js

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

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.7-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.7-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 vom 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 Mehrfachdialogabfragen wie chat ist dies ein wiederkehrendes Feld, das den Unterhaltungsverlauf und die letzte Anfrage enthält.

tools[] object (Tool)

Optional. Eine Liste der Tools, die das 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 Anleitungen Funktionsaufrufe und Code-Ausführung.

toolConfig object (ToolConfig)

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

safetySettings[] object (SafetySetting)

Optional. Eine Liste mit eindeutigen SafetySetting-Instanzen zum Blockieren unsicherer Inhalte.

Dies wird auf dem GenerateContentRequest.contents und dem GenerateContentResponse.candidates erzwungen. Für jeden SafetyCategory-Typ darf nur eine Einstellung vorhanden sein. Die API blockiert alle Inhalte und Antworten, die die durch diese Einstellungen festgelegten Grenzwerte nicht erfüllen. Diese Liste überschreibt die Standardeinstellungen für die einzelnen SafetyCategory, die in „safetySettings“ angegeben sind. Wenn für ein bestimmtes SafetyCategory kein SafetySetting in der Liste angegeben ist, verwendet die API die Standardeinstellung für die Sicherheit 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. Hier finden Sie eine detaillierte Beschreibung der verfügbaren Sicherheitseinstellungen. Hier finden Sie Informationen dazu, wie Sie Sicherheitsaspekte in Ihre KI-Anwendungen einbeziehen.

systemInstruction object (Content)

Optional. Der Entwickler hat Systemanweisungen festgelegt. Derzeit nur Text.

generationConfig object (GenerationConfig)

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

cachedContent string

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

serviceTier enum (ServiceTier)

Optional. Die Dienstleistungsvariante der Anfrage.

store boolean

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

Beispielanfrage

Text

Python

from google import genai

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

Node.js

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

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

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

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

responseStream.close();

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

Node.js

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

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

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

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

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

responseStream.close();

Audio

Python

from google import genai

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

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

Node.js

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

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

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

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

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

print(chat.get_history())

Node.js

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

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

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

console.log(chat.getHistory());

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

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

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

fmt.Println(chat.History(false))

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 in safetyRatings gemeldet. Die API: – Gibt entweder alle angeforderten Kandidaten oder keinen zurück. – Gibt nur dann keine Kandidaten zurück, wenn mit dem Prompt etwas nicht stimmt (siehe promptFeedback). – Meldet Feedback zu jedem Kandidaten in finishReason und safetyRatings.

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. Mit „responseId“ wird jede Antwort identifiziert.

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

Felder
blockReason enum (BlockReason)

Optional. Wenn festgelegt, 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. Sehen Sie sich safetyRatings an, um herauszufinden, durch welche Sicherheitskategorie die Blockierung erfolgt ist.
OTHER Der Prompt wurde aus unbekannten Gründen blockiert.
BLOCKLIST Der Prompt wurde aufgrund der Begriffe blockiert, die in der Sperrliste für Begriffe enthalten sind.
PROHIBITED_CONTENT Der Prompt wurde aufgrund unzulässiger Inhalte blockiert.
IMAGE_SAFETY Kandidaten, die aufgrund unsicherer Inhalte für die Bildgenerierung blockiert wurden.

UsageMetadata

Metadaten zur Tokennutzung der Generierungsanfrage.

Felder
promptTokenCount integer

Anzahl der Tokens im Prompt. Wenn cachedContent festgelegt ist, ist dies weiterhin die effektive Gesamtgröße des Prompts, d. h., sie umfasst die Anzahl der Tokens im Cache-Inhalt.

cachedContentTokenCount integer

Anzahl der Tokens im im Cache gespeicherten Teil des Prompts (im Cache gespeicherte Inhalte)

candidatesTokenCount integer

Gesamtzahl der Tokens für alle generierten Antwortvorschläge.

toolUsePromptTokenCount integer

Nur Ausgabe. Anzahl der Tokens in den Tool-Nutzungs-Prompts.

thoughtsTokenCount integer

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

totalTokenCount integer

Gesamtzahl der Tokens für die Generierungsanfrage (Prompt + Überlegungen + Antwortkandidaten).

promptTokensDetails[] object (ModalityTokenCount)

Nur Ausgabe. Liste der Modalitäten, die in der Anfrage 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 Eingaben von Tool-Nutzungsanfragen verarbeitet wurden.

serviceTier enum (ServiceTier)

Nur Ausgabe. Die Servicevariante 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 wird die Phase des zugrunde liegenden Modells und gegebenenfalls der Zeitpunkt der Außerbetriebnahme 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 ständig optimiert.

EXPERIMENTAL Modelle in dieser Phase dienen nur zu experimentellen Zwecken.
PREVIEW Modelle in dieser Phase sind ausgereifter als experimentelle Modelle.
STABLE Modelle in dieser Phase gelten als stabil und sind für den Einsatz in der Produktion geeignet.
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 sind veraltet. 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.

Pro Kategorie gibt es maximal eine Bewertung.

citationMetadata object (CitationMetadata)

Nur Ausgabe. Quelleninformationen für einen vom Modell generierten Vorschlag.

Dieses Feld kann mit Rezitationsinformationen für jeden Text gefüllt werden, der in der content enthalten ist. Dies sind Passagen, die aus urheberrechtlich geschütztem Material in den Trainingsdaten des zugrunde liegenden LLM „rezitiert“ 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-Wahrscheinlichkeitsscore des Kandidaten.

logprobsResult object (LogprobsResult)

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

urlContextMetadata object (UrlContextMetadata)

Nur Ausgabe. Metadaten im Zusammenhang mit dem Tool zum Abrufen des URL-Kontexts.

index integer

Nur Ausgabe. Index des Kandidaten in der Liste der Antwortvorschläge.

finishMessage string

Optional. Nur Ausgabe. Der Grund, warum das Modell keine Tokens mehr generiert. 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)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

Gibt den Grund an, 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 Inhalt des Antwortvorschlags wurde aus Rezitationsgründen gekennzeichnet.
LANGUAGE Die Inhalte des Antwortvorschlags wurden als nicht unterstützte Sprache gekennzeichnet.
OTHER Unbekannter Grund.
BLOCKLIST Die Tokengenerierung wurde gestoppt, weil die Inhalte verbotene Begriffe enthalten.
PROHIBITED_CONTENT Die Tokengenerierung wurde gestoppt, weil sie 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, da die generierten Bilder gegen die Sicherheitsrichtlinien verstoßen.
IMAGE_PROHIBITED_CONTENT Die Bildgenerierung wurde beendet, da 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, hat dies aber nicht getan.
IMAGE_RECITATION Die Bildgenerierung wurde aufgrund von Rezitationen angehalten.
UNEXPECTED_TOOL_CALL Das Modell hat einen Tool-Aufruf generiert, aber in der Anfrage waren keine Tools aktiviert.
TOO_MANY_TOOL_CALLS Das Modell hat zu viele Tools nacheinander aufgerufen. Die Ausführung wurde daher beendet.
MISSING_THOUGHT_SIGNATURE In der Anfrage fehlt mindestens eine Signatur für den Gedankengang.
MALFORMED_RESPONSE Aufgrund einer falsch formatierten Antwort beendet.
ESCALATION Die Anfrage wurde durch eine Eskalierungsregel gefiltert.

GroundingAttribution

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

Felder
sourceId object (AttributionSourceId)

Nur Ausgabe. Kennung der Quelle, die zu dieser Zuordnung beiträgt.

content object (Content)

Quellinhalte, die diese Quellenangabe bilden.

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

AttributionSourceId

Kennung der Quelle, die zu dieser Zuordnung beiträgt.

Felder
source Union type
Für source ist nur einer der folgenden Werte zulässig:
groundingPassage object (GroundingPassageId)

Kennung für einen Inline-Abschnitt.

semanticRetrieverChunk object (SemanticRetrieverChunk)

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

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 der GroundingPassage.id des GenerateAnswerRequest entspricht.

partIndex integer

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

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

SemanticRetrieverChunk

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

Felder
source string

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

chunk string

Nur Ausgabe. Name des Chunk, der den zugeordneten Text 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 Grounding-Chunks, die nicht in den Grounding-Metadaten vorheriger Antworten enthalten waren.

groundingSupports[] object (GroundingSupport)

Liste der Fundierungsunterstützung.

webSearchQueries[] string

Websuchanfragen für die anschließende Websuche.

imageSearchQueries[] string

Bildsuchanfragen, die für die Fundierung verwendet werden.

searchEntryPoint object (SearchEntryPoint)

Optional. Einstiegspunkt für die Google Suche für die nachfolgenden Websuchen.

retrievalMetadata object (RetrievalMetadata)

Metadaten im Zusammenhang mit dem Abrufen im Fundierungsablauf.

googleMapsWidgetContextToken string

Optional. Ressourcenname des Google Maps-Widget-Kontexttokens, das mit dem PlacesContextElement-Widget verwendet werden kann, um Kontextdaten zu rendern. Wird nur ausgefüllt, 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, das ein Array von Tupeln aus <Suchbegriff, Such-URL> darstellt.

Ein base64-codierter String.

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

GroundingChunk

Ein GroundingChunk steht für ein Segment von unterstützenden Beweisen, auf denen die Antwort des Modells basiert. Das kann ein Ausschnitt aus dem Web, ein abgerufener Kontext aus einer Datei oder Informationen aus Google Maps sein.

Felder
chunk_type Union type
Chunk-Typ. Für chunk_type ist nur einer der folgenden Werte zulässig:
web object (Web)

Grundierungschunk aus dem Web.

image object (Image)

Optional. Fundierungs-Chunk aus der Bildersuche.

retrievedContext object (RetrievedContext)

Optional. Fundierungsblock aus dem Kontext, der vom Dateisuchtool abgerufen wurde.

maps object (Maps)

Optional. Fundierungs-Chunk aus Google Maps.

JSON-Darstellung
{

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

Web

Chunk aus dem Web.

Felder
uri string

Nur Ausgabe. URI-Referenz des Chunks.

title string

Nur Ausgabe. Titel des Chunks.

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

Bild

Chunk aus der Bildersuche.

Felder
sourceUri string

Der Webseiten-URI für die Zuordnung.

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 Dateisuchtool abgerufen wurde.

Felder
customMetadata[] object (CustomMetadata)

Optional. Von Nutzern 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, das das Dokument enthält. Beispiel: fileSearchStores/123

pageNumber integer

Optional. Die Seitenzahl des abgerufenen Kontexts, falls zutreffend.

mediaId string

Optional. Der Ressourcenname des Media-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. Für value ist nur einer der folgenden Werte zulässig:
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 von der verwendeten key ab.

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 Fundierungs-Chunk 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 Antwort zum Ort.

placeId string

Die ID des Orts im Format places/{placeId}. Ein Nutzer kann mit dieser ID nach diesem Ort suchen.

placeAnswerSources object (PlaceAnswerSources)

Quellen, die Antworten zu den Funktionen eines bestimmten Orts 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 Funktionen eines bestimmten Orts 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 Funktionen des Orts zu beantworten, z. B. „Hat Bar Foo WLAN?“ oder „Ist Foo Bar barrierefrei?“. Derzeit werden nur Rezensions-Snippets als Quellen unterstützt.

Felder
reviewSnippets[] object (ReviewSnippet)

Ausschnitte aus Rezensionen, die zum Generieren von Antworten zu den Merkmalen eines bestimmten Orts in Google Maps verwendet werden.

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

ReviewSnippet

Fasst einen Ausschnitt einer Nutzerrezension zusammen, in dem eine Frage zu den Funktionen 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

Unterstützung für die Fundierung.

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 werden. Wenn die Antwort gestreamt wird, beziehen sich die groundingChunkIndices auf die Indexe aller Antworten. Es liegt in der Verantwortung des Clients, die Fundierungsblöcke aus allen Antworten zu sammeln (wobei die Reihenfolge beibehalten werden muss).

confidenceScores[] number

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

renderedParts[] integer

Nur Ausgabe. Indexe in das Feld parts der Inhalte des Kandidaten. Diese Indexe geben an, welche gerenderten Teile mit dieser Supportquelle verknüpft sind.

segment object (Segment)

Segment des Inhalts, zu dem dieser Support 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 Beginn des Teils, einschließlich, beginnend bei null.

endIndex integer

Endindex im angegebenen Teil, gemessen in Byte. Offset vom Beginn des Teils (ausschließlich), beginnend mit 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 Abrufen im Fundierungsablauf.

Felder
googleSearchDynamicRetrievalScore number

Optional. Punktzahl, die angibt, wie wahrscheinlich es ist, dass Informationen aus der Google Suche helfen können, den Prompt zu beantworten. Der Wert liegt im Bereich [0, 1], wobei 0 die geringste und 1 die höchste Wahrscheinlichkeit darstellt. Dieser Wert wird nur ausgegeben, wenn die Fundierung mit der Google Suche und die dynamische Abfrage 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 sind möglicherweise in „topCandidates“ enthalten.

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)

Nach Log-Wahrscheinlichkeit in absteigender Reihenfolge sortiert.

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

Kandidat

Kandidat für das Logprobs-Token und den ‑Wert.

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 im Zusammenhang mit dem Tool zum Abrufen des URL-Kontexts.

Felder
urlMetadata[] object (UrlMetadata)

Liste des URL-Kontexts.

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 Der Abruf der URL war erfolgreich.
URL_RETRIEVAL_STATUS_ERROR Der URL-Abruf ist aufgrund eines Fehlers fehlgeschlagen.
URL_RETRIEVAL_STATUS_PAYWALL Der Abruf der URL ist fehlgeschlagen, da sich die Inhalte hinter einer Paywall befinden.
URL_RETRIEVAL_STATUS_UNSAFE Der Abruf der URL ist fehlgeschlagen, da die Inhalte unsicher sind.

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

Eine Quellenangabe für einen Teil einer bestimmten Antwort.

Felder
startIndex integer

Optional. Beginn des Antwortsegments, das dieser Quelle zugeordnet wird.

Der Index gibt den Beginn des Segments an, gemessen in Byte.

endIndex integer

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

uri string

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

license string

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

Für Code-Zitationen sind Lizenzinformationen erforderlich.

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

HarmCategory

Die Kategorie einer Altersfreigabe.

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

Enums
HARM_CATEGORY_UNSPECIFIED Die Kategorie ist nicht angegeben.
HARM_CATEGORY_DEROGATORY PaLM – Negative oder schädliche Kommentare, die auf Identität und/oder geschützte Merkmale ausgerichtet sind.
HARM_CATEGORY_TOXICITY PaLM: Unhöfliche, respektlose oder vulgäre Inhalte.
HARM_CATEGORY_VIOLENCE PaLM: Beschreibt Szenarien, in denen Gewalt gegen eine Person oder Gruppe dargestellt wird, oder allgemein blutrünstige Inhalte.
HARM_CATEGORY_SEXUAL PaLM: Enthält Verweise auf sexuelle Handlungen oder andere vulgäre Inhalte.
HARM_CATEGORY_MEDICAL PaLM – Fördert ungeprüfte medizinische Ratschläge.
HARM_CATEGORY_DANGEROUS PaLM: Gefährliche Inhalte, die schädliche Handlungen fördern, erleichtern oder begünstigen.
HARM_CATEGORY_HARASSMENT Gemini – Belästigende Inhalte.
HARM_CATEGORY_HATE_SPEECH Gemini – Hassrede und 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 schädigen. VERALTET: Verwenden Sie stattdessen „enableEnhancedCivicAnswers“.

HARM_CATEGORY_JAILBREAK Gemini: Prompts, mit denen versucht wird, 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 anhand einer Reihe von Schadenskategorien auf Sicherheit hin klassifiziert. Die Wahrscheinlichkeit der Schadensklassifizierung ist hier enthalten.

Felder
category enum (HarmCategory)

Erforderlich. Die Kategorie für diese Bewertung.

probability enum (HarmProbability)

Erforderlich. Die Wahrscheinlichkeit von Schäden bei diesen Inhalten.

blocked boolean

Wurde dieser Inhalt aufgrund dieser Altersfreigabe 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 die Inhalte unsicher sind. Dies gibt nicht an, wie schwerwiegend der Schaden für einen Inhalt ist.

Enums
HARM_PROBABILITY_UNSPECIFIED Die 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 sich auf das Verhalten beim Blockieren aus Sicherheitsgründen auswirkt.

Wenn Sie eine Sicherheitseinstellung für eine Kategorie festlegen, ä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, bei dem Schäden blockiert werden.

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

HarmBlockThreshold

Blockieren bei und über 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“ sind zulässig.
BLOCK_MEDIUM_AND_ABOVE Inhalte mit den Kennzeichnungen NEGLIGIBLE und LOW sind zulässig.
BLOCK_ONLY_HIGH Inhalte mit den Werten NEGLIGIBLE, LOW und MEDIUM sind zulässig.
BLOCK_NONE Alle Inhalte sind zulässig.
OFF Sicherheitsfilter deaktivieren

ServiceTier

Die Servicevariante der Anfrage.

Enums
unspecified Standard-Service-Tier, das „Standard“ ist.
standard Standard-Dienststufe.
flex Flex-Dienststufe.
priority Prioritätsstufe

Inhalt

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

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

Felder
parts[] object (Part)

Geordnete Parts, aus denen eine einzelne Nachricht besteht. Teile können unterschiedliche MIME-Typen haben.

role string

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

Nützlich für Mehrfachdialoge. Andernfalls kann das Feld 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 mit einem zugehörigen Datentyp. 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 der Medien angibt, 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. Agents, die genai.Part als Inhaltsdarstellung verwenden, müssen möglicherweise zusätzliche Informationen im Blick behalten. Das kann beispielsweise der Name einer Datei oder Quelle sein, aus der der Teil stammt, oder eine Möglichkeit, mehrere Teilstreams zu multiplexen.

mediaResolution object (MediaResolution)

Optional. Auflösung der Eingabemedien.

mediaProcessing enum (MediaProcessing)

Optional. Wie das Modell die Medien dieses Teils verarbeitet, um sie zu verstehen. Nur für Videoteile (inlineData oder fileData mit Video-MIME) relevant. Bei Teilen, die keine Videos sind, wird dieses Feld ignoriert.

data Union type
Für data ist nur einer der folgenden Werte zulässig:
text string

Inline-Text

inlineData object (Blob)

Inline-Mediabytes.

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 enthält.

functionResponse object (FunctionResponse)

Die Ergebnisausgabe eines FunctionCall, der einen String enthält, der FunctionDeclaration.name darstellt, und ein strukturiertes JSON-Objekt mit der Ausgabe der Funktion 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 von 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 gefüllt.

metadata Union type
Steuert die zusätzliche Vorverarbeitung von Daten. Für metadata ist nur einer der folgenden Werte zulässig:
videoMetadata object (VideoMetadata)

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

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

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

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

Blob

Roh-Media-Bytes.

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)

Roh-Byte für Media-Formate.

Ein base64-codierter String.

JSON-Darstellung
{
  "mimeType": string,
  "data": 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 enthält.

Felder
id string

Optional. Eindeutige Kennung des Funktionsaufrufs. Wenn dieser Wert angegeben ist, wird der Client verwendet, um den functionCall auszuführen und die Antwort mit dem entsprechenden id zurückzugeben.

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 von einem FunctionCall, der einen String mit der FunctionDeclaration.name und ein strukturiertes JSON-Objekt mit der Ausgabe der Funktion enthält, wird als Kontext für das Modell verwendet. Dieses Feld sollte das Ergebnis einerFunctionCallenthalten, die auf einer Modellvorhersage basiert.

Felder
id string

Optional. Die Kennung des Funktionsaufrufs, auf den sich diese Antwort bezieht. 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“ oder „result“. Insbesondere wenn der Funktionsaufruf nicht ausgeführt werden konnte, kann die Antwort einen „error“-Schlüssel enthalten, um dem Modell Fehlerdetails zurückzugeben.

Multimedia können über ein Unterobjekt mit einem einzelnen „$ref“-Schlüssel eingefügt werden, dessen Wert die inlineData.display_name eines FunctionResponsePart ist, das die Multimedia 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. Signale, dass der Funktionsaufruf fortgesetzt wird und weitere Antworten zurückgegeben werden, wodurch der Funktionsaufruf in einen Generator umgewandelt wird. Gilt nur für NON_BLOCKING-Funktionsaufrufe, wird ansonsten ignoriert. Wenn sie auf „false“ gesetzt ist, werden zukünftige Antworten nicht berücksichtigt. Es ist zulässig, leere response mit willContinue=False zurückzugeben, um zu signalisieren, dass der Funktionsaufruf abgeschlossen ist. Dadurch kann die Modellgenerierung trotzdem ausgelöst werden. Um die Generierung zu vermeiden und den Funktionsaufruf abzuschließen, setzen Sie zusätzlich scheduling 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 mit einem zugehörigen Datentyp. 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 der Medien angibt, wenn das Feld inlineData mit Rohbytes gefüllt ist.

Felder
data Union type
Die Daten des Antwortteils der Funktion. Für data ist nur einer der folgenden Werte zulässig:
inlineData object (FunctionResponseBlob)

Inline-Mediabytes.

JSON-Darstellung
{

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

FunctionResponseBlob

Rohe Media-Bytes 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)

Roh-Byte für Media-Formate.

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 Füge das Ergebnis nur dem Unterhaltungskontext hinzu. Unterbrich oder löse die Generierung nicht aus.
WHEN_IDLE Fügen Sie das Ergebnis dem Unterhaltungskontext hinzu und fordern Sie die Generierung der Ausgabe an, ohne die laufende Generierung zu unterbrechen.
INTERRUPT Das Ergebnis wird dem Unterhaltungskontext hinzugefügt, die laufende Generierung wird unterbrochen und es wird aufgefordert, eine Ausgabe zu generieren.

FileData

URI-basierte Daten.

Felder
mimeType string

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

fileUri string

Erforderlich. URI.

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

ExecutableCode

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

Wird nur generiert, wenn das CodeExecution-Tool verwendet wird. In diesem Fall wird der Code automatisch ausgeführt und ein entsprechendes CodeExecutionResult wird ebenfalls generiert.

Felder
id string

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

language enum (Language)

Erforderlich. Programmiersprache der 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 angegeben Dieser Wert sollte nicht verwendet werden.
PYTHON Python >= 3.10 mit numpy und simpy. Python ist die Standardsprache.

CodeExecutionResult

Ergebnis der Ausführung von ExecutableCode.

Wird nur generiert, wenn das Tool CodeExecution verwendet wird.

Felder
id string

Optional. Die Kennung des ExecutableCode-Teils, auf den sich dieses Ergebnis bezieht. 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 Teilausgabe von output vorhanden.

ToolCall

Eine vom Modell zurückgegebene vorhergesagte serverseitige ToolCall. Diese Nachricht enthält Informationen zu einem Tool, das das Modell aufrufen möchte. Der Client soll diese ToolCall NICHT ausführen. Stattdessen sollte der Client diesen ToolCall in einem nachfolgenden Zug in einer Content-Nachricht zusammen mit dem entsprechenden ToolResponse an die API zurückgeben.

Felder
id string

Optional. Eindeutige Kennung des Tool-Aufrufs. Der Server gibt die Tool-Antwort mit dem 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, entspricht Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Tool für die Bildersuche, das Tool.google_search.search_types.image_search entspricht.
URL_CONTEXT Tool für den URL-Kontext, entspricht Tool.url_context.
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 Tool-Aufrufs, der von einem ToolCall des Modells initiiert wurde. Der Client sollte diesen ToolResponse in einem nachfolgenden Zug in einer Content-Nachricht zusammen mit dem entsprechenden ToolCall an die API zurückgeben.

Felder
id string

Optional. Die Kennung des Tool-Aufrufs, auf den sich diese Antwort bezieht.

toolType enum (ToolType)

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

response object (Struct format)

Optional. Die Tool-Antwort.

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

VideoMetadata

Nicht mehr unterstützt: Verwenden Sie stattdessen GenerateContentRequest.processing_options. Metadaten beschreiben den eingegebenen Videocontent.

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 an das Modell gesendeten Videos. 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

Auflösung von Medien für die Tokenisierung.

Felder
value Union type
Die Auflösungsebene der Media. Für value ist nur einer der folgenden Werte zulässig:
level enum (Level)

Die für die jeweiligen Media verwendete Tokenisierungsqualität. für Gemini API-Support .

JSON-Darstellung
{

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

Level

Die Auflösungsebene der Media.

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

MediaProcessing

So verarbeitet das Modell Eingabemedien, um sie zu verstehen.

Enums
MEDIA_PROCESSING_UNSPECIFIED Standard. Verwendet modellspezifische Verarbeitung (3.5 Pro+ -> AGENTIC, ältere Modelle -> STATIC).
STATIC Frame-Extraktion mit fester Rate. Alle Frames werden im Kontext platziert.
AGENTIC Modellbasierte dynamische Navigation. Für die meisten Anwendungsfälle empfohlen.

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 die Umgebung eingebunden werden sollen.

created string

Nur Ausgabe. Die Uhrzeit, zu der die Umgebung erstellt wurde, im ISO 8601-Format (JJJJ-MM-TTThh:mm:ssZ).

updated string

Nur Ausgabe. Die Uhrzeit, zu der die Umgebung zuletzt aktualisiert wurde, im ISO 8601-Format (JJJJ-MM-TTThh:mm:ssZ).

lastAccessed string

Nur Ausgabe. Die Uhrzeit, zu der 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. Für network ist nur einer der folgenden Werte zulässig:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Nur bestimmte Domains zulassen.

networkMode enum (NetworkMode)

Modus für ausgehenden Netzwerktraffic.

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 Netzwerk-Traffic für Konfigurationen, die nicht auf der Zulassungsliste stehen.

Enums
NETWORK_MODE_UNSPECIFIED Standardwert. Nicht verwendet
DISABLED Der gesamte Netzwerk-Egress ist blockiert.

Schema

Mit dem Schema-Objekt können Eingabe- und Ausgabedatentypen definiert werden. Diese Typen können Objekte, aber auch primitive Datentypen 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 spezielle Funktion aus.

title string

Optional. Der Titel des Schemas.

description string

Optional. Eine kurze Beschreibung des Parameters. Dies kann Beispiele für die Verwendung enthalten. Die Parameterbeschreibung kann als Markdown formatiert werden.

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 : {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 Eigenschaften 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 von 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 sollte anhand eines oder mehrerer der Unterschemas in der Liste validiert werden.

propertyOrdering[] string

Optional. Die Reihenfolge der Eigenschaften. 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. Daher ist es hier enthalten und wird ignoriert, damit Entwickler, die Schemas mit dem Feld default senden, keine Fehler wegen unbekannter Felder erhalten.

items object (Schema)

Optional. Schema der Elemente von Type.ARRAY.

minimum number

Optional. SCHEMAFELDER FÜR TYP „GANZZAHL“ und „ZAHL“ Mindestwert des Typs „GANZZAHL“ und „ZAHL“

maximum number

Optional. Maximaler Wert von 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 in https://spec.openapis.org/oas/v3.0.3#data-types definiert.

Enums
TYPE_UNSPECIFIED Nicht angegeben, sollte nicht verwendet werden.
STRING String-Typ.
NUMBER Numerischer Typ.
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.

Nächste ID: 17

Felder
functionDeclarations[] object (FunctionDeclaration)

Optional. Eine Liste der 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 ausfüllt. Der nächste Gesprächsbeitrag kann einen FunctionResponse mit dem Generierungskontext Content.role „function“ für den nächsten Modellbeitrag enthalten.

googleSearchRetrieval object (GoogleSearchRetrieval)

Optional. Abruftool, das auf der Google Suche basiert.

codeExecution object (CodeExecution)

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

computerUse object (ComputerUse)

Optional. Tool zur Unterstützung der direkten Interaktion des Modells mit dem Computer. Wenn diese Option aktiviert ist, werden automatisch funktionsspezifische Funktionsdeklarationen für die Computernutzung eingefügt.

urlContext object (UrlContext)

Optional. Tool zur Unterstützung des Abrufs von URL Context.

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 dem geografischen Kontext der Nutzeranfrage verknüpft werden kann.

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 Methode „BidiGenerateContent“ unterstützt.

parameters object (Schema)

Optional. Beschreibt die Parameter für diese Funktion. Entspricht dem Stringschlüssel des Parameterobjekts in der Open API 3.03: dem Namen des Parameters. Bei Parameternamen wird die Groß-/Kleinschreibung beachtet. Schema Value: 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. Entspricht dem Open API 3.03-Antwortobjekt. 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 Verhalten der Funktion. Die Standardeinstellung ist BLOCKING.

Enums
UNSPECIFIED Dieser Wert wird nicht verwendet.
BLOCKING Wenn diese Option festgelegt ist, wartet das System auf den Erhalt der Funktionsantwort, bevor es die Unterhaltung fortsetzt.
NON_BLOCKING Wenn diese Option festgelegt ist, wartet das System nicht auf den Empfang der Funktionsantwort. Stattdessen wird versucht, Funktionsantworten zu verarbeiten, sobald sie verfügbar sind, und gleichzeitig die Unterhaltung zwischen dem Nutzer und dem Modell aufrechtzuerhalten.

GoogleSearchRetrieval

Tool zum Abrufen öffentlicher Webdaten für die Fundierung, unterstützt 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 Vorhersageparameters, der für den dynamischen Abruf verwendet werden soll.

dynamicThreshold number

Der Schwellenwert, der für den dynamischen Abruf verwendet werden soll. Wenn nicht festgelegt, wird ein Systemstandardwert verwendet.

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

Modus

Der Modus des Vorhersageparameters, der für den dynamischen Abruf verwendet werden soll.

Enums
MODE_UNSPECIFIED Immer Abruf auslösen
MODE_DYNAMIC Abruf nur ausführen, 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

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

Felder
timeRangeFilter object (Interval)

Optional. Suchergebnisse nach einem bestimmten Zeitraum filtern. Wenn Kunden eine Startzeit festlegen, müssen sie auch eine Endzeit festlegen (und umgekehrt).

searchTypes object (SearchTypes)

Optional. Die zu aktivierenden Suchtypen. Wenn nichts anderes festgelegt ist, 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 Arten von Suchvorgängen, die für das Tool „GoogleSearch“ 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.

Bildersuche zur Fundierung und zugehörigen Konfigurationen.

ComputerUse

Tooltyp „Computer Use“ (Computernutzung).

Felder
environment enum (Environment)

Erforderlich. Die Umgebung, in der der Vorgang ausgeführt wird.

excludedPredefinedFunctions[] string

Optional. Standardmäßig sind vordefinierte Funktionen im endgültigen Modellaufruf enthalten. Einige können explizit davon ausgeschlossen werden, automatisch einbezogen zu werden. Das kann zwei Zwecke haben: 1. Verwendung eines eingeschränkteren / anderen Aktionsraums. 2. Die Definitionen / Anweisungen vordefinierter Funktionen werden verbessert.

enablePromptInjectionDetection boolean

Optional. Gibt an, ob die Prüfung zur Erkennung von Prompt Injection für Anfragen 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 der Vorgang ausgeführt wird, z. B. ein 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 Desktopumgebung.

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, Google Chat, Google Meet)
ACCOUNT_CREATION Sicherheitsrichtlinie für die Kontoerstellung.
DATA_MODIFICATION Sicherheitsrichtlinie für Datenänderungen.
LEGAL_TERMS_AND_AGREEMENTS Sicherheitsrichtlinie für rechtliche Bestimmungen und Vereinbarungen

UrlContext

Dieser Typ hat keine Felder.

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

FileSearch

Das Tool „FileSearch“, mit dem Wissen aus Semantic Retrieval-Korpora abgerufen wird. 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 für den semantischen Abruf angewendet werden soll.

topK integer

Optional. Die Anzahl der semantischen Abruf-Chunks, 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 handelt sich um einen Server, der das MCP-Protokoll implementiert. Nächste ID: 6

Felder
name string

Der Name des MCPServers.

transport Union type
Der Transport, der zum Herstellen einer Verbindung zum MCPServer verwendet werden soll. Für transport ist nur einer der folgenden Werte zulässig:
streamableHttpTransport object (StreamableHttpTransport)

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

JSON-Darstellung
{
  "name": string,

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

StreamableHttpTransport

Ein Transport, der HTTP-Anfragen und -Antworten streamen kann. Nächste ID: 6

Felder
url string

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

headers map (key: string, value: string)

Optional: Felder für Authentifizierungsheader, Zeitüberschreitungen 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-Zeitüberschreitung 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 den geografischen Kontext für die Anfrage des Nutzers bereitstellt.

Felder
enableWidget boolean

Optional. Gibt an, ob in den GroundingMetadata der Antwort ein Widget-Kontext-Token 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 sich das Modell in der Antwort bezieht.

JSON-Darstellung
{
  "enableWidget": boolean
}

REST-Ressource: auth_tokens

Ressource: AuthToken

Eine Anfrage zum Erstellen eines temporären 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 Nachrichten in BidiGenerateContent-Sitzungen abgelehnt werden, wenn das resultierende Token verwendet wird. Gemini kann die Sitzung nach dieser Zeit auch vorzeitig schließen.

Wenn nichts anderes festgelegt ist, wird standardmäßig ein Zeitpunkt 30 Minuten in der Zukunft verwendet. Wenn dieser Wert festgelegt ist, darf er nicht mehr 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 Token, das aus dieser Anfrage resultiert, abgelehnt werden.

Wenn nichts anderes festgelegt ist, beträgt der Wert standardmäßig 60 Sekunden in der Zukunft. Wenn dieser Wert festgelegt ist, darf er nicht mehr 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 vollständig aus bidiGenerateContentSetup in dieser Anfrage übernommen. Die Einrichtungsnachricht von der Live API-Verbindung wird ignoriert.

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

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. Für config ist nur einer der folgenden Werte zulässig:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

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

uses integer

Optional. Nur Eingabe. Nicht veränderbar. Die Anzahl der Male, die das Token verwendet werden kann. Wenn dieser Wert null ist, wird kein Limit angewendet. Das Fortsetzen einer Live API-Sitzung wird nicht als Nutzung gezählt. 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 die 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. Der Nutzer hat Systemanweisungen für das Modell bereitgestellt.

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

tools[] object (Tool)

Optional. Eine Liste der 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 das Flag enthalten ist, sendet der Server SessionResumptionUpdate-Nachrichten.

contextWindowCompression object (ContextWindowCompressionConfig)

Optional. Konfiguriert einen Mechanismus zur Komprimierung des Kontextfensters.

Wenn der Kontext enthalten ist, verkleinert der Server automatisch die Größe des Kontexts, wenn er die konfigurierte Länge überschreitet.

inputAudioTranscription object (AudioTranscriptionConfig)

Optional. Wenn diese Option festgelegt ist, wird die Transkription von Spracheingaben aktiviert. Die Transkription wird an die Sprache der Audioeingabe angepasst, sofern diese konfiguriert ist.

outputAudioTranscription object (AudioTranscriptionConfig)

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

historyConfig object (HistoryConfig)

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

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

GenerationConfig

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

Felder
stopSequences[] string

Optional. Die Menge der Zeichenfolgen (bis zu 5), die die Ausgabegenerierung stoppen. Falls angegeben, wird die API beim ersten Auftreten von stop_sequence beendet. 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 String-Antwort in den Antwortkandidaten. Eine Liste aller unterstützten Text-MIME-Typen 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, Primitiven oder Arrays sein.

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

_responseJsonSchema
(deprecated)
value (Value format)

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

Wenn festgelegt, muss responseSchema weggelassen werden, responseMimeType ist jedoch erforderlich.

Das vollständige JSON-Schema kann zwar gesendet werden, aber nicht alle Funktionen werden unterstützt. Es werden nur die folgenden Eigenschaften 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 genauso interpretiert wie anyOf)
  • properties
  • additionalProperties
  • required

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

Zyklische Verweise werden nur bis zu einem gewissen Grad entrollt und dürfen daher nur in nicht erforderlichen Properties verwendet werden. (Nullable-Eigenschaften reichen nicht aus.) Wenn $ref für ein Unterschema festgelegt ist, dürfen keine anderen Attribute als die mit $ festgelegt werden.

responseJsonSchema value (Value format)

Optional. Ein internes Detail. Verwenden Sie stattdessen responseJsonSchema.

responseModalities[] enum (Modality)

Optional. Die angeforderten Modalitäten der Antwort. Stellt die Menge der Modalitäten dar, die das Modell zurückgeben kann und die in der Antwort erwartet werden sollten. Das 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 einer Anfrage nur nach Text.

candidateCount integer

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

maxOutputTokens integer

Optional. Die maximale Anzahl von Tokens, die in einem Antwortvorschlag enthalten sein dürfen.

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.

topP number

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

Das Modell verwendet eine Kombination aus Top-K- und Top-P-Sampling (Nucleus).

Tokens werden nach ihren zugewiesenen Wahrscheinlichkeiten sortiert, sodass nur die wahrscheinlichsten Tokens berücksichtigt werden. Beim Top-K-Sampling wird die maximale Anzahl der zu berücksichtigenden Tokens direkt begrenzt, während beim Nucleus-Sampling die Anzahl der Tokens auf Grundlage der kumulativen Wahrscheinlichkeit begrenzt wird.

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

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 Menge der topK wahrscheinlichsten Tokens berücksichtigt. Bei Modellen, die Nucleus-Sampling verwenden, ist keine TopK-Einstellung möglich.

Hinweis: Der Standardwert variiert je nach Model und wird durch das Attribut Model.top_p angegeben, das von der getModel-Funktion 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.

seed integer

Optional. Seed, der beim Decodieren verwendet wird. Wenn nicht festgelegt, wird für die Anfrage ein zufällig generiertes Seed verwendet.

presencePenalty number

Optional. Die Anwesenheitsstrafe, die auf die Log-Wahrscheinlichkeiten des nächsten Tokens angewendet wird, wenn das Token bereits in der Antwort enthalten ist.

Diese Strafe ist binär (an/aus) und hängt nicht davon ab, wie oft das Token nach der ersten Verwendung verwendet wird. Verwenden Sie frequencyPenalty für eine Strafe, die mit jeder Nutzung steigt.

Eine positive Strafe soll die Verwendung von Tokens verhindern, die bereits in der Antwort verwendet wurden, und so den Wortschatz erweitern.

Eine negative Strafe fördert die Verwendung von Tokens, die bereits in der Antwort verwendet wurden, wodurch der Wortschatz verringert wird.

frequencyPenalty number

Optional. Die Häufigkeitsstrafe, die auf die Log-Wahrscheinlichkeiten des nächsten Tokens angewendet wird, multipliziert mit der Anzahl der Male, die jedes Token bisher in der Antwort gesehen wurde.

Eine positive Strafe soll die Verwendung von Tokens, die bereits verwendet wurden, proportional zur Anzahl der Verwendungen des Tokens verhindern: Je häufiger ein Token verwendet wird, desto schwieriger ist es für das Modell, dieses Token wieder zu verwenden, wodurch der Wortschatz der Antworten erweitert wird.

Achtung: Eine negative Strafe führt dazu, dass das Modell Tokens proportional zur Anzahl der Verwendungen des Tokens wiederverwendet. Kleine negative Werte verringern den Wortschatz einer Antwort. Bei größeren negativen Werten wiederholt das Modell ein gemeinsames Token, bis das maxOutputTokens-Limit erreicht ist.

responseLogprobs boolean

Optional. Bei „true“ werden die Ergebnisse von „logprobs“ in die Antwort exportiert.

logprobs integer

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

enableEnhancedCivicAnswers boolean

Optional. Aktiviert verbesserte zivilgesellschaftliche Antworten. Möglicherweise ist sie nicht für alle Modelle verfügbar.

speechConfig object (SpeechConfig)

Optional. Die Konfiguration für die Spracherzeugung.

thinkingConfig object (ThinkingConfig)

Optional. Konfiguration für Denkfunktionen. Wenn dieses Feld für Modelle festgelegt ist, die keine Denkprozesse 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 Media-Auflö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 Format der Antwortausgabe. 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 Spracherzeugung und ‑transkription.

Felder
voiceConfig object (VoiceConfig)

Die Konfiguration bei der Ausgabe mit einer Stimme.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Optional. Die Konfiguration für die Einrichtung mit mehreren Lautsprechern. Sie schließt das Feld „voiceConfig“ aus.

languageCode string

Optional. Der IETF-Sprachcode BCP-47, 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. Für voice_config ist nur einer der folgenden Werte zulässig:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Die Konfiguration für die zu verwendende vordefinierte Stimme.

JSON-Darstellung
{

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

PrebuiltVoiceConfig

Die Konfiguration für den zu verwendenden vordefinierten Lautsprecher.

Felder
voiceName string

Der Name der voreingestellten Stimme, die verwendet werden soll.

JSON-Darstellung
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Die Konfiguration für die Einrichtung mit mehreren Lautsprechern.

Felder
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Erforderlich. Alle aktivierten Sprecherstimmen.

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

SpeakerVoiceConfig

Die Konfiguration für einen einzelnen Lautsprecher in einem Setup 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 die maximale Tiefe 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

Der Nutzer kann jetzt mithilfe eines Enums anstelle eines ganzzahligen Budgets angeben, wie viel er nachdenken möchte.

Enums
THINKING_LEVEL_UNSPECIFIED Standardwert.
MINIMAL Kaum oder gar kein Nachdenken.
LOW Geringer 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 nicht angegeben, wählt das Modell ein Standardseitenverhä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, wird der Standardwert 1K verwendet.

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

MediaResolution

Auflösung der Eingabemedien.

Enums
MEDIA_RESOLUTION_UNSPECIFIED Die Auflösung der Media wurde nicht festgelegt.
MEDIA_RESOLUTION_LOW Die Medienauflösung ist auf „Niedrig“ eingestellt (64 Tokens).
MEDIA_RESOLUTION_MEDIUM Die Medienauflösung ist auf „Mittel“ (256 Tokens) eingestellt.
MEDIA_RESOLUTION_HIGH Die Medienauflösung ist auf „Hoch“ eingestellt (herangezoomtes Reframing mit 256 Tokens).

ResponseFormatConfig

Konfiguration für das Format der Antwortausgabe. Dies ist ein einfaches Objekt, in 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 Ausgabeformat für Nur-Text.

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 (bps). 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 Raw-PCM-Audioformat (L16).
AUDIO_WAV WAV-Audioformat.
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 von 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 1K-Bildgröße.
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 die Eingabe. Wenn „false“, wird kein Audio für die Zielsprache erstellt.

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

AudioTranscriptionConfig

Die Konfiguration für die Audiotranskription.

Felder
languageCodes[] string

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

adaptationPhrases[]
(deprecated)
string

Optional. Eine Liste von Begriffen, die für die Sprachanpassung verwendet werden. Das ASR-Modell wird dadurch so ausgerichtet, dass diese Begriffe besser erkannt werden.

customVocabulary[] string

Optional. Eine Liste von benutzerdefinierten Vokabeln, mit denen das Spracherkennungsmodell so angepasst wird, dass bestimmte Begriffe (Produktnamen, Eigennamen, Fachjargon) erkannt werden.

wordTimestamp boolean

Optional. Konfiguriert die Generierung von Zeitstempeln auf Wortebene.

diarization boolean

Optional. Konfiguriert die Sprecherbestimmung.

language_config Union type
Verworfen: Verwenden Sie stattdessen language_codes auf oberster Ebene. Für language_config ist nur einer der folgenden Werte zulässig:
languageAuto
(deprecated)
object (LanguageAuto)

Optional. Das Modell erkennt die Sprache automatisch.

languageHints
(deprecated)
object (LanguageHints)

Optional. Gibt eine oder mehrere Sprachen im Audio an.

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

  // 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 auf mögliche Sprachen, die im Audio vorhanden sind.

Felder
languageCodes[]
(deprecated)
string

Erforderlich. BCP-47-Sprachcodes.

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

RealtimeInputConfig

Konfiguriert das Echtzeit-Eingabeverhalten in BidiGenerateContent.

Felder
automaticActivityDetection object (AutomaticActivityDetection)

Optional. Wenn nichts anderes festgelegt ist, 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 die Auswirkungen von Aktivitäten.

turnCoverage enum (TurnCoverage)

Optional. Definiert, welche Eingabe im Zug des Nutzers enthalten ist.

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

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. Legt fest, wie wahrscheinlich es ist, dass Sprache erkannt wird.

prefixPaddingMs integer

Optional. Die erforderliche Dauer der erkannten Sprache, bevor der Beginn der Sprache festgelegt wird. Je niedriger dieser Wert ist, desto empfindlicher ist die Erkennung des Sprechbeginns und desto kürzer kann die Sprache sein, die erkannt wird. Dadurch steigt jedoch auch die Wahrscheinlichkeit falsch positiver Ergebnisse.

endOfSpeechSensitivity enum (EndSensitivity)

Optional. Bestimmt, wie wahrscheinlich es ist, dass die erkannte Sprache beendet wurde.

silenceDurationMs integer

Optional. Die erforderliche Dauer der erkannten Nicht-Sprache (z.B. Stille), bevor das Ende der Sprache erkannt wird. Je größer dieser Wert ist, desto länger können Sprachlücken sein, ohne die Aktivität des Nutzers zu unterbrechen. 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

Legt fest, wie das Ende der Sprache erkannt wird.

Enums
END_SENSITIVITY_UNSPECIFIED Die Standardeinstellung ist END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Bei der automatischen Erkennung wird die Sprache häufiger beendet.
END_SENSITIVITY_LOW Bei der automatischen Erkennung wird die Sprache seltener beendet.

ActivityHandling

Die verschiedenen Möglichkeiten, Nutzeraktivitäten zu verarbeiten.

Enums
ACTIVITY_HANDLING_UNSPECIFIED Wenn keine Angabe erfolgt, 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 „Barge-in“ genannt). 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 dazu, welche Eingabe in den Zug des Nutzers einbezogen wird.

Enums
TURN_COVERAGE_UNSPECIFIED Wenn nichts angegeben ist, wird basierend auf dem Modell ein Standardverhalten ausgewählt. Für Gemini 2.5 ist der Standardwert beispielsweise TURN_INCLUDES_ONLY_ACTIVITY, für Gemini 3.1 und höher TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Umfasst Aktivitäten seit dem letzten Zug, ausgenommen Inaktivität (z.B. Stille im Audiostream).
TURN_INCLUDES_ALL_INPUT Enthält alle Echtzeit-Eingaben seit dem letzten Zug, einschließlich Inaktivität (z.B. Stille im Audio-Stream).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Enthält Audioaktivitäten und alle Videos seit dem letzten Zug. Bei der automatischen Aktivitätserkennung bezieht sich die Audioaktivität auf Sprache und nicht auf Stille.

SessionResumptionConfig

Konfiguration der Sitzungswiederaufnahme.

Diese Nachricht ist in der Sitzungskonfiguration als BidiGenerateContentSetup.session_resumption enthalten. Wenn der Server entsprechend konfiguriert ist, sendet er SessionResumptionUpdate-Nachrichten.

Felder
handle string

Der Handle einer vorherigen Sitzung. Wenn nicht vorhanden, wird eine neue Sitzung erstellt.

Sitzungshandles stammen aus SessionResumptionUpdate.token-Werten in früheren Verbindungen.

JSON-Darstellung
{
  "handle": string
}

ContextWindowCompressionConfig

Aktiviert die Komprimierung des Kontextfensters – ein Mechanismus zur Verwaltung des Kontextfensters des Modells, damit es eine bestimmte Länge nicht überschreitet.

Felder
compression_mechanism Union type
Der verwendete Mechanismus zur Komprimierung des Kontextfensters. Für compression_mechanism ist nur einer der folgenden Werte zulässig:
slidingWindow object (SlidingWindow)

Ein Mechanismus mit gleitendem Zeitfenster.

triggerTokens string (int64 format)

Die Anzahl der Tokens (vor dem Ausführen einer Runde), die erforderlich sind, um eine Kontextfensterkomprimierung auszulösen.

Damit lässt sich ein Gleichgewicht zwischen Qualität und Latenz herstellen, 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 nichts anderes festgelegt ist, beträgt der Standardwert 80% des Kontextfensterlimits des Modells. So bleiben 20% für die nächste Nutzeranfrage bzw. 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-Rollenwechsels. 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.

Wenn Teile des Kontextfensters verworfen werden, führt dies zu einer vorübergehenden Erhöhung der Latenz. Dieser Wert sollte daher 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 true ist. Dieser erste Verlauf löst keinen Modellaufruf aus und kann mit der Rolle MODEL enden. Nachdem turnComplete true ist, 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 Nachrichten in BidiGenerateContent-Sitzungen abgelehnt werden, wenn das resultierende Token verwendet wird. Gemini kann die Sitzung nach dieser Zeit auch vorzeitig schließen.

Wenn nichts anderes festgelegt ist, wird standardmäßig ein Zeitpunkt 30 Minuten in der Zukunft verwendet. Wenn dieser Wert festgelegt ist, darf er nicht mehr 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 Token, das aus dieser Anfrage resultiert, abgelehnt werden.

Wenn nichts anderes festgelegt ist, beträgt der Wert standardmäßig 60 Sekunden in der Zukunft. Wenn dieser Wert festgelegt ist, darf er nicht mehr 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 vollständig aus bidiGenerateContentSetup in dieser Anfrage übernommen. Die Einrichtungsnachricht von der Live API-Verbindung wird ignoriert.

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

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. Für config ist nur einer der folgenden Werte zulässig:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

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

uses integer

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

Antworttext

Wenn der Vorgang erfolgreich abgeschlossen wurde, enthält der Antworttext eine neu erstellte Instanz von AuthToken.