Generating content

Interfejs Gemini API obsługuje generowanie treści z użyciem obrazów, dźwięku, kodu, narzędzi i innych elementów. Szczegółowe informacje o każdej z tych funkcji znajdziesz poniżej. Możesz też zapoznać się z przykładowym kodem zorientowanym na zadania lub przeczytać obszerne przewodniki.

Metoda: models.generateContent

Generuje odpowiedź modelu na podstawie danych wejściowych GenerateContentRequest. Szczegółowe informacje o korzystaniu z tej funkcji znajdziesz w przewodniku po generowaniu tekstu. Możliwości wprowadzania danych różnią się w zależności od modelu, w tym od modeli dostosowanych. Szczegółowe informacje znajdziesz w przewodniku po modelachprzewodniku po dostrajaniu.

Punkt końcowy

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

Parametry ścieżki

model string

Wymagane. Nazwa Model, która ma być użyta do wygenerowania dokończenia.

Format: models/{model}. Ma on postać models/{model}.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Pola
contents[] object (Content)

Wymagane. Treść bieżącej rozmowy z modelem.

W przypadku zapytań jednorazowych jest to pojedyncza instancja. W przypadku zapytań wieloetapowych, takich jak czat, jest to pole powtarzane, które zawiera historię rozmowy i najnowsze żądanie.

tools[] object (Tool)

Opcjonalnie. Lista Tools, których Model może używać do generowania kolejnej odpowiedzi.

Tool to fragment kodu, który umożliwia systemowi interakcję z systemami zewnętrznymi w celu wykonania działania lub zestawu działań poza wiedzą i zakresem Model. Obsługiwane Tool to FunctioncodeExecution. Więcej informacji znajdziesz w przewodnikach Wywoływanie funkcjiWykonywanie kodu.

toolConfig object (ToolConfig)

Opcjonalnie. Konfiguracja narzędzia dla dowolnego Tool określonego w żądaniu. Przykład użycia znajdziesz w przewodniku po wywoływaniu funkcji.

safetySettings[] object (SafetySetting)

Opcjonalnie. Lista unikalnych SafetySetting instancji do blokowania niebezpiecznych treści.

Będzie to egzekwowane w przypadku GenerateContentRequest.contentsGenerateContentResponse.candidates. Nie powinno być więcej niż 1 ustawienia dla każdego typu SafetyCategory. Interfejs API będzie blokować treści i odpowiedzi, które nie spełniają progów określonych w tych ustawieniach. Ta lista zastępuje domyślne ustawienia każdego SafetyCategory określonego w parametrze safetySettings. Jeśli na liście nie ma wartości SafetySetting dla danego parametru SafetyCategory, interfejs API użyje domyślnego ustawienia bezpieczeństwa dla tej kategorii. Obsługiwane są kategorie szkodliwych treści HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Szczegółowe informacje o dostępnych ustawieniach bezpieczeństwa znajdziesz w przewodniku. Zapoznaj się też z wytycznymi dotyczącymi bezpieczeństwa, aby dowiedzieć się, jak uwzględniać kwestie bezpieczeństwa w aplikacjach AI.

systemInstruction object (Content)

Opcjonalnie. Deweloper ustawił instrukcje systemowe. Obecnie tylko tekst.

generationConfig object (GenerationConfig)

Opcjonalnie. Opcje konfiguracji generowania modelu i danych wyjściowych.

cachedContent string

Opcjonalnie. Nazwa treści w pamięci podręcznej, która ma być używana jako kontekst do udostępniania prognozy. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcjonalnie. Poziom usługi żądania.

store boolean

Opcjonalnie. Konfiguruje zachowanie logowania w przypadku danego żądania. Jeśli jest ustawiona, ma pierwszeństwo przed konfiguracją logowania na poziomie projektu.

Przykładowe żądanie

Tekst

Python

from google import genai

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

Node.js

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

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

Go

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

Muszla

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());

Obraz

Python

from google import genai
import PIL.Image

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

Node.js

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

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

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

Go

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

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

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

Muszla

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

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

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

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

Java

Client client = new Client();

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

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

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

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

Audio

Python

from google import genai

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

Node.js

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

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

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

Go

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

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

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

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

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

Muszla

# 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

Wideo

Python

from google import genai
import time

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

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

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

Node.js

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

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

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

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

Go

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

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

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

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

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

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

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

Muszla

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

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

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

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

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

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

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

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

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

cat response.json
echo

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

PDF

Python

from google import genai

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

Go

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

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

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

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

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

Muszla

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

Czat

Python

from google import genai
from google.genai import types

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

Node.js

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

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

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

Go

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

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

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

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

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

Muszla

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 (Pamięć podręczna)

Python

from google import genai
from google.genai import types

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

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

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

Node.js

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

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

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

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

Go

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

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

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

Dostrojony model

Python

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

Tryb JSON

Python

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

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

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

Node.js

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

Go

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

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

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

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

Muszla

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());

Wykonanie kodu

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());

Wywoływanie funkcji

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

Muszla


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

Konfiguracja generowania

Python

from google import genai
from google.genai import types

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

Node.js

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

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

console.log(response.text);

Go

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

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

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

printResponse(response)

Muszla

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());

Ustawienia bezpieczeństwa

Python

from google import genai
from google.genai import types

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

print(response.candidates[0].safety_ratings)

Node.js

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

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

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

Go

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

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

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

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

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

Muszla

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());

Instrukcja systemowa

Python

from google import genai
from google.genai import types

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

Node.js

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

Go

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

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

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

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

Muszla

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());

Treść odpowiedzi

W przypadku powodzenia treść odpowiedzi obejmuje wystąpienie elementu GenerateContentResponse.

Metoda: models.streamGenerateContent

Generuje odpowiedź strumieniową z modelu na podstawie danych wejściowych GenerateContentRequest.

Punkt końcowy

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

Parametry ścieżki

model string

Wymagane. Nazwa Model, która ma być użyta do wygenerowania dokończenia.

Format: models/{model}. Ma on postać models/{model}.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Pola
contents[] object (Content)

Wymagane. Treść bieżącej rozmowy z modelem.

W przypadku zapytań jednorazowych jest to pojedyncza instancja. W przypadku zapytań wieloetapowych, takich jak czat, jest to pole powtarzane, które zawiera historię rozmowy i najnowsze żądanie.

tools[] object (Tool)

Opcjonalnie. Lista Tools, których Model może używać do generowania kolejnej odpowiedzi.

Tool to fragment kodu, który umożliwia systemowi interakcję z systemami zewnętrznymi w celu wykonania działania lub zestawu działań poza wiedzą i zakresem Model. Obsługiwane Tool to FunctioncodeExecution. Więcej informacji znajdziesz w przewodnikach Wywoływanie funkcjiWykonywanie kodu.

toolConfig object (ToolConfig)

Opcjonalnie. Konfiguracja narzędzia dla dowolnego Tool określonego w żądaniu. Przykład użycia znajdziesz w przewodniku po wywoływaniu funkcji.

safetySettings[] object (SafetySetting)

Opcjonalnie. Lista unikalnych SafetySetting instancji do blokowania niebezpiecznych treści.

Będzie to egzekwowane w przypadku GenerateContentRequest.contentsGenerateContentResponse.candidates. Nie powinno być więcej niż 1 ustawienia dla każdego typu SafetyCategory. Interfejs API będzie blokować treści i odpowiedzi, które nie spełniają progów określonych w tych ustawieniach. Ta lista zastępuje domyślne ustawienia każdego SafetyCategory określonego w parametrze safetySettings. Jeśli na liście nie ma wartości SafetySetting dla danego parametru SafetyCategory, interfejs API użyje domyślnego ustawienia bezpieczeństwa dla tej kategorii. Obsługiwane są kategorie szkodliwych treści HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Szczegółowe informacje o dostępnych ustawieniach bezpieczeństwa znajdziesz w przewodniku. Zapoznaj się też z wytycznymi dotyczącymi bezpieczeństwa, aby dowiedzieć się, jak uwzględniać kwestie bezpieczeństwa w aplikacjach AI.

systemInstruction object (Content)

Opcjonalnie. Deweloper ustawił instrukcje systemowe. Obecnie tylko tekst.

generationConfig object (GenerationConfig)

Opcjonalnie. Opcje konfiguracji generowania modelu i danych wyjściowych.

cachedContent string

Opcjonalnie. Nazwa treści w pamięci podręcznej, która ma być używana jako kontekst do udostępniania prognozy. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcjonalnie. Poziom usługi żądania.

store boolean

Opcjonalnie. Konfiguruje zachowanie logowania w przypadku danego żądania. Jeśli jest ustawiona, ma pierwszeństwo przed konfiguracją logowania na poziomie projektu.

Przykładowe żądanie

Tekst

Python

from google import genai

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

Node.js

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

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

Go

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

Muszla

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();

Obraz

Python

from google import genai
import PIL.Image

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

Node.js

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

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

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

Go

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

Muszla

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

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

Java

Client client = new Client();

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

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


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

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

responseStream.close();

Audio

Python

from google import genai

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

Go

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

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

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

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

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

Muszla

# 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

Wideo

Python

from google import genai
import time

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

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

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

Node.js

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

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

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

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

Go

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

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

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

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

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

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

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

Muszla

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

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

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

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

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

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

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

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

cat response.json
echo

PDF

Python

from google import genai

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

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

Go

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

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

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

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

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

Muszla

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

Czat

Python

from google import genai
from google.genai import types

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

print(chat.get_history())

Node.js

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

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

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

console.log(chat.getHistory());

Go

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

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

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

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

fmt.Println(chat.History(false))

Muszla

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"

Treść odpowiedzi

Jeśli operacja się uda, treść odpowiedzi będzie zawierała strumień instancji GenerateContentResponse.

GenerateContentResponse

Odpowiedź modelu obsługującego wiele odpowiedzi kandydujących.

Oceny bezpieczeństwa i filtrowanie treści są raportowane zarówno w przypadku promptu w GenerateContentResponse.prompt_feedback, jak i każdej propozycji w finishReasonsafetyRatings. Interfejs API: - zwraca wszystkich żądanych kandydatów lub żadnego z nich; - nie zwraca żadnych kandydatów tylko wtedy, gdy wystąpił problem z promptem (sprawdź promptFeedback); - przekazuje opinie o każdym kandydacie w finishReasonsafetyRatings.

Pola
candidates[] object (Candidate)

Odpowiedzi kandydujące modelu.

promptFeedback object (PromptFeedback)

Zwraca opinię dotyczącą promptu związaną z filtrami treści.

usageMetadata object (UsageMetadata)

Tylko dane wyjściowe. Metadane dotyczące wykorzystania tokenów w żądaniach generowania.

modelVersion string

Tylko dane wyjściowe. Wersja modelu użyta do wygenerowania odpowiedzi.

responseId string

Tylko dane wyjściowe. Identyfikator responseId służy do identyfikowania każdej odpowiedzi.

modelStatus object (ModelStatus)

Tylko dane wyjściowe. Bieżący stan modelu.

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

PromptFeedback

Zbiór metadanych opinii określonych w prompcie w GenerateContentRequest.content.

Pola
blockReason enum (BlockReason)

Opcjonalnie. Jeśli ta opcja jest ustawiona, prompt został zablokowany i nie są zwracane żadne propozycje. Przeformułuj prompta.

safetyRatings[] object (SafetyRating)

Oceny bezpieczeństwa promptu. W każdej kategorii może być maksymalnie 1 ocena.

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

BlockReason

Określa przyczynę zablokowania promptu.

Wartości w polu enum
BLOCK_REASON_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
SAFETY Prompt został zablokowany ze względów bezpieczeństwa. Kliknij safetyRatings, aby dowiedzieć się, która kategoria bezpieczeństwa spowodowała blokadę.
OTHER Prompt został zablokowany z nieznanych przyczyn.
BLOCKLIST Prompt został zablokowany z powodu terminów, które znajdują się na liście zablokowanych terminów.
PROHIBITED_CONTENT Prompt został zablokowany z powodu niedozwolonych treści.
IMAGE_SAFETY Kandydaci zablokowani z powodu niebezpiecznych treści do generowania obrazów.

UsageMetadata

Metadane dotyczące wykorzystania tokenów w żądaniu generowania.

Pola
promptTokenCount integer

Liczba tokenów w prompcie. Gdy ustawiona jest wartość cachedContent, nadal jest to łączny efektywny rozmiar promptu, co oznacza, że obejmuje on liczbę tokenów w treściach w pamięci podręcznej.

cachedContentTokenCount integer

Liczba tokenów w części prompta zapisanej w pamięci podręcznej (treści w pamięci podręcznej).

candidatesTokenCount integer

Łączna liczba tokenów we wszystkich wygenerowanych kandydatach na odpowiedź.

toolUsePromptTokenCount integer

Tylko dane wyjściowe. Liczba tokenów w promptach dotyczących korzystania z narzędzi.

thoughtsTokenCount integer

Tylko dane wyjściowe. Liczba tokenów myśli w przypadku modeli myślenia.

totalTokenCount integer

Łączna liczba tokenów w żądaniu generowania (prompt + przemyślenia + proponowane odpowiedzi).

promptTokensDetails[] object (ModalityTokenCount)

Tylko dane wyjściowe. Lista rodzajów danych, które zostały przetworzone w danych wejściowych żądania.

cacheTokensDetails[] object (ModalityTokenCount)

Tylko dane wyjściowe. Lista rodzajów buforowanych treści w danych wejściowych żądania.

candidatesTokensDetails[] object (ModalityTokenCount)

Tylko dane wyjściowe. Lista rodzajów, które zostały zwrócone w odpowiedzi.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

Tylko dane wyjściowe. Lista rodzajów danych, które zostały przetworzone na potrzeby danych wejściowych żądania użycia narzędzia.

serviceTier enum (ServiceTier)

Tylko dane wyjściowe. Poziom usług żądania.

Zapis JSON
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

Stan modelu bazowego. Służy do wskazywania etapu rozwoju modelu bazowego i czasu wycofania (w stosownych przypadkach).

Pola
modelStage enum (ModelStage)

Etap modelu bazowego.

retirementTime string (Timestamp format)

Czas, w którym model zostanie wycofany.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

message string

Komunikat wyjaśniający stan modelu.

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

ModelStage

Określa etap modelu bazowego.

Wartości w polu enum
MODEL_STAGE_UNSPECIFIED Nieokreślony etap modelu.
UNSTABLE_EXPERIMENTAL

Model bazowy podlega wielu dostrajaniom.

EXPERIMENTAL Modele na tym etapie służą wyłącznie do celów eksperymentalnych.
PREVIEW Modele na tym etapie są bardziej zaawansowane niż modele eksperymentalne.
STABLE Modele na tym etapie są uważane za stabilne i gotowe do użytku produkcyjnego.
LEGACY Jeśli model jest na tym etapie, oznacza to, że w najbliższej przyszłości zostanie wycofany. Z tego modelu mogą korzystać tylko obecni klienci.
DEPRECATED

Modele na tym etapie są wycofane. Nie można używać tych modeli.

RETIRED Modele na tym etapie są wycofywane. Nie można używać tych modeli.

Kandydat

Kandydat na odpowiedź wygenerowany przez model.

Pola
content object (Content)

Tylko dane wyjściowe. Wygenerowane treści zwrócone przez model.

finishReason enum (FinishReason)

Opcjonalnie. Tylko dane wyjściowe. Powód, dla którego model przestał generować tokeny.

Jeśli jest puste, model nie przestał generować tokenów.

safetyRatings[] object (SafetyRating)

Lista ocen bezpieczeństwa proponowanej odpowiedzi.

W każdej kategorii może być maksymalnie 1 ocena.

citationMetadata object (CitationMetadata)

Tylko dane wyjściowe. Informacje o cytowaniu wygenerowanego przez model kandydata.

To pole może zawierać informacje o recytacji dowolnego tekstu zawartego w content. Są to fragmenty „recytowane” z materiałów chronionych prawem autorskim w danych treningowych podstawowego modelu LLM.

tokenCount integer

Tylko dane wyjściowe. Liczba tokenów dla tego kandydata.

groundingAttributions[] object (GroundingAttribution)

Tylko dane wyjściowe. Informacje o atrybucji źródeł, które przyczyniły się do powstania sprawdzonej odpowiedzi.

To pole jest wypełniane w przypadku połączeń GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Tylko dane wyjściowe. Metadane dotyczące uzasadnienia dla kandydata.

To pole jest wypełniane w przypadku połączeń GenerateContent.

avgLogprobs number

Tylko dane wyjściowe. Średnia ocena logarytmicznego prawdopodobieństwa kandydata.

logprobsResult object (LogprobsResult)

Tylko dane wyjściowe. wyniki logarytmicznego prawdopodobieństwa dla tokenów odpowiedzi i najpopularniejszych tokenów;

urlContextMetadata object (UrlContextMetadata)

Tylko dane wyjściowe. Metadane związane z narzędziem do pobierania kontekstu adresu URL.

index integer

Tylko dane wyjściowe. Indeks kandydata na liście kandydatów do odpowiedzi.

finishMessage string

Opcjonalnie. Tylko dane wyjściowe. Zawiera szczegółowe informacje o przyczynie zatrzymania generowania tokenów przez model. To pole jest wypełniane tylko wtedy, gdy ustawiona jest wartość finishReason.

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

FinishReason

Określa przyczynę, dla której model przestał generować tokeny.

Wartości w polu enum
FINISH_REASON_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
STOP Naturalny punkt zatrzymania modelu lub podana sekwencja zatrzymania.
MAX_TOKENS Osiągnięto maksymalną liczbę tokenów określoną w żądaniu.
SAFETY Treść proponowanej odpowiedzi została oznaczona ze względów bezpieczeństwa.
RECITATION Treść proponowanej odpowiedzi została oznaczona z powodu recytacji.
LANGUAGE Treść proponowanej odpowiedzi została oznaczona z powodu użycia nieobsługiwanego języka.
OTHER Nieznana przyczyna.
BLOCKLIST Generowanie tokenów zostało zatrzymane, ponieważ treść zawiera zabronione słowa.
PROHIBITED_CONTENT Generowanie tokenów zostało zatrzymane, ponieważ mogą one zawierać niedozwolone treści.
SPII Generowanie tokenów zostało zatrzymane, ponieważ treść może zawierać informacje poufne umożliwiające identyfikację (SPII).
MALFORMED_FUNCTION_CALL Wywołanie funkcji wygenerowane przez model jest nieprawidłowe.
IMAGE_SAFETY Generowanie tokenów zostało zatrzymane, ponieważ wygenerowane obrazy zawierają naruszenia zasad bezpieczeństwa.
IMAGE_PROHIBITED_CONTENT Generowanie obrazów zostało zatrzymane, ponieważ wygenerowane obrazy zawierają inne niedozwolone treści.
IMAGE_OTHER Generowanie obrazu zostało zatrzymane z powodu innego problemu.
NO_IMAGE Model miał wygenerować obraz, ale go nie wygenerował.
IMAGE_RECITATION Generowanie obrazu zostało zatrzymane z powodu recytacji.
UNEXPECTED_TOOL_CALL Model wygenerował wywołanie narzędzia, ale w żądaniu nie włączono żadnych narzędzi.
TOO_MANY_TOOL_CALLS Model wywołał zbyt wiele narzędzi z rzędu, więc system zakończył wykonywanie.
MISSING_THOUGHT_SIGNATURE W zapytaniu brakuje co najmniej 1 podpisu myśli.
MALFORMED_RESPONSE Zakończono z powodu nieprawidłowej odpowiedzi.
ESCALATION Żądanie zostało odfiltrowane przez regułę eskalacji.

GroundingAttribution

Atrybucja źródła, które przyczyniło się do powstania odpowiedzi.

Pola
sourceId object (AttributionSourceId)

Tylko dane wyjściowe. Identyfikator źródła, które przyczyniło się do tej atrybucji.

content object (Content)

Treści źródłowe, na których opiera się to przypisanie.

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

AttributionSourceId

Identyfikator źródła, które przyczyniło się do tej atrybucji.

Pola
source Union type
Pole source może mieć tylko jedną z tych wartości:
groundingPassage object (GroundingPassageId)

Identyfikator fragmentu w tekście.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Identyfikator Chunk pobrany za pomocą narzędzia Semantic Retriever.

Zapis JSON
{

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

GroundingPassageId

Identyfikator części w GroundingPassage.

Pola
passageId string

Tylko dane wyjściowe. Identyfikator fragmentu pasującego do GenerateAnswerRequest GroundingPassage.id.

partIndex integer

Tylko dane wyjściowe. Indeks części w GenerateAnswerRequest GroundingPassage.content.

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

SemanticRetrieverChunk

Identyfikator Chunk pobrany za pomocą funkcji Semantic Retriever określonej w GenerateAnswerRequest przy użyciu SemanticRetrieverConfig.

Pola
source string

Tylko dane wyjściowe. Nazwa źródła zgodna z wartością SemanticRetrieverConfig.source w żądaniu. Przykład: corpora/123 lub corpora/123/documents/abc

chunk string

Tylko dane wyjściowe. Nazwa elementu Chunk zawierającego przypisany tekst. Przykład: corpora/123/documents/abc/chunks/xyz

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

GroundingMetadata

Metadane zwracane do klienta, gdy włączone jest ugruntowanie.

Pola
groundingChunks[] object (GroundingChunk)

Lista referencji pomocniczych pobranych z określonego źródła podstawowego. W przypadku przesyłania strumieniowego zawiera tylko fragmenty podstawowe, które nie zostały uwzględnione w metadanych podstawowych poprzednich odpowiedzi.

groundingSupports[] object (GroundingSupport)

Lista obsługiwanych funkcji oparcia na faktach.

webSearchQueries[] string

zapytania do wyszukiwarki internetowej, które umożliwiają kontynuowanie wyszukiwania w internecie;

imageSearchQueries[] string

Zapytania w wyszukiwaniu obrazów używane do oparcia na faktach.

searchEntryPoint object (SearchEntryPoint)

Opcjonalnie. Wpis w wyszukiwarce Google dotyczący dalszych wyszukiwań w internecie.

retrievalMetadata object (RetrievalMetadata)

Metadane związane z pobieraniem w procesie powiązania ze źródłem informacji.

googleMapsWidgetContextToken string

Opcjonalnie. Nazwa zasobu tokena kontekstu widżetu Map Google, którego można używać z widżetem PlacesContextElement do renderowania danych kontekstowych. Wypełniane tylko w przypadku włączenia powiązania ze źródłami informacji przy użyciu Map Google.

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

SearchEntryPoint

Punkt wejścia w wyszukiwarce Google.

Pola
renderedContent string

Opcjonalnie. Fragment treści internetowych, który można umieścić na stronie internetowej lub w komponencie WebView aplikacji.

sdkBlob string (bytes format)

Opcjonalnie. Zakodowany w formacie Base64 kod JSON reprezentujący tablicę krotek <wyszukiwane hasło, adres URL wyszukiwania>.

Ciąg zakodowany w formacie Base64.

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

GroundingChunk

Symbol GroundingChunk oznacza fragment dowodów potwierdzających, na których opiera się odpowiedź modelu. Może to być fragment z internetu, pobrany kontekst z pliku lub informacje z Map Google.

Pola
chunk_type Union type
Typ fragmentu. Pole chunk_type może mieć tylko jedną z tych wartości:
web object (Web)

Fragment z odpowiedzią z internetu.

image object (Image)

Opcjonalnie. Fragment oparcia na faktach z wyszukiwania obrazów.

retrievedContext object (RetrievedContext)

Opcjonalnie. Fragment powiązania ze źródłem informacji z kontekstu pobranego przez narzędzie do wyszukiwania plików.

maps object (Maps)

Opcjonalnie. Fragment powiązania ze źródłem informacji z Map Google.

Zapis JSON
{

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

Sieć

fragment z internetu,

Pola
uri string

Tylko dane wyjściowe. Odwołanie do identyfikatora URI fragmentu.

title string

Tylko dane wyjściowe. Tytuł fragmentu.

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

Obraz

Fragment z wyszukiwania obrazów.

Pola
sourceUri string

Identyfikator URI strony internetowej na potrzeby atrybucji.

imageUri string

Adres URL komponentu z obrazem.

title string

Tytuł strony internetowej, z której pochodzi obraz.

domain string

Domena główna strony internetowej, z której pochodzi obraz, np. „example.com”.

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

RetrievedContext

Fragment z kontekstu pobrany przez narzędzie do wyszukiwania plików.

Pola
customMetadata[] object (CustomMetadata)

Opcjonalnie. Metadane przekazywane przez użytkownika dotyczące pobranego kontekstu.

uri string

Opcjonalnie. Odwołanie do identyfikatora URI dokumentu pobierania semantycznego.

title string

Opcjonalnie. Tytuł dokumentu.

text string

Opcjonalnie. Tekst fragmentu.

fileSearchStore string

Opcjonalnie. Nazwa FileSearchStore zawierającego dokument. Przykład: fileSearchStores/123

pageNumber integer

Opcjonalnie. Numer strony pobranego kontekstu (w stosownych przypadkach).

mediaId string

Opcjonalnie. Nazwa zasobu obiektu blob multimediów w wynikach wyszukiwania plików wielomodalnych. Format: fileSearchStores/{file_search_store_id}/media/{blobId}

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

CustomMetadata

Metadane przekazane przez użytkownika dotyczące obiektu GroundingFact.

Pola
key string

Klucz metadanych.

value Union type
Wartość metadanych. Może to być ciąg tekstowy, lista ciągów tekstowych lub liczba. Pole value może mieć tylko jedną z tych wartości:
stringValue string

Opcjonalnie. Wartość ciągu metadanych.

stringListValue object (StringList)

Opcjonalnie. Lista wartości tekstowych metadanych.

numericValue number

Opcjonalnie. Wartość liczbowa metadanych. Oczekiwany zakres tej wartości zależy od użytego konkretnego key.

Zapis JSON
{
  "key": string,

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

StringList

Lista wartości w formie ciągów znaków.

Pola
values[] string

Wartości ciągu tekstowego na liście.

Zapis JSON
{
  "values": [
    string
  ]
}

Mapy

Fragment groundingu z Map Google. Fragment Map odpowiada jednemu miejscu.

Pola
uri string

Identyfikator URI miejsca.

title string

Nazwa miejsca.

text string

Tekstowy opis odpowiedzi dotyczącej miejsca.

placeId string

Identyfikator miejsca w formacie places/{placeId}. Użytkownik może użyć tego identyfikatora, aby wyszukać to miejsce.

placeAnswerSources object (PlaceAnswerSources)

Źródła, które dostarczają odpowiedzi na pytania o funkcje danego miejsca w Mapach Google.

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

PlaceAnswerSources

Zbiór źródeł, które zawierają odpowiedzi na pytania o funkcje danego miejsca w Mapach Google. Każda wiadomość PlaceAnswerSources odpowiada konkretnemu miejscu w Mapach Google. Narzędzie Map Google korzystało z tych źródeł, aby odpowiadać na pytania dotyczące funkcji miejsca (np. „Czy Bar Foo ma Wi-Fi?” lub „Czy Foo Bar jest przystosowany do potrzeb osób na wózkach inwalidzkich?”). Obecnie obsługujemy tylko fragmenty opinii jako źródła.

Pola
reviewSnippets[] object (ReviewSnippet)

fragmenty opinii, które są używane do generowania odpowiedzi na pytania o funkcje danego miejsca w Mapach Google;

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

ReviewSnippet

Zawiera fragment opinii użytkownika, który odpowiada na pytanie o funkcje konkretnego miejsca w Mapach Google.

Pola
reviewId string

Identyfikator fragmentu opinii.

googleMapsUri string

Link do opinii użytkownika w Mapach Google.

title string

Tytuł opinii.

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

GroundingSupport

Obsługa oparcia na faktach.

Pola
groundingChunkIndices[] integer

Opcjonalnie. Lista indeksów (w „grounding_chunk” w response.candidate.grounding_metadata) określających cytaty powiązane z roszczeniem. Na przykład [1,3,4] oznacza, że grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] to pobrane treści przypisane do twierdzenia. Jeśli odpowiedź jest przesyłana strumieniowo, indeksy groundingChunkIndices odnoszą się do indeksów we wszystkich odpowiedziach. Obowiązkiem klienta jest gromadzenie fragmentów uzasadniających ze wszystkich odpowiedzi (z zachowaniem tej samej kolejności).

confidenceScores[] number

Opcjonalnie. Wskaźnik ufności dotyczący źródeł informacji. Ma zakres od 0 do 1. 1 oznacza największą pewność. Ta lista musi mieć taki sam rozmiar jak lista groundingChunkIndices.

renderedParts[] integer

Tylko dane wyjściowe. Indeksy w polu parts treści kandydata. Te indeksy określają, które wyrenderowane części są powiązane z tym źródłem pomocy.

segment object (Segment)

Segment treści, do którego należy ten rodzaj pomocy.

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

Segment

Segment treści.

Pola
partIndex integer

Indeks obiektu Part w obiekcie Content nadrzędnym.

startIndex integer

Indeks początkowy w danym obiekcie Part (mierzony w bajtach). Przesunięcie od początku części (włącznie), zaczynające się od zera.

endIndex integer

Indeks końcowy w danym elemencie, mierzony w bajtach. Przesunięcie od początku części (wykluczające), zaczynające się od zera.

text string

Tekst odpowiadający segmentowi z odpowiedzi.

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

RetrievalMetadata

Metadane związane z pobieraniem w procesie powiązania ze źródłem informacji.

Pola
googleSearchDynamicRetrievalScore number

Opcjonalnie. Ocena wskazująca, na ile informacje z wyszukiwarki Google mogą pomóc w odpowiedzi na prompt. Wynik mieści się w zakresie [0, 1], gdzie 0 oznacza najmniejsze prawdopodobieństwo, a 1 – największe. Ten wynik jest wypełniany tylko wtedy, gdy włączone jest powiązanie ze źródłem informacji przy użyciu wyszukiwarki Google i dynamiczne pobieranie. Będzie on porównywany z wartością progową, aby określić, czy uruchomić wyszukiwanie w Google.

Zapis JSON
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Wynik logprobs

Pola
topCandidates[] object (TopCandidates)

Długość = łączna liczba kroków dekodowania.

chosenCandidates[] object (Candidate)

Długość = łączna liczba kroków dekodowania. Wybrane kandydatury mogą, ale nie muszą znajdować się w topCandidates.

logProbabilitySum number

Suma prawdopodobieństw logarytmicznych wszystkich tokenów.

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

TopCandidates

Kandydaci z najwyższym prawdopodobieństwem logarytmicznym na każdym etapie dekodowania.

Pola
candidates[] object (Candidate)

Posortowane według prawdopodobieństwa logarytmicznego w kolejności malejącej.

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

Kandydat

Kandydat na token i wynik logprobs.

Pola
token string

Wartość ciągu tokena kandydata.

tokenId integer

Wartość identyfikatora tokena kandydata.

logProbability number

Logarytmiczne prawdopodobieństwo kandydata.

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

UrlContextMetadata

Metadane związane z narzędziem do pobierania kontekstu adresu URL.

Pola
urlMetadata[] object (UrlMetadata)

Lista kontekstów adresu URL.

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

UrlMetadata

Kontekst pobierania pojedynczego adresu URL.

Pola
retrievedUrl string

Adres URL pobrany przez narzędzie.

urlRetrievalStatus enum (UrlRetrievalStatus)

Stan pobierania adresu URL.

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

UrlRetrievalStatus

Stan pobierania adresu URL.

Wartości w polu enum
URL_RETRIEVAL_STATUS_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
URL_RETRIEVAL_STATUS_SUCCESS Adres URL został pobrany.
URL_RETRIEVAL_STATUS_ERROR Nie udało się pobrać adresu URL z powodu błędu.
URL_RETRIEVAL_STATUS_PAYWALL Nie udało się pobrać adresu URL, ponieważ treść znajduje się za paywallem.
URL_RETRIEVAL_STATUS_UNSAFE Nie udało się pobrać adresu URL, ponieważ treść jest niebezpieczna.

CitationMetadata

Zbiór atrybucji źródła dla danego fragmentu treści.

Pola
citationSources[] object (CitationSource)

Cytaty ze źródeł dotyczące konkretnej odpowiedzi.

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

CitationSource

Cytat ze źródła dotyczący fragmentu konkretnej odpowiedzi.

Pola
startIndex integer

Opcjonalnie. Początek segmentu odpowiedzi przypisanego do tego źródła.

Indeks wskazuje początek segmentu (mierzony w bajtach).

endIndex integer

Opcjonalnie. Koniec przypisanego segmentu (wyłącznie).

uri string

Opcjonalnie. Identyfikator URI przypisany jako źródło fragmentu tekstu.

license string

Opcjonalnie. Licencja projektu w GitHubie, który jest przypisany jako źródło segmentu.

W przypadku cytatów z kodu wymagane są informacje o licencji.

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

HarmCategory

Kategoria oceny.

Kategorie te obejmują różne rodzaje szkód, które deweloperzy mogą chcieć dostosować.

Wartości w polu enum
HARM_CATEGORY_UNSPECIFIED Kategoria nie jest określona.
HARM_CATEGORY_DEROGATORY PaLM – negatywne lub szkodliwe komentarze dotyczące tożsamości innej osoby lub cech chronionych.
HARM_CATEGORY_TOXICITY PaLM – treści niegrzeczne, obraźliwe lub wulgarne.
HARM_CATEGORY_VIOLENCE PaLM – opisuje scenariusze przedstawiające przemoc wobec osoby lub grupy albo ogólne opisy drastycznych scen.
HARM_CATEGORY_SEXUAL PaLM – zawiera odniesienia do aktów seksualnych lub innych lubieżnych treści.
HARM_CATEGORY_MEDICAL PaLM – promuje niesprawdzone porady medyczne.
HARM_CATEGORY_DANGEROUS PaLM – treści niebezpieczne, które promują, wspierają lub ułatwiają podejmowanie szkodliwych działań.
HARM_CATEGORY_HARASSMENT Gemini – treści związane z nękaniem.
HARM_CATEGORY_HATE_SPEECH Gemini – wypowiedzi szerzące nienawiść i treści.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini – treści o charakterze jednoznacznie seksualnym.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini – treści niebezpieczne.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini – treści, które mogą być wykorzystywane do naruszania integralności obywatelskiej. WYCOFANO: zamiast tego użyj enableEnhancedCivicAnswers.

HARM_CATEGORY_JAILBREAK Gemini – prompty, które próbują obejść lub naruszyć wskazówki dotyczące bezpieczeństwa modelu (próby jailbreaku).

ModalityTokenCount

Zawiera informacje o liczbie tokenów dla jednego rodzaju danych.

Pola
modality enum (Modality)

Rodzaj powiązany z tą liczbą tokenów.

tokenCount integer

Liczba tokenów.

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

Modalność

Rodzaj części treści

Wartości w polu enum
MODALITY_UNSPECIFIED Nieokreślona modalność.
TEXT Zwykły tekst.
IMAGE Obraz.
VIDEO Film.
AUDIO Dźwięk
DOCUMENT Dokument, np. PDF.

SafetyRating

Ocena bezpieczeństwa treści.

Ocena bezpieczeństwa zawiera kategorię szkody i poziom prawdopodobieństwa szkody w tej kategorii dla danego materiału. Treści są klasyfikowane pod kątem bezpieczeństwa w kilku kategoriach szkodliwości, a prawdopodobieństwo klasyfikacji szkody jest tutaj uwzględnione.

Pola
category enum (HarmCategory)

Wymagane. Kategoria tej oceny.

probability enum (HarmProbability)

Wymagane. Prawdopodobieństwo, że te treści są szkodliwe.

blocked boolean

Czy te treści zostały zablokowane z powodu tej oceny?

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

HarmProbability

Prawdopodobieństwo, że dany materiał jest szkodliwy.

System klasyfikacji podaje prawdopodobieństwo, że treść jest niebezpieczna. Nie wskazuje to stopnia szkodliwości treści.

Wartości w polu enum
HARM_PROBABILITY_UNSPECIFIED Prawdopodobieństwo nie zostało określone.
NEGLIGIBLE Treści mają znikome szanse na bycie niebezpiecznymi.
LOW Treści mają niskie prawdopodobieństwo bycia niebezpiecznymi.
MEDIUM Istnieje średnie prawdopodobieństwo, że treść jest niebezpieczna.
HIGH Treści z dużym prawdopodobieństwem są niebezpieczne.

SafetySetting

Ustawienie bezpieczeństwa wpływające na blokowanie treści ze względu na bezpieczeństwo.

Przekazanie ustawienia bezpieczeństwa dla kategorii zmienia dopuszczalne prawdopodobieństwo zablokowania treści.

Pola
category enum (HarmCategory)

Wymagane. Kategoria tego ustawienia.

threshold enum (HarmBlockThreshold)

Wymagane. Określa próg prawdopodobieństwa, przy którym szkodliwe treści są blokowane.

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

HarmBlockThreshold

Blokuj przy określonym prawdopodobieństwie wystąpienia szkodliwych treści i powyżej niego.

Wartości w polu enum
HARM_BLOCK_THRESHOLD_UNSPECIFIED Próg nie został określony.
BLOCK_LOW_AND_ABOVE Treści z oznaczeniem NEGLIGIBLE będą dozwolone.
BLOCK_MEDIUM_AND_ABOVE Treści o poziomach NEGLIGIBLE i LOW będą dozwolone.
BLOCK_ONLY_HIGH Treści o poziomach ryzyka ZANIECHANIE, NISKI i ŚREDNI będą dozwolone.
BLOCK_NONE Wszystkie treści będą dozwolone.
OFF Wyłącz filtr bezpieczeństwa.

ServiceTier

Poziom usług żądania.

Wartości w polu enum
unspecified Domyślny typ usługi, czyli Standard.
standard Standardowy typ usług.
flex Typ usług Flex.
priority Poziom usług priorytetowych.

Treść

Podstawowy typ danych strukturalnych zawierający wieloczęściową treść wiadomości.

Content zawiera pole role, które określa producenta Content, oraz pole parts zawierające dane wieloczęściowe, które zawierają treść tury wiadomości.

Pola
parts[] object (Part)

uporządkowane Parts, które stanowią jedną wiadomość. Poszczególne części mogą mieć różne typy MIME.

role string

Opcjonalnie. Producent treści. Musi to być „user” lub „model”.

Przydatne w przypadku rozmów wieloetapowych. W innych przypadkach można pozostawić to pole puste lub nie ustawiać go.

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

Część

Typ danych zawierający multimedia, które są częścią wieloczęściowej wiadomości Content.

Part to dane, z którymi powiązany jest typ danych. Part może zawierać tylko jeden z akceptowanych typów w Part.data.

Part musi mieć stały typ MIME IANA identyfikujący typ i podtyp multimediów, jeśli pole inlineData jest wypełnione surowymi bajtami.

Pola
thought boolean

Opcjonalnie. Wskazuje, czy część została wygenerowana przez model.

thoughtSignature string (bytes format)

Opcjonalnie. Nieprzezroczysty podpis dotyczący myśli, który można ponownie wykorzystać w kolejnych żądaniach.

Ciąg zakodowany w formacie Base64.

partMetadata object (Struct format)

Niestandardowe metadane powiązane z elementem. Agenci korzystający z genai.Part jako reprezentacji treści mogą potrzebować śledzenia dodatkowych informacji. Może to być na przykład nazwa pliku lub źródła, z którego pochodzi część, lub sposób multipleksowania wielu strumieni części.

mediaResolution object (MediaResolution)

Opcjonalnie. Rozdzielczość multimediów wejściowych.

mediaProcessing enum (MediaProcessing)

Opcjonalnie. Jak model przetwarza multimedia w tej części, aby je zrozumieć. Ma znaczenie tylko w przypadku części wideo (inlineData lub fileData z mime wideo). Części inne niż wideo ignorują to pole.

data Union type
Pole data może mieć tylko jedną z tych wartości:
text string

Tekst wbudowany.

inlineData object (Blob)

Bajty multimediów w tekście.

functionCall object (FunctionCall)

Prognoza FunctionCall zwrócona przez model, która zawiera ciąg znaków reprezentujący FunctionDeclaration.name z argumentami i ich wartościami.

functionResponse object (FunctionResponse)

Dane wyjściowe funkcji FunctionCall, które zawierają ciąg znaków reprezentujący FunctionDeclaration.name i uporządkowany obiekt JSON zawierający dane wyjściowe funkcji, są używane jako kontekst dla modelu.

fileData object (FileData)

Dane oparte na identyfikatorze URI.

executableCode object (ExecutableCode)

Kod wygenerowany przez model, który ma zostać wykonany.

codeExecutionResult object (CodeExecutionResult)

Wynik wykonania funkcji ExecutableCode.

toolCall object (ToolCall)

Wywołanie narzędzia po stronie serwera. To pole zostanie wypełnione, gdy model przewidzi wywołanie narzędzia, które powinno zostać wykonane na serwerze. Klient powinien odesłać tę wiadomość do interfejsu API.

toolResponse object (ToolResponse)

Dane wyjściowe uruchomienia ToolCall po stronie serwera. To pole jest wypełniane przez klienta wynikami wykonania odpowiedniego ToolCall.

metadata Union type
Określa dodatkowe przetwarzanie wstępne danych. Pole metadata może mieć tylko jedną z tych wartości:
videoMetadata object (VideoMetadata)

Opcjonalnie. metadane filmu, Metadane należy podać tylko wtedy, gdy dane filmu są prezentowane w polu inlineData lub fileData.

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

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

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

Blob

Nieprzetworzone bajty multimediów.

Tekst nie powinien być wysyłany jako surowe bajty. Użyj pola „text”.

Pola
mimeType string

Standardowy typ MIME danych źródłowych zgodny z IANA. Przykłady obsługiwanych typów: - Obrazy: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Dźwięk: audio/*, video/audio/s16le, video/audio/wav - Wideo: video/* - Tekst: 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 - Aplikacje: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Więcej informacji znajdziesz w sekcji Obsługiwane formaty plików. //

data string (bytes format)

Nieprzetworzone bajty formatów multimedialnych.

Ciąg zakodowany w formacie Base64.

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

FunctionCall

Prognoza FunctionCall zwrócona przez model, która zawiera ciąg znaków reprezentujący FunctionDeclaration.name z argumentami i ich wartościami.

Pola
id string

Opcjonalnie. Unikalny identyfikator wywołania funkcji. Jeśli to pole jest wypełnione, klient musi wykonać functionCall i zwrócić odpowiedź z pasującym id.

name string

Wymagane. Nazwa funkcji do wywołania. Musi zawierać litery a–z, A–Z, cyfry 0–9 lub podkreślenia i myślniki. Maksymalna długość to 128 znaków.

args object (Struct format)

Opcjonalnie. Parametry funkcji i wartości w formacie obiektu JSON.

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

FunctionResponse

Dane wyjściowe z FunctionCall, które zawierają ciąg znaków reprezentujący FunctionDeclaration.name i uporządkowany obiekt JSON zawierający dane wyjściowe funkcji, są używane jako kontekst dla modelu. Powinien zawierać wynik FunctionCall na podstawie prognozy modelu.

Pola
id string

Opcjonalnie. Identyfikator wywołania funkcji, do którego odnosi się ta odpowiedź. Wypełniane przez klienta w celu dopasowania do odpowiedniego wywołania funkcji id.

name string

Wymagane. Nazwa funkcji do wywołania. Musi zawierać litery a–z, A–Z, cyfry 0–9 lub podkreślenia i myślniki. Maksymalna długość to 128 znaków.

response object (Struct format)

Wymagane. Odpowiedź funkcji w formacie obiektu JSON. Wywołujący mogą używać dowolnych kluczy pasujących do składni funkcji, aby zwracać dane wyjściowe funkcji, np. „output”, „result” itp. W szczególności, jeśli wywołanie funkcji nie powiodło się, odpowiedź może zawierać klucz „error”, aby zwrócić modelowi szczegóły błędu.

Elementy multimedialne można uwzględnić, używając obiektu podrzędnego zawierającego pojedynczy klucz „$ref”, którego wartością jest inlineData.display_name FunctionResponsePart zawierającego multimedia. Zobacz https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Opcjonalnie. Uporządkowane Parts, które stanowią odpowiedź funkcji. Poszczególne części mogą mieć różne typy MIME IANA.

willContinue boolean

Opcjonalnie. Sygnalizuje, że wywołanie funkcji jest kontynuowane i zostaną zwrócone kolejne odpowiedzi, co spowoduje przekształcenie wywołania funkcji w generator. Ma zastosowanie tylko do wywołań funkcji NON_BLOCKING, w przeciwnym razie jest ignorowana. Jeśli ma wartość Fałsz, przyszłe odpowiedzi nie będą brane pod uwagę. Można zwrócić pusty obiekt response z wartością willContinue=False, aby zasygnalizować zakończenie wywołania funkcji. Może to nadal powodować generowanie modelu. Aby uniknąć wywołania generowania i zakończyć wywołanie funkcji, ustaw dodatkowo scheduling na SILENT.

scheduling enum (Scheduling)

Opcjonalnie. Określa, jak odpowiedź powinna być zaplanowana w rozmowie. Dotyczy tylko wywołań funkcji NON_BLOCKING. W innych przypadkach jest ignorowana. Domyślna wartość to WHEN_IDLE.

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

FunctionResponsePart

Typ danych zawierający multimedia, które są częścią wiadomości FunctionResponse.

FunctionResponsePart to dane, z którymi powiązany jest typ danych. FunctionResponsePart może zawierać tylko jeden z akceptowanych typów w FunctionResponsePart.data.

FunctionResponsePart musi mieć stały typ MIME IANA identyfikujący typ i podtyp multimediów, jeśli pole inlineData jest wypełnione surowymi bajtami.

Pola
data Union type
Dane z części odpowiedzi funkcji. Pole data może mieć tylko jedną z tych wartości:
inlineData object (FunctionResponseBlob)

Bajty multimediów w tekście.

Zapis JSON
{

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

FunctionResponseBlob

Surowe bajty multimediów w odpowiedzi funkcji.

Tekst nie powinien być wysyłany jako surowe bajty. Użyj pola „FunctionResponse.response”.

Pola
mimeType string

Standardowy typ MIME danych źródłowych zgodny z IANA. Przykłady: - image/png - image/jpeg Jeśli podasz nieobsługiwany typ MIME, zwrócimy błąd. Pełną listę obsługiwanych typów znajdziesz w sekcji Obsługiwane formaty plików.

data string (bytes format)

Nieprzetworzone bajty formatów multimedialnych.

Ciąg zakodowany w formacie Base64.

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

Harmonogram

Określa, jak odpowiedź powinna być zaplanowana w rozmowie.

Wartości w polu enum
SCHEDULING_UNSPECIFIED Ta wartość nie jest używana.
SILENT Dodaj wynik tylko do kontekstu rozmowy. Nie przerywaj ani nie wywołuj generowania.
WHEN_IDLE Dodaj wynik do kontekstu rozmowy i poproś o wygenerowanie danych wyjściowych bez przerywania trwającego procesu generowania.
INTERRUPT Dodaj wynik do kontekstu rozmowy, przerwij trwające generowanie i poproś o wygenerowanie danych wyjściowych.

FileData

Dane oparte na identyfikatorze URI.

Pola
mimeType string

Opcjonalnie. Standardowy typ MIME danych źródłowych zgodny z IANA.

fileUri string

Wymagane. URI.

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

ExecutableCode

Kod wygenerowany przez model, który ma zostać wykonany, a wynik zwrócony do modelu.

Generowany tylko podczas korzystania z narzędzia CodeExecution, w którym kod jest wykonywany automatycznie, a także generowany jest odpowiedni CodeExecutionResult.

Pola
id string

Opcjonalnie. Unikalny identyfikator części ExecutableCode. Serwer zwraca CodeExecutionResult z pasującym id.

language enum (Language)

Wymagane. Język programowania code.

code string

Wymagane. Kod do wykonania.

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

Język

Obsługiwane języki programowania dla wygenerowanego kodu.

Wartości w polu enum
LANGUAGE_UNSPECIFIED Nieokreślony język. Nie należy używać tej wartości.
PYTHON Python >= 3.10 z dostępnymi bibliotekami numpy i simpy. Domyślnym językiem jest Python.

CodeExecutionResult

Wynik wykonania funkcji ExecutableCode.

Generowane tylko wtedy, gdy używane jest narzędzie CodeExecution.

Pola
id string

Opcjonalnie. Identyfikator części ExecutableCode, której dotyczy ten wynik. Wypełnione tylko wtedy, gdy odpowiedni element ExecutableCode ma identyfikator.

outcome enum (Outcome)

Wymagane. Wynik wykonania kodu.

output string

Opcjonalnie. Zawiera stdout, gdy wykonanie kodu zakończy się powodzeniem, a w innych przypadkach stderr lub inny opis.

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

Wynik

Wyliczenie możliwych wyników wykonania kodu.

Wartości w polu enum
OUTCOME_UNSPECIFIED Stan nieokreślony. Nie należy używać tej wartości.
OUTCOME_OK Wykonanie kodu zakończyło się pomyślnie. output zawiera standardowe wyjście, jeśli takie istnieje.
OUTCOME_FAILED Nie udało się wykonać kodu. output zawiera stderr i stdout, jeśli występują.
OUTCOME_DEADLINE_EXCEEDED Wykonanie kodu trwało zbyt długo i zostało anulowane. Może być obecny częściowy element output.

ToolCall

Przewidywana wartość ToolCall po stronie serwera zwrócona przez model. Ta wiadomość zawiera informacje o narzędziu, którego model chce użyć. Klient NIE powinien wykonywać tego ToolCall. Zamiast tego klient powinien przekazać ten obiekt ToolCall z powrotem do interfejsu API w kolejnej turze w ramach wiadomości Content wraz z odpowiednim obiektem ToolResponse.

Pola
id string

Opcjonalnie. Unikalny identyfikator wywołania narzędzia. Serwer zwraca odpowiedź narzędzia z pasującym id.

toolName string

Opcjonalnie. Nazwa wywołanego narzędzia.

toolType enum (ToolType)

Wymagane. Typ wywołanego narzędzia.

args object (Struct format)

Opcjonalnie. Argumenty wywołania narzędzia. Przykład: {"arg1" : "value1", "arg2" : "value2" , ...}

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

ToolType

Typ narzędzia w wywołaniu funkcji.

Wartości w polu enum
TOOL_TYPE_UNSPECIFIED Nieokreślony typ narzędzia.
GOOGLE_SEARCH_WEB Narzędzie wyszukiwarki Google, które jest mapowane na Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Narzędzie do wyszukiwania obrazów, które jest mapowane na Tool.google_search.search_types.image_search.
URL_CONTEXT Narzędzie kontekstu adresu URL, które jest powiązane z polem Tool.url_context.
GOOGLE_MAPS Narzędzie Map Google, które jest mapowane na Tool.google_maps.

ToolResponse

Dane wyjściowe uruchomienia ToolCall po stronie serwera. Ta wiadomość zawiera wyniki wywołania narzędzia zainicjowanego przez ToolCall z modelu. Klient powinien przekazać ten parametr ToolResponse z powrotem do interfejsu API w kolejnej turze w ramach wiadomości Content wraz z odpowiednim parametrem ToolCall.

Pola
id string

Opcjonalnie. Identyfikator wywołania narzędzia, którego dotyczy ta odpowiedź.

toolType enum (ToolType)

Wymagane. Typ wywołanego narzędzia, który pasuje do wartości toolType w odpowiednim polu ToolCall.

response object (Struct format)

Opcjonalnie. Odpowiedź narzędzia.

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

VideoMetadata

Wycofana: zamiast niej używaj zasady GenerateContentRequest.processing_options. Metadane opisują wejściowe treści wideo.

Pola
startOffset string (Duration format)

Opcjonalnie. Przesunięcie początku filmu.

Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „s”. Przykład: "3.5s".

endOffset string (Duration format)

Opcjonalnie. Przesunięcie końca filmu.

Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „s”. Przykład: "3.5s".

fps number

Opcjonalnie. Liczba klatek na sekundę filmu przesłanego do modelu. Jeśli nie podasz żadnej opcji, domyślna wartość to 1.0. Zakres klatek na sekundę to (0,0, 24,0].

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

MediaResolution

Rozdzielczość multimediów na potrzeby tokenizacji.

Pola
value Union type
Poziom rozdzielczości multimediów. Pole value może mieć tylko jedną z tych wartości:
level enum (Level)

Jakość tokenizacji używana w przypadku danego medium. w przypadku pomocy dotyczącej Gemini API.

Zapis JSON
{

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

Poziom

Poziom rozdzielczości multimediów.

Wartości w polu enum
MEDIA_RESOLUTION_UNSPECIFIED Rozdzielczość multimediów nie została ustawiona.
MEDIA_RESOLUTION_LOW Rozdzielczość multimediów ustawiona na niską.
MEDIA_RESOLUTION_MEDIUM Rozdzielczość multimediów ustawiona na średnią.
MEDIA_RESOLUTION_HIGH Rozdzielczość multimediów ustawiona na wysoką.
MEDIA_RESOLUTION_ULTRA_HIGH Rozdzielczość multimediów ustawiona na ultrawysoką.

MediaProcessing

Jak model przetwarza media wejściowe, aby je zrozumieć.

Wartości w polu enum
MEDIA_PROCESSING_UNSPECIFIED Domyślny: Wykorzystuje przetwarzanie specyficzne dla modelu (3.5 Pro+ -> AGENTIC, starsze modele -> STATIC).
STATIC Wyodrębnianie klatek ze stałą liczbą klatek na sekundę. Wszystkie klatki umieszczone w kontekście.
AGENTIC Dynamiczna nawigacja oparta na modelu. Zalecany do większości zastosowań.

Środowisko

Środowisko wykonawcze agenta.

Pola
id string

Wymagane. Tylko dane wyjściowe. Identyfikator środowiska.

sources[] object (Source)

Źródła do zamontowania w środowisku.

created string

Tylko dane wyjściowe. Czas utworzenia środowiska w formacie ISO 8601 (RRRR-MM-DDThh:mm:ssZ).

updated string

Tylko dane wyjściowe. Czas ostatniej aktualizacji środowiska w formacie ISO 8601 (RRRR-MM-DDThh:mm:ssZ).

lastAccessed string

Tylko dane wyjściowe. Czas ostatniego dostępu do środowiska w formacie ISO 8601 (RRRR-MM-DDThh:mm:ssZ).

status enum (Status)

Tylko dane wyjściowe. Stan kontenera środowiska.

fileCount string (int64 format)

Tylko dane wyjściowe. Liczba plików w środowisku (tylko dane wyjściowe).

sizeBytes string (int64 format)

Tylko dane wyjściowe. Łączny rozmiar plików środowiska w bajtach (tylko dane wyjściowe).

network Union type
Konfiguracja sieci dla środowiska. Pole network może mieć tylko jedną z tych wartości:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Zezwalaj tylko na określone domeny.

networkMode enum (NetworkMode)

Tryb ruchu wychodzącego z sieci.

Zapis JSON
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

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

Stan

Stan środowiska.

Wartości w polu enum
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Tryb ruchu wychodzącego z sieci w przypadku konfiguracji nieznajdujących się na liście dozwolonych.

Wartości w polu enum
NETWORK_MODE_UNSPECIFIED Wartość domyślna. Nieużywane.
DISABLED Cały ruch wychodzący z sieci jest blokowany.

Schemat

Obiekt Schema umożliwia zdefiniowanie typów danych wejściowych i wyjściowych. Mogą to być obiekty, ale też typy proste i tablice. Reprezentuje wybrany podzbiór obiektu schematu OpenAPI 3.0.

Pola
type enum (Type)

Wymagane. Typ danych.

format string

Opcjonalnie. Format danych. Dozwolona jest dowolna wartość, ale większość z nich nie wywołuje żadnych specjalnych funkcji.

title string

Opcjonalnie. Tytuł schematu.

description string

Opcjonalnie. Krótki opis parametru. Może to zawierać przykłady użycia. Opis parametru może być sformatowany w Markdown.

nullable boolean

Opcjonalnie. Wskazuje, czy wartość może być pusta.

enum[] string

Opcjonalnie. Możliwe wartości elementu Type.STRING w formacie wyliczeniowym. Na przykład możemy zdefiniować wyliczenie Direction w ten sposób : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Opcjonalnie. Maksymalna liczba elementów w przypadku Type.ARRAY.

minItems string (int64 format)

Opcjonalnie. Minimalna liczba elementów dla Type.ARRAY.

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

Opcjonalnie. Właściwości Type.OBJECT.

Obiekt zawierający listę par "key": value. Przykład: { "name": "wrench", "mass": "1.3kg", "count": "3" }

required[] string

Opcjonalnie. Wymagane właściwości Type.OBJECT.

minProperties string (int64 format)

Opcjonalnie. Minimalna liczba właściwości dla Type.OBJECT.

maxProperties string (int64 format)

Opcjonalnie. Maksymalna liczba właściwości dla Type.OBJECT.

minLength string (int64 format)

Opcjonalnie. POLA SCHEMATU DLA TYPU STRING Minimalna długość typu STRING

maxLength string (int64 format)

Opcjonalnie. Maksymalna długość Type.STRING

pattern string

Opcjonalnie. Wzorzec typu STRING, który ogranicza ciąg znaków do wyrażenia regularnego.

example value (Value format)

Opcjonalnie. Przykład obiektu. Wypełniane tylko wtedy, gdy obiekt jest elementem głównym.

anyOf[] object (Schema)

Opcjonalnie. Wartość powinna być weryfikowana na podstawie dowolnego (co najmniej jednego) podschematu na liście.

propertyOrdering[] string

Opcjonalnie. Kolejność właściwości. Nie jest to standardowe pole w specyfikacji Open API. Służy do określania kolejności właściwości w odpowiedzi.

default value (Value format)

Opcjonalnie. Wartość domyślna pola. Zgodnie ze schematem JSON to pole jest przeznaczone dla generatorów dokumentacji i nie wpływa na weryfikację. Dlatego jest on uwzględniany i ignorowany, aby deweloperzy wysyłający schematy z polem default nie otrzymywali błędów związanych z nieznanym polem.

items object (Schema)

Opcjonalnie. Schemat elementów typu Type.ARRAY.

minimum number

Opcjonalnie. POLA SCHEMATU DLA TYPÓW INTEGER I NUMBER Minimalna wartość typu Type.INTEGER i Type.NUMBER

maximum number

Opcjonalnie. Maksymalna wartość Type.INTEGER i Type.NUMBER

Zapis JSON
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

Typ

Typ zawiera listę typów danych OpenAPI zdefiniowanych na stronie https://spec.openapis.org/oas/v3.0.3#data-types.

Wartości w polu enum
TYPE_UNSPECIFIED Nie określono, nie należy używać.
STRING Typ ciągu znaków.
NUMBER Typ liczby.
INTEGER Typ liczby całkowitej.
BOOLEAN Typ logiczny.
ARRAY Typ tablicy.
OBJECT Typ obiektu.
NULL Typ null.

Narzędzie

Szczegóły narzędzia, których model może użyć do wygenerowania odpowiedzi.

Tool to fragment kodu, który umożliwia systemowi interakcję z systemami zewnętrznymi w celu wykonania działania lub zestawu działań wykraczających poza wiedzę i zakres modelu.

Następny identyfikator: 17

Pola
functionDeclarations[] object (FunctionDeclaration)

Opcjonalnie. Lista FunctionDeclarations dostępnych dla modelu, których można używać do wywoływania funkcji.

Model lub system nie wykonuje funkcji. Zamiast tego zdefiniowana funkcja może być zwracana jako FunctionCall z argumentami po stronie klienta do wykonania. Model może zdecydować się na wywołanie podzbioru tych funkcji, wypełniając w odpowiedzi pole FunctionCall. Kolejna tura rozmowy może zawierać FunctionResponse z kontekstem generowania Content.role „function” dla kolejnej tury modelu.

googleSearchRetrieval object (GoogleSearchRetrieval)

Opcjonalnie. Narzędzie do wyszukiwania obsługiwane przez wyszukiwarkę Google.

codeExecution object (CodeExecution)

Opcjonalnie. Umożliwia modelowi wykonywanie kodu w ramach generowania.

computerUse object (ComputerUse)

Opcjonalnie. Narzędzie umożliwiające modelowi bezpośrednią interakcję z komputerem. Jeśli ta opcja jest włączona, automatycznie wypełnia deklaracje funkcji dotyczące korzystania z komputera.

urlContext object (UrlContext)

Opcjonalnie. Narzędzie do pobierania kontekstu adresu URL.

mcpServers[] object (McpServer)

Opcjonalnie. Serwery MCP, z którymi chcesz się połączyć.

googleMaps object (GoogleMaps)

Opcjonalnie. Narzędzie, które umożliwia powiązanie odpowiedzi modelu z kontekstem geoprzestrzennym związanym z zapytaniem użytkownika.

Zapis JSON
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

Ustrukturyzowana reprezentacja deklaracji funkcji zgodnie ze specyfikacją OpenAPI 3.03. Deklaracja zawiera nazwę funkcji i parametry. FunctionDeclaration to reprezentacja bloku kodu, który może być używany przez model jako Tool i wykonywany przez klienta.

Pola
name string

Wymagane. Nazwa funkcji. Musi zawierać litery (a–z, A–Z), cyfry (0–9) lub podkreślenia, dwukropki, kropki i myślniki. Maksymalna długość to 128 znaków.

description string

Wymagane. Krótki opis funkcji.

behavior enum (Behavior)

Opcjonalnie. Określa zachowanie funkcji. Obecnie obsługiwane tylko przez metodę BidiGenerateContent.

parameters object (Schema)

Opcjonalnie. Opisuje parametry tej funkcji. Odpowiada kluczowi ciągu obiektu parametru Open API 3.03: nazwa parametru. W nazwach parametrów jest rozróżniana wielkość liter. Wartość schematu: schemat definiujący typ używany w przypadku parametru.

parametersJsonSchema value (Value format)

Opcjonalnie. Opisuje parametry funkcji w formacie schematu JSON. Schemat musi opisywać obiekt, którego właściwości są parametrami funkcji. Na przykład:

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

To pole wyklucza się z polem parameters.

response object (Schema)

Opcjonalnie. Opisuje dane wyjściowe tej funkcji w formacie schematu JSON. Odpowiada obiektowi odpowiedzi Open API 3.03. Schemat określa typ używany w wartości odpowiedzi funkcji.

responseJsonSchema value (Value format)

Opcjonalnie. Opisuje dane wyjściowe tej funkcji w formacie schematu JSON. Wartość określona przez schemat jest wartością odpowiedzi funkcji.

To pole wyklucza się z polem response.

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

Zachowanie

Definiuje zachowanie funkcji. Domyślna wartość to BLOCKING.

Wartości w polu enum
UNSPECIFIED Ta wartość nie jest używana.
BLOCKING Jeśli ta opcja jest ustawiona, system poczeka na odpowiedź funkcji, zanim będzie kontynuować rozmowę.
NON_BLOCKING Jeśli ta opcja jest ustawiona, system nie będzie czekać na odpowiedź funkcji. Zamiast tego będzie próbować obsługiwać odpowiedzi funkcji, gdy staną się dostępne, przy jednoczesnym utrzymaniu rozmowy między użytkownikiem a modelem.

GoogleSearchRetrieval

Narzędzie do pobierania publicznych danych z internetu na potrzeby ugruntowania, obsługiwane przez Google.

Pola
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Określa konfigurację dynamicznego pobierania dla danego źródła.

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

DynamicRetrievalConfig

Opisuje opcje dostosowywania dynamicznego pobierania.

Pola
mode enum (Mode)

Tryb predyktora, który ma być używany w dynamicznym pobieraniu.

dynamicThreshold number

Próg, który ma być używany w dynamicznym pobieraniu. Jeśli nie zostanie ustawiona, używana jest domyślna wartość systemowa.

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

Tryb

Tryb predyktora, który ma być używany w dynamicznym pobieraniu.

Wartości w polu enum
MODE_UNSPECIFIED Zawsze wywołuj pobieranie.
MODE_DYNAMIC Pobieranie jest uruchamiane tylko wtedy, gdy system uzna to za konieczne.

CodeExecution

Ten typ nie ma pól.

Narzędzie, które wykonuje kod wygenerowany przez model i automatycznie zwraca wynik do modelu.

Zobacz też ExecutableCodeCodeExecutionResult, które są generowane tylko podczas korzystania z tego narzędzia.

GoogleSearch

Typ narzędzia GoogleSearch. Narzędzie do obsługi wyszukiwarki Google w Modelu. Technologia Google.

Pola
timeRangeFilter object (Interval)

Opcjonalnie. Filtrowanie wyników wyszukiwania według określonego zakresu czasowego. Jeśli klienci ustawią godzinę rozpoczęcia, muszą też ustawić godzinę zakończenia (i odwrotnie).

searchTypes object (SearchTypes)

Opcjonalnie. Zestaw typów wyszukiwania do włączenia. Jeśli nie skonfigurujesz tego ustawienia, wyszukiwanie w internecie będzie domyślnie włączone.

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

Interwał

Reprezentuje przedział czasu zakodowany jako sygnatura czasowa rozpoczęcia (włącznie) i sygnatura czasowa zakończenia (wyłącznie).

Wartość początkowa musi być mniejsza lub równa wartości końcowej. Gdy czas rozpoczęcia jest równy czasowi zakończenia, przedział czasu jest pusty (nie pasuje do żadnego czasu). Jeśli nie podasz ani początku, ani końca, przedział będzie pasować do dowolnego czasu.

Pola
startTime string (Timestamp format)

Opcjonalnie. Początek przedziału (włącznie).

Jeśli została określona, sygnatura czasowa pasująca do tego przedziału musi być taka sama jak data rozpoczęcia lub późniejsza.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Opcjonalne. Koniec przedziału (wyłącznie).

Jeśli jest określona, sygnatura czasowa pasująca do tego przedziału musi być wcześniejsza niż czas zakończenia.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

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

SearchTypes

Różne typy wyszukiwania, które można włączyć w narzędziu GoogleSearch.

Pola
Zapis JSON
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

Ten typ nie ma pól.

Standardowe wyszukiwanie w internecie na potrzeby powiązania ze źródłem informacji i powiązanych konfiguracji.

ImageSearch

Ten typ nie ma pól.

Wyszukiwanie obrazem w celu określenia podstawy i powiązanych konfiguracji.

ComputerUse

Typ narzędzia Computer Use.

Pola
environment enum (Environment)

Wymagane. Środowisko, w którym wykonywana jest operacja.

excludedPredefinedFunctions[] string

Opcjonalnie. Domyślnie predefiniowane funkcje są uwzględniane w ostatecznym wywołaniu modelu. Niektóre z nich można wyraźnie wykluczyć z automatycznego uwzględniania. Może to służyć 2 celom: Używanie bardziej ograniczonej lub innej przestrzeni działań. 2. Ulepszanie definicji i instrukcji predefiniowanych funkcji.

enablePromptInjectionDetection boolean

Opcjonalnie. Określa, czy w przypadku żądania dotyczącego korzystania z komputera ma być włączone sprawdzanie wykrywania wstrzykiwania promptów.

disabledSafetyPolicies[] enum (SafetyPolicy)

Opcjonalnie. Wyłączone zasady bezpieczeństwa dotyczące korzystania z komputera.

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

Środowisko

Reprezentuje środowisko, w którym działa usługa, np. przeglądarkę internetową.

Wartości w polu enum
ENVIRONMENT_UNSPECIFIED Wartość domyślna to browser.
ENVIRONMENT_BROWSER Działa w przeglądarce.
ENVIRONMENT_MOBILE Działa w środowisku mobilnym.
ENVIRONMENT_DESKTOP Działa w środowisku komputerowym.

SafetyPolicy

Wstępnie zdefiniowane zasady bezpieczeństwa dotyczące korzystania z komputera.

Wartości w polu enum
SAFETY_POLICY_UNSPECIFIED Nieokreślone zasady bezpieczeństwa.
FINANCIAL_TRANSACTIONS Zasady bezpieczeństwa dotyczące transakcji finansowych.
SENSITIVE_DATA_MODIFICATION Zasady bezpieczeństwa dotyczące modyfikacji danych wrażliwych.
COMMUNICATION_TOOL Zasady bezpieczeństwa dotyczące narzędzi do komunikacji (np. Gmail, Google Chat, Meet).
ACCOUNT_CREATION Zasady bezpieczeństwa dotyczące tworzenia konta.
DATA_MODIFICATION Zasady bezpieczeństwa dotyczące modyfikacji danych.
LEGAL_TERMS_AND_AGREEMENTS Zasady bezpieczeństwa dotyczące warunków prawnych i umów.

UrlContext

Ten typ nie ma pól.

Narzędzie do pobierania kontekstu adresu URL.

FileSearch

Narzędzie FileSearch, które pobiera wiedzę z korpusów wyszukiwania semantycznego. Pliki są importowane do korpusów wyszukiwania semantycznego za pomocą interfejsu ImportFile API.

Pola
fileSearchStoreNames[] string

Wymagane. Nazwy elementów fileSearchStores, z których mają być pobierane dane. Przykład: fileSearchStores/my-file-search-store-123

metadataFilter string

Opcjonalnie. Filtr metadanych, który ma być stosowany do dokumentów i fragmentów pobranych semantycznie.

topK integer

Opcjonalnie. Liczba fragmentów do pobrania w ramach wyszukiwania semantycznego.

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

McpServer

Serwer MCP to serwer, który może być wywoływany przez model w celu wykonywania działań. Jest to serwer, który implementuje protokół MCP. Następny identyfikator: 6

Pola
name string

Nazwa serwera MCP.

transport Union type
Transport używany do łączenia się z serwerem MCPServer. Pole transport może mieć tylko jedną z tych wartości:
streamableHttpTransport object (StreamableHttpTransport)

Transport, który może przesyłać strumieniowo żądania i odpowiedzi HTTP.

Zapis JSON
{
  "name": string,

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

StreamableHttpTransport

Transport, który może przesyłać strumieniowo żądania i odpowiedzi HTTP. Następny identyfikator: 6

Pola
url string

Pełny adres URL punktu końcowego MCPServer. Przykład: „https://api.example.com/mcp”

headers map (key: string, value: string)

Opcjonalnie: pola nagłówków uwierzytelniania, limitów czasu itp. (w razie potrzeby).

Obiekt zawierający listę par "key": value. Przykład: { "name": "wrench", "mass": "1.3kg", "count": "3" }

timeout string (Duration format)

Limit czasu HTTP dla zwykłych operacji.

Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „s”. Przykład: "3.5s".

sseReadTimeout string (Duration format)

Limit czasu operacji odczytu SSE.

Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „s”. Przykład: "3.5s".

terminateOnClose boolean

Określa, czy zamknąć sesję klienta po zamknięciu transportu.

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

GoogleMaps

Narzędzie Google Maps, które zapewnia kontekst geoprzestrzenny dla zapytania użytkownika.

Pola
enableWidget boolean

Opcjonalnie. Określa, czy w obiekcie GroundingMetadata odpowiedzi ma być zwracany token kontekstu widżetu. Deweloperzy mogą używać tokena kontekstu widżetu do renderowania widżetu Map Google z kontekstem geoprzestrzennym związanym z miejscami, do których odwołuje się model w odpowiedzi.

Zapis JSON
{
  "enableWidget": boolean
}

Zasób REST: auth_tokens

Zasób: AuthToken

Żądanie utworzenia tymczasowego tokenu uwierzytelniania.

Pola
name string

Tylko dane wyjściowe. Identyfikator. sam token.

expireTime string (Timestamp format)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Opcjonalny czas, po którym wiadomości w sesjach BidiGenerateContent będą odrzucane, jeśli używany jest wynikowy token. (Gemini może przedwcześnie zamknąć sesję po tym czasie).

Jeśli nie jest ustawiony, domyślnie jest to 30 minut w przyszłości. Nowa wartość musi być mniejsza niż 20 godzin.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Czas, po którym nowe sesje Live API korzystające z tokena wynikającego z tego żądania zostaną odrzucone.

Jeśli nie zostanie ustawiony, domyślnie będzie wynosić 60 sekund. Nowa wartość musi być mniejsza niż 20 godzin.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Jeśli pole fieldMask jest puste i nie ma w nim znaku bidiGenerateContentSetup, efektywny komunikat BidiGenerateContentSetup jest pobierany z aktywnego połączenia z interfejsem API.

Jeśli pole maski jest puste i występuje bidiGenerateContentSetup is, to efektywna wiadomość BidiGenerateContentSetup jest w całości pobierana z bidiGenerateContentSetup w tym żądaniu. Wiadomość konfiguracyjna z połączenia z interfejsem Live API jest ignorowana.

Jeśli pole fieldMask nie jest puste, odpowiednie pola z bidiGenerateContentSetup zastąpią pola z wiadomości konfiguracyjnej w połączeniu z interfejsem Live API.

Jest to lista w pełni kwalifikowanych nazw pól rozdzielonych przecinkami. Przykład: "user.displayName,photo".

config Union type
Konfiguracja konkretnej metody dla wynikowego tokena. Pole config może mieć tylko jedną z tych wartości:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Konfiguracja specyficzna dla BidiGenerateContent.

uses integer

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Określa, ile razy można wykorzystać token. Jeśli ta wartość wynosi zero, nie jest stosowany żaden limit. Wznowienie sesji Live API nie jest liczone jako użycie. Jeśli nie określisz tu żadnej wartości, zostanie użyte ustawienie domyślne 1.

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

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

BidiGenerateContentSetup

Wiadomość, która ma zostać wysłana w pierwszym (i tylko w pierwszym) BidiGenerateContentClientMessage. Zawiera konfigurację, która będzie obowiązywać przez cały czas trwania strumieniowego wywołania RPC.

Przed wysłaniem kolejnych wiadomości klient powinien poczekać na wiadomość BidiGenerateContentSetupComplete.

Pola
model string

Wymagane. Nazwa zasobu modelu. Służy on jako identyfikator modelu.

Format: models/{model}

generationConfig object (GenerationConfig)

Opcjonalnie. Konfiguracja generowania.

Te pola nie są obsługiwane:

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

Opcjonalnie. Użytkownik podał instrukcje systemowe dla modelu.

Uwaga: w sekcjach należy używać tylko tekstu, a treści w każdej sekcji będą znajdować się w osobnym akapicie.

tools[] object (Tool)

Opcjonalnie. Lista Tools, której model może użyć do wygenerowania następnej odpowiedzi.

Tool to fragment kodu, który umożliwia systemowi interakcję z systemami zewnętrznymi w celu wykonania działania lub zestawu działań wykraczających poza wiedzę i zakres modelu.

realtimeInputConfig object (RealtimeInputConfig)

Opcjonalnie. Konfiguruje obsługę danych wejściowych w czasie rzeczywistym.

sessionResumption object (SessionResumptionConfig)

Opcjonalnie. Konfiguruje mechanizm wznawiania sesji.

Jeśli jest uwzględniony, serwer będzie wysyłać wiadomości SessionResumptionUpdate.

contextWindowCompression object (ContextWindowCompressionConfig)

Opcjonalnie. Konfiguruje mechanizm kompresji okna kontekstu.

Jeśli zostanie uwzględniony, serwer automatycznie zmniejszy rozmiar kontekstu, gdy przekroczy on skonfigurowaną długość.

inputAudioTranscription object (AudioTranscriptionConfig)

Opcjonalnie. Jeśli jest ustawiona, włącza transkrypcję głosowego wprowadzania tekstu. Transkrypcja jest zgodna z językiem wejściowego dźwięku, jeśli jest skonfigurowana.

outputAudioTranscription object (AudioTranscriptionConfig)

Opcjonalnie. Jeśli jest ustawiona, włącza transkrypcję wyjścia audio modelu. Transkrypcja jest zgodna z kodem języka określonym dla wyjściowego dźwięku, jeśli jest skonfigurowana.

historyConfig object (HistoryConfig)

Opcjonalnie. Konfiguruje wymianę historii między klientem a serwerem.

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

GenerationConfig

Opcje konfiguracji generowania modelu i danych wyjściowych. Nie wszystkie parametry można skonfigurować w przypadku każdego modelu.

Pola
stopSequences[] string

Opcjonalnie. Zestaw sekwencji znaków (maksymalnie 5), które zatrzymają generowanie danych wyjściowych. Jeśli zostanie określony, interfejs API zatrzyma się przy pierwszym wystąpieniu znaku stop_sequence. Sekwencja zatrzymania nie będzie częścią odpowiedzi.

responseMimeType string

Opcjonalnie. Typ MIME wygenerowanego tekstu kandydata. Obsługiwane typy MIME: text/plain (domyślny): dane wyjściowe w formacie tekstowym. application/json: odpowiedź JSON w proponowanych odpowiedziach. text/x.enum: ENUM jako odpowiedź w postaci ciągu znaków w proponowanych odpowiedziach. Listę wszystkich obsługiwanych typów MIME tekstu znajdziesz w dokumentacji.

responseSchema
(deprecated)
object (Schema)

Opcjonalnie. Schemat wyjściowy wygenerowanego tekstu kandydata. Schematy muszą być podzbiorem schematu OpenAPI i mogą być obiektami, typami prostymi lub tablicami.

Jeśli ten atrybut jest ustawiony, musi być też ustawiony zgodny atrybut responseMimeType. Zgodne typy MIME: application/json: schemat odpowiedzi JSON. Więcej informacji znajdziesz w przewodniku po generowaniu tekstu w formacie JSON.

_responseJsonSchema
(deprecated)
value (Value format)

Opcjonalnie. Schemat wyjściowy wygenerowanej odpowiedzi. Jest to alternatywa dla responseSchema, która akceptuje schemat JSON.

Jeśli jest ustawiona, wartość responseSchema musi zostać pominięta, ale responseMimeType jest wymagana.

Możesz wysłać pełny schemat JSON, ale nie wszystkie funkcje są obsługiwane. Obsługiwane są tylko te właściwości:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (w przypadku ciągów znaków i liczb)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (interpretowane tak samo jak anyOf)
  • properties
  • additionalProperties
  • required

Można też ustawić niestandardową właściwość propertyOrdering.

Odniesienia cykliczne są rozwijane w ograniczonym stopniu i dlatego mogą być używane tylko we właściwościach nieobowiązkowych. (Właściwości dopuszczające wartość null nie wystarczą). Jeśli w podschemacie ustawiona jest wartość $ref, nie można ustawić żadnych innych właściwości z wyjątkiem tych, które zaczynają się od $.

responseJsonSchema value (Value format)

Opcjonalnie. Szczegół wewnętrzny. Zamiast tego pola użyj zasady responseJsonSchema.

responseModalities[] enum (Modality)

Opcjonalnie. Żądane rodzaje odpowiedzi. Reprezentuje zestaw rodzajów danych, które model może zwrócić i które powinny znajdować się w odpowiedzi. Jest to dokładne dopasowanie do form odpowiedzi.

Model może obsługiwać wiele kombinacji obsługiwanych rodzajów danych. Jeśli żądane rodzaje nie pasują do żadnej z obsługiwanych kombinacji, zwracany jest błąd.

Pusta lista jest równoznaczna z żądaniem tylko tekstu.

candidateCount integer

Opcjonalnie. Liczba wygenerowanych odpowiedzi do zwrócenia. Jeśli nie podasz żadnej wartości, domyślnie zostanie użyta wartość 1. Pamiętaj, że ta funkcja nie działa w przypadku modeli poprzedniej generacji (rodzina Gemini 1.0).

maxOutputTokens integer

Opcjonalnie. Maksymalna liczba tokenów, które mają być uwzględnione w proponowanej odpowiedzi.

Uwaga: wartość domyślna różni się w zależności od modelu. Sprawdź atrybut Model.output_token_limit elementu Model zwróconego przez funkcję getModel.

temperature number

Opcjonalnie. Określa losowość danych wyjściowych.

Uwaga: wartość domyślna różni się w zależności od modelu. Sprawdź atrybut Model.temperature elementu Model zwróconego przez funkcję getModel.

Wartości mogą mieścić się w zakresie [0,0, 2,0].

topP number

Opcjonalnie. Maksymalne skumulowane prawdopodobieństwo tokenów, które należy wziąć pod uwagę podczas próbkowania.

Model korzysta z połączonego próbkowania Top-k i Top-p (nucleus).

Tokeny są sortowane na podstawie przypisanych im prawdopodobieństw, dzięki czemu brane są pod uwagę tylko najbardziej prawdopodobne tokeny. Próbkowanie Top-k bezpośrednio ogranicza maksymalną liczbę tokenów do rozważenia, a próbkowanie Nucleus ogranicza liczbę tokenów na podstawie prawdopodobieństwa skumulowanego.

Uwaga: wartość domyślna zależy od Model i jest określana przez atrybut Model.top_p zwracany przez funkcję getModel. Pusty atrybut topK oznacza, że model nie stosuje próbkowania top-k i nie zezwala na ustawianie atrybutu topK w żądaniach.

topK integer

Opcjonalnie. Maksymalna liczba tokenów do uwzględnienia podczas próbkowania.

Modele Gemini korzystają z próbkowania Top-p (nucleus) lub z kombinacji próbkowania Top-k i nucleus. Próbkowanie Top-K uwzględnia zbiór topK najbardziej prawdopodobnych tokenów. Modele działające z próbkowaniem jądrowym nie zezwalają na ustawienie topK.

Uwaga: wartość domyślna zależy od Model i jest określana przez atrybut Model.top_p zwracany przez funkcję getModel. Pusty atrybut topK oznacza, że model nie stosuje próbkowania top-k i nie zezwala na ustawianie atrybutu topK w żądaniach.

seed integer

Opcjonalnie. Wartość początkowa użyta do dekodowania. Jeśli nie zostanie ustawiona, żądanie używa losowo wygenerowanego ziarna.

presencePenalty number

Opcjonalnie. Kara za obecność zastosowana do logarytmicznych prawdopodobieństw kolejnego tokena, jeśli token został już użyty w odpowiedzi.

Ta kara jest binarna (włączona lub wyłączona) i nie zależy od liczby użyć tokena (po pierwszym). Użyj frequencyPenalty w przypadku kary, która wzrasta z każdym użyciem.

Dodatnia kara zniechęci do używania tokenów, które zostały już użyte w odpowiedzi, zwiększając słownictwo.

Ujemna kara zachęci do używania tokenów, które zostały już użyte w odpowiedzi, co zmniejszy słownictwo.

frequencyPenalty number

Opcjonalnie. Kara za częstotliwość zastosowana do logarytmicznych prawdopodobieństw następnego tokena, pomnożona przez liczbę wystąpień każdego tokena w dotychczasowej odpowiedzi.

Kara dodatnia zniechęca do używania tokenów, które zostały już użyte, proporcjonalnie do liczby ich użyć: im częściej token jest używany, tym trudniej jest modelowi użyć go ponownie, co zwiększa słownictwo odpowiedzi.

Uwaga: ujemna kara zachęci model do ponownego wykorzystywania tokenów proporcjonalnie do liczby ich użyć. Małe wartości ujemne zmniejszą słownictwo odpowiedzi. Większe wartości ujemne spowodują, że model zacznie powtarzać typowy token, aż osiągnie limit maxOutputTokens.

responseLogprobs boolean

Opcjonalnie. Jeśli ma wartość „true”, w odpowiedzi eksportowane są wyniki logprobs.

logprobs integer

Opcjonalnie. Obowiązuje tylko wtedy, gdy responseLogprobs=True. Określa liczbę najbardziej prawdopodobnych logarytmów, w tym wybranego kandydata, które mają być zwracane na każdym etapie dekodowania w Candidate.logprobs_result. Liczba musi mieścić się w zakresie [0, 20].

enableEnhancedCivicAnswers boolean

Opcjonalnie. Włącza ulepszone odpowiedzi dotyczące spraw obywatelskich. Może nie być dostępna w przypadku wszystkich modeli.

speechConfig object (SpeechConfig)

Opcjonalnie. Konfiguracja generowania mowy.

thinkingConfig object (ThinkingConfig)

Opcjonalnie. Konfiguracja funkcji myślenia. Jeśli to pole zostanie ustawione w przypadku modeli, które nie obsługują myślenia, zostanie zwrócony błąd.

imageConfig object (ImageConfig)

Opcjonalnie. Konfiguracja generowania obrazów. Jeśli to pole jest ustawione w przypadku modeli, które nie obsługują tych opcji konfiguracji, zwracany jest błąd.

mediaResolution enum (MediaResolution)

Opcjonalnie. Jeśli zostanie określona, użyta zostanie rozdzielczość multimediów.

enableAffectiveDialog boolean

Opcjonalnie. Jeśli ta opcja jest włączona, model będzie wykrywać emocje i dostosowywać do nich swoje odpowiedzi.

responseFormat object (ResponseFormatConfig)

Opcjonalnie. Konfiguracja formatu odpowiedzi. Umożliwia określenie konfiguracji wyjściowej dla każdego typu treści (tekst, dźwięk, obraz) w płaskiej strukturze.

translationConfig object (TranslationConfig)

Opcjonalnie. Konfiguracja tłumaczenia.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Opcjonalnie. Konfiguracja transkrypcji audio (rozpoznawanie mowy).

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

Modalność

Obsługiwane modalności odpowiedzi.

Wartości w polu enum
MODALITY_UNSPECIFIED Wartość domyślna.
TEXT Wskazuje, że model powinien zwrócić tekst.
IMAGE Wskazuje, że model powinien zwracać obrazy.
AUDIO Wskazuje, że model powinien zwrócić dźwięk.

SpeechConfig

Konfiguracja generowania i transkrypcji mowy.

Pola
voiceConfig object (VoiceConfig)

Konfiguracja w przypadku wyjścia z jednym głosem.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Opcjonalnie. Konfiguracja systemu wielogłośnikowego. Wyklucza się z polem voiceConfig.

languageCode string

Opcjonalnie. Kod języka BCP-47 IETF, który użytkownik skonfigurował do używania w aplikacji. Używane do rozpoznawania i syntezy mowy.

Prawidłowe wartości to: 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-RUth-TH.

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

VoiceConfig

Konfiguracja głosu, którego chcesz użyć.

Pola
voice_config Union type
Konfiguracja, której ma używać głośnik. Pole voice_config może mieć tylko jedną z tych wartości:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Konfiguracja gotowego głosu, którego chcesz użyć.

Zapis JSON
{

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

PrebuiltVoiceConfig

Konfiguracja, która ma być używana w przypadku gotowego głośnika.

Pola
voiceName string

Nazwa gotowego głosu do użycia.

Zapis JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Konfiguracja systemu wielogłośnikowego.

Pola
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Wymagane. Wszystkie włączone głosy głośnika.

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

SpeakerVoiceConfig

Konfiguracja pojedynczego głośnika w konfiguracji z wieloma głośnikami.

Pola
speaker string

Wymagane. Nazwa głośnika do użycia. Powinna być taka sama jak w prompcie.

voiceConfig object (VoiceConfig)

Wymagane. Konfiguracja głosu, którego chcesz użyć.

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

ThinkingConfig

Konfiguracja funkcji myślenia.

Pola
includeThoughts boolean

Określa, czy w odpowiedzi mają być uwzględnione myśli. Jeśli wartość to prawda, myśli są zwracane tylko wtedy, gdy są dostępne.

thinkingBudget integer

Liczba tokenów myśli, które ma wygenerować model.

thinkingLevel enum (ThinkingLevel)

Opcjonalnie. Określa maksymalną głębokość wewnętrznego procesu rozumowania modelu przed wygenerowaniem odpowiedzi. Wartość domyślna zależy od modelu. Więcej informacji znajdziesz w przewodniku po poziomach myślenia. Zalecane w przypadku modeli Gemini 3 lub nowszych. Użycie wcześniejszych modeli powoduje błąd.

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

ThinkingLevel

Zezwól użytkownikowi na określenie, ile czasu ma poświęcić na przemyślenie odpowiedzi, za pomocą wyliczenia zamiast budżetu w postaci liczby całkowitej.

Wartości w polu enum
THINKING_LEVEL_UNSPECIFIED Wartość domyślna.
MINIMAL Nie wymaga to prawie żadnego myślenia.
LOW Niski poziom myślenia.
MEDIUM Średni poziom myślenia.
HIGH Wysoki poziom myślenia.

ImageConfig

Konfiguracja funkcji generowania obrazów.

Pola
aspectRatio string

Opcjonalnie. Format obrazu do wygenerowania. Obsługiwane formaty obrazu: 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 oraz 21:9.

Jeśli nie zostanie określony, model wybierze domyślny format obrazu na podstawie podanych obrazów referencyjnych.

imageSize string

Opcjonalnie. Określa rozmiar wygenerowanych obrazów. Obsługiwane wartości to 512, 1K, 2K4K. Jeśli nie podasz żadnej wartości, model użyje wartości domyślnej 1K.

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

MediaResolution

Rozdzielczość multimediów wejściowych.

Wartości w polu enum
MEDIA_RESOLUTION_UNSPECIFIED Rozdzielczość multimediów nie została ustawiona.
MEDIA_RESOLUTION_LOW Rozdzielczość multimediów ustawiona na niską (64 tokeny).
MEDIA_RESOLUTION_MEDIUM Rozdzielczość multimediów ustawiona na średnią (256 tokenów).
MEDIA_RESOLUTION_HIGH Rozdzielczość multimediów ustawiona na wysoką (ponowne kadrowanie z powiększeniem z 256 tokenami).

ResponseFormatConfig

Konfiguracja formatu odpowiedzi. Jest to płaski obiekt, w którym każde opcjonalne pole podrzędne konfiguruje określony tryb wyjściowy.

Pola
text object (TextResponseFormat)

Opcjonalnie. Konfiguracja formatu wyjściowego tekstu.

audio object (AudioResponseFormat)

Opcjonalnie. Konfiguracja formatu wyjścia audio.

image object (ImageResponseFormat)

Opcjonalnie. Konfiguracja formatu wyjściowego obrazu.

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

TextResponseFormat

Konfiguracja formatu danych wyjściowych tekstu.

Pola
mimeType enum (MimeType)

Opcjonalnie. Typ MIME wyjścia tekstowego.

schema value (Value format)

Opcjonalnie. Schemat JSON, do którego powinny być zgodne dane wyjściowe. Ma zastosowanie tylko wtedy, gdy mimeType to APPLICATION_JSON.

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

MimeType

Obsługiwane typy MIME w przypadku danych wyjściowych w formacie tekstowym.

Wartości w polu enum
MIME_TYPE_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
APPLICATION_JSON Format danych wyjściowych JSON.
TEXT_PLAIN Format wyjściowy w postaci zwykłego tekstu.

AudioResponseFormat

Konfiguracja formatu wyjściowego audio.

Pola
mimeType enum (MimeType)

Opcjonalnie. Typ MIME wyjścia audio.

delivery enum (Delivery)

Opcjonalnie. Tryb wyświetlania wyjścia audio.

sampleRate integer

Opcjonalnie. Częstotliwość próbkowania w hercach.

bitRate integer

Opcjonalnie. Szybkość transmisji bitów w bitach na sekundę. Dotyczy tylko formatów skompresowanych (MP3, Opus).

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

MimeType

Obsługiwane typy MIME dla wyjścia audio.

Wartości w polu enum
MIME_TYPE_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
AUDIO_MP3 format audio MP3,
AUDIO_OGG_OPUS format audio OGG Opus,
AUDIO_L16 Format audio Raw PCM (L16).
AUDIO_WAV format audio WAV,
AUDIO_ALAW Format audio A-law.
AUDIO_MULAW Format audio Mu-law.

Dostawa

Tryb wyświetlania wyjścia audio.

Wartości w polu enum
DELIVERY_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
INLINE Dane audio są zwracane w odpowiedzi w formie wbudowanej.
URI Dane audio są zwracane jako URI.

ImageResponseFormat

Konfiguracja formatu wyjściowego obrazu.

Pola
mimeType enum (MimeType)

Opcjonalnie. Typ MIME obrazu wyjściowego.

delivery enum (Delivery)

Opcjonalnie. Tryb wyświetlania obrazu wyjściowego.

aspectRatio enum (AspectRatio)

Opcjonalnie. Format obrazu wyjściowego.

imageSize enum (ImageSize)

Opcjonalnie. Rozmiar wyjściowego obrazu.

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

MimeType

Obsługiwane typy MIME w przypadku danych wyjściowych w formie obrazu.

Wartości w polu enum
MIME_TYPE_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
IMAGE_JPEG format obrazu JPEG,

Dostawa

Tryb wyświetlania obrazu wyjściowego.

Wartości w polu enum
DELIVERY_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
INLINE Dane obrazu są zwracane w odpowiedzi.
URI Dane obrazu są zwracane jako identyfikator URI.

Współczynnik proporcji

Obsługiwane formaty obrazu.

Wartości w polu enum
ASPECT_RATIO_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
ASPECT_RATIO_ONE_BY_ONE Format obrazu 1:1.
ASPECT_RATIO_TWO_BY_THREE Format obrazu 2:3.
ASPECT_RATIO_THREE_BY_TWO Format obrazu 3:2.
ASPECT_RATIO_THREE_BY_FOUR Format obrazu 3:4.
ASPECT_RATIO_FOUR_BY_THREE Format obrazu 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Format obrazu 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Format obrazu 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Format obrazu 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Format obrazu 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Format obrazu 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Format obrazu 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Format obrazu 8:1.
ASPECT_RATIO_ONE_BY_FOUR Format obrazu 1:4.
ASPECT_RATIO_FOUR_BY_ONE Format obrazu 4:1.

ImageSize

Obsługiwane rozmiary obrazów wyjściowych.

Wartości w polu enum
IMAGE_SIZE_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
IMAGE_SIZE_FIVE_TWELVE Rozmiar obrazu to 512 pikseli.
IMAGE_SIZE_ONE_K Rozmiar obrazu 1K.
IMAGE_SIZE_TWO_K Rozmiar obrazu 2K.
IMAGE_SIZE_FOUR_K rozmiar obrazu 4K.

TranslationConfig

Konfiguracja funkcji tłumaczenia.

Pola
targetLanguageCode string

Wymagane. Język docelowy tłumaczenia. Obsługiwane wartości to kody języka w formacie BCP-47 (np. „en”, „es”, „fr”).

echoTargetLanguage boolean

Opcjonalnie. Jeśli wartość to „true”, model będzie generować dźwięk, gdy wypowiadany jest język docelowy, czyli będzie powtarzać dane wejściowe. Jeśli ma wartość false, nie będziemy generować dźwięku w języku docelowym.

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

AudioTranscriptionConfig

Konfiguracja transkrypcji dźwięku.

Pola
languageCodes[] string

Opcjonalnie. Kody języka BCP-47, które zawierają wskazówki dotyczące języków występujących w dźwięku. Jeśli ten parametr zostanie pominięty lub będzie pusty, domyślnie zostanie włączone automatyczne wykrywanie języka.

adaptationPhrases[]
(deprecated)
string

Opcjonalnie. Lista fraz używanych do adaptacji mowy, która wpływa na model ASR, aby poprawić rozpoznawanie tych konkretnych terminów.

customVocabulary[] string

Opcjonalnie. Lista niestandardowych fraz słownictwa, które mają nakierować model rozpoznawania mowy na rozpoznawanie konkretnych terminów (nazw produktów, nazw własnych, żargonu).

wordTimestamp boolean

Opcjonalnie. Konfiguruje generowanie sygnatur czasowych na poziomie słów.

diarization boolean

Opcjonalnie. Konfiguruje rozdzielanie rozmówców.

language_config Union type
Wycofano: zamiast tego użyj elementu najwyższego poziomu language_codes. language_config może mieć tylko jedną z tych wartości:
languageAuto
(deprecated)
object (LanguageAuto)

Opcjonalnie. Model automatycznie wykryje język.

languageHints
(deprecated)
object (LanguageHints)

Opcjonalnie. Określa co najmniej 1 język w dźwięku.

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

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

LanguageAuto

Ten typ nie ma pól.

Wskazuje, że język dźwięku powinien być wykrywany automatycznie.

LanguageHints

Zawiera wskazówki dla modelu dotyczące możliwych języków występujących w dźwięku.

Pola
languageCodes[]
(deprecated)
string

Wymagane. Kody języka BCP-47.

Zapis JSON
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

Konfiguruje działanie wprowadzania w czasie rzeczywistym w BidiGenerateContent.

Pola
automaticActivityDetection object (AutomaticActivityDetection)

Opcjonalnie. Jeśli nie ustawisz tej opcji, domyślnie włączone będzie automatyczne wykrywanie aktywności. Jeśli automatyczne wykrywanie głosu jest wyłączone, klient musi wysyłać sygnały aktywności.

activityHandling enum (ActivityHandling)

Opcjonalnie. Określa, jaki wpływ ma aktywność.

turnCoverage enum (TurnCoverage)

Opcjonalnie. Określa, które dane wejściowe są uwzględniane w turze użytkownika.

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

AutomaticActivityDetection

Konfiguruje automatyczne wykrywanie aktywności.

Pola
disabled boolean

Opcjonalnie. Jeśli ta opcja jest włączona (domyślnie), wykryte dane głosowe i tekstowe są traktowane jako aktywność. Jeśli ta opcja jest wyłączona, klient musi wysyłać sygnały aktywności.

startOfSpeechSensitivity enum (StartSensitivity)

Opcjonalnie. Określa prawdopodobieństwo wykrycia mowy.

prefixPaddingMs integer

Opcjonalnie. Wymagany czas trwania wykrytej mowy przed zatwierdzeniem początku mowy. Im mniejsza jest ta wartość, tym większa jest czułość wykrywania początku mowy i tym krótsze wypowiedzi mogą być rozpoznawane. Zwiększa to jednak również prawdopodobieństwo wyników fałszywie pozytywnych.

endOfSpeechSensitivity enum (EndSensitivity)

Opcjonalnie. Określa prawdopodobieństwo zakończenia wykrytej mowy.

silenceDurationMs integer

Opcjonalnie. Wymagany czas wykrytego braku mowy (np. ciszy) przed zatwierdzeniem końca mowy. Im większa ta wartość, tym dłuższe mogą być przerwy w mowie bez przerywania aktywności użytkownika, ale zwiększy to opóźnienie modelu.

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

StartSensitivity

Określa sposób wykrywania początku wypowiedzi.

Wartości w polu enum
START_SENSITIVITY_UNSPECIFIED Wartość domyślna to START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH Automatyczne wykrywanie będzie częściej wykrywać początek mowy.
START_SENSITIVITY_LOW Automatyczne wykrywanie będzie rzadziej wykrywać początek mowy.

EndSensitivity

Określa sposób wykrywania końca wypowiedzi.

Wartości w polu enum
END_SENSITIVITY_UNSPECIFIED Wartość domyślna to END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Automatyczne wykrywanie częściej kończy mowę.
END_SENSITIVITY_LOW Automatyczne wykrywanie rzadziej kończy mowę.

ActivityHandling

Różne sposoby obsługi aktywności użytkowników.

Wartości w polu enum
ACTIVITY_HANDLING_UNSPECIFIED Jeśli nie określisz tu żadnej wartości, zostanie użyte ustawienie domyślne START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Jeśli ma wartość „true” (prawda), rozpoczęcie aktywności przerwie odpowiedź modelu (tzw. „barge in”). Obecna odpowiedź modelu zostanie przerwana w momencie przerwania. Jest to zachowanie domyślne.
NO_INTERRUPTION Odpowiedź modelu nie zostanie przerwana.

TurnCoverage

Opcje dotyczące tego, które dane wejściowe są uwzględniane w turze użytkownika.

Wartości w polu enum
TURN_COVERAGE_UNSPECIFIED Jeśli nie zostanie określony, domyślne działanie zostanie wybrane na podstawie modelu. Na przykład w przypadku Gemini 2.5 domyślna wartość to TURN_INCLUDES_ONLY_ACTIVITY, a w przypadku Gemini 3.1 i nowszych – TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Obejmuje aktywność od ostatniej tury, z wyłączeniem braku aktywności (np. ciszy w strumieniu audio).
TURN_INCLUDES_ALL_INPUT Obejmuje wszystkie dane wejściowe w czasie rzeczywistym od ostatniej tury, w tym brak aktywności (np. ciszę w strumieniu audio).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Obejmuje aktywność związaną z dźwiękiem i wszystkie filmy od ostatniej tury. W przypadku automatycznego wykrywania aktywności aktywność związana z dźwiękiem oznacza mowę i nie obejmuje ciszy.

SessionResumptionConfig

Konfiguracja wznowienia sesji.

Ten komunikat jest uwzględniony w konfiguracji sesji jako BidiGenerateContentSetup.session_resumption. Jeśli serwer jest skonfigurowany, będzie wysyłać wiadomości SessionResumptionUpdate.

Pola
handle string

Uchwyt poprzedniej sesji. Jeśli nie ma sesji, tworzona jest nowa.

Uchwyty sesji pochodzą z wartości SessionResumptionUpdate.token w poprzednich połączeniach.

Zapis JSON
{
  "handle": string
}

ContextWindowCompressionConfig

Włącza kompresję okna kontekstu – mechanizm zarządzania oknem kontekstu modelu, aby nie przekraczało ono określonej długości.

Pola
compression_mechanism Union type
Używany mechanizm kompresji okna kontekstu. Pole compression_mechanism może mieć tylko jedną z tych wartości:
slidingWindow object (SlidingWindow)

mechanizm okna przesuwnego,

triggerTokens string (int64 format)

Liczba tokenów (przed wykonaniem tury) wymagana do wywołania kompresji okna kontekstu.

Może to pomóc w zachowaniu równowagi między jakością a opóźnieniem, ponieważ krótsze okna kontekstu mogą skutkować szybszymi odpowiedziami modelu. Każda operacja kompresji powoduje jednak tymczasowy wzrost opóźnienia, dlatego nie należy jej często wywoływać.

Jeśli nie zostanie ustawiona, domyślnie będzie wynosić 80% limitu okna kontekstu modelu. Pozostawia to 20% na kolejne żądanie użytkownika lub odpowiedź modelu.

Zapis JSON
{

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

SlidingWindow

Metoda SlidingWindow polega na odrzucaniu treści na początku okna kontekstu. Wynikowy kontekst zawsze będzie się zaczynać od początku tury roli USER. Instrukcje systemowe i wszelkie BidiGenerateContentSetup.prefix_turns zawsze będą znajdować się na początku wyniku.

Pola
targetTokens string (int64 format)

Docelowa liczba tokenów do zachowania. Wartością domyślną jest triggerTokens/2.

Odrzucanie części okna kontekstu powoduje tymczasowe zwiększenie opóźnienia, dlatego tę wartość należy skalibrować, aby uniknąć częstych operacji kompresji.

Zapis JSON
{
  "targetTokens": string
}

HistoryConfig

Konfiguracja historii.

Ten komunikat jest uwzględniony w konfiguracji sesji jako BidiGenerateContentSetup.history_config. Konfiguruje wymianę wiadomości historii.

Pola
initialHistoryInClientContent boolean

Opcjonalnie. Jeśli wartość to „true”, po wysłaniu setupComplete serwer będzie czekać i najpierw przetworzy clientContent wiadomości, dopóki turnComplete nie będzie równe true. Ta początkowa historia nie spowoduje wywołania modelu i może się zakończyć rolą MODEL. Gdy turnComplete zmieni się na true, klient może rozpocząć rozmowę w czasie rzeczywistym za pomocą realtimeInput.

Zapis JSON
{
  "initialHistoryInClientContent": boolean
}

Metoda: auth_tokens.create

Tworzy token, który może być używany do ograniczania działania sesji BidiGenerateContent.

Punkt końcowy

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

Treść żądania

Treść żądania zawiera wystąpienie elementu AuthToken.

Pola
expireTime string (Timestamp format)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Opcjonalny czas, po którym wiadomości w sesjach BidiGenerateContent będą odrzucane, jeśli używany jest wynikowy token. (Gemini może przedwcześnie zamknąć sesję po tym czasie).

Jeśli nie jest ustawiony, domyślnie jest to 30 minut w przyszłości. Nowa wartość musi być mniejsza niż 20 godzin.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Czas, po którym nowe sesje Live API korzystające z tokena wynikającego z tego żądania zostaną odrzucone.

Jeśli nie zostanie ustawiony, domyślnie będzie wynosić 60 sekund. Nowa wartość musi być mniejsza niż 20 godzin.

Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" lub "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Jeśli pole fieldMask jest puste i nie ma w nim znaku bidiGenerateContentSetup, efektywny komunikat BidiGenerateContentSetup jest pobierany z aktywnego połączenia z interfejsem API.

Jeśli pole maski jest puste i występuje bidiGenerateContentSetup is, to efektywna wiadomość BidiGenerateContentSetup jest w całości pobierana z bidiGenerateContentSetup w tym żądaniu. Wiadomość konfiguracyjna z połączenia z interfejsem Live API jest ignorowana.

Jeśli pole fieldMask nie jest puste, odpowiednie pola z bidiGenerateContentSetup zastąpią pola z wiadomości konfiguracyjnej w połączeniu z interfejsem Live API.

Jest to lista w pełni kwalifikowanych nazw pól rozdzielonych przecinkami. Przykład: "user.displayName,photo".

config Union type
Konfiguracja konkretnej metody dla wynikowego tokena. Pole config może mieć tylko jedną z tych wartości:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Konfiguracja specyficzna dla BidiGenerateContent.

uses integer

Opcjonalnie. Tylko dane wejściowe. Niezmienne. Określa, ile razy można wykorzystać token. Jeśli ta wartość wynosi zero, nie jest stosowany żaden limit. Wznowienie sesji Live API nie jest liczone jako użycie. Jeśli nie określisz tu żadnej wartości, zostanie użyte ustawienie domyślne 1.

Treść odpowiedzi

Jeśli operacja się uda, treść odpowiedzi będzie zawierała nowo utworzoną instancję AuthToken.