Generating content

Interfejs Gemini API obsługuje generowanie treści z obrazami, dźwiękiem, kodem, narzędziami i innymi elementami. Aby dowiedzieć się więcej o każdej z tych funkcji, czytaj dalej i zapoznaj się z przykładowym kodem dotyczącym konkretnych zadań lub przeczytaj szczegółowe przewodniki.

Metoda: models.generateContent

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

Punkt końcowy

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

Parametry ścieżki

model string

Wymagane. Nazwa Model, który ma zostać użyty do wygenerowania uzupełnienia.

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ń jednoetapowych 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ż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ń poza wiedzą i zakresem Model. Obsługiwane wartości Tool to Function i codeExecution. Więcej informacji znajdziesz w przewodnikach dotyczących wywoływania funkcji i wykonywania kodu.

toolConfig object (ToolConfig)

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

safetySettings[] object (SafetySetting)

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

Będzie to egzekwowane w przypadku GenerateContentRequest.contents i GenerateContentResponse.candidates. Nie powinno być więcej niż 1 ustawienia dla każdego typu SafetyCategory. Interfejs API będzie blokować wszelkie treści i odpowiedzi, które nie spełniają progów określonych w tych ustawieniach. Ta lista zastępuje domyślne ustawienia każdej kategorii SafetyCategory określonej w safetySettings. Jeśli na liście nie ma podanej wartości SafetySetting dla danej kategorii 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ż ze wskazówkami dotyczącymi bezpieczeństwa, aby dowiedzieć się, jak uwzględnić kwestie bezpieczeństwa w aplikacjach AI.

continuationToken string (bytes format)

Opcjonalnie: Nieprzejrzysty token kontynuacji używany do wznowienia generowania z poprzedniej odpowiedzi models.generateContent lub models.streamGenerateContent, która została zatrzymana, gdy parametr finishReason był ustawiony na CONTINUATION. Pamiętaj, że parametr contents jest obowiązkowy i musi dokładnie odzwierciedlać prompta i historię rozmowy z początkowego żądania, gdy w żądaniu podany jest token kontynuacji.

Ciąg znaków zakodowany w formacie base64.

labels map (key: string, value: string)

Opcjonalnie: Etykiety z metadanymi zdefiniowanymi przez użytkownika dla żądania.

Opcjonalnie: Etykiety muszą spełniać standardowe wymagania dotyczące ujednoliconych etykiet Cloud: – klucze etykiet muszą zaczynać się od litery. – Klucze i wartości etykiet nie mogą być dłuższe niż 63 znaki (punkty kodowe Unicode). Mogą zawierać tylko małe litery, cyfry, podkreślenia i myślniki. - Znaki międzynarodowe są dozwolone.

Sposób użycia: identyfikatory bezpieczeństwa od agregatorów: użyj klucza safety_identifier (np. {"safety_identifier": "user_session_123"})

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

systemInstruction object (Content)

Opcjonalnie: Instrukcje systemowe ustawione przez dewelopera. Obecnie tylko tekst.

generationConfig object (GenerationConfig)

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

cachedContent string

Opcjonalnie: Nazwa treści zapisanych w pamięci podręcznej, które mają być używane jako kontekst do wygenerowania podpowiedzi. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcjonalnie: Poziom usługi żądania.

store boolean

Opcjonalnie: Konfiguruje zachowanie logowania dla 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.8-flash",
    contents="Write a story about a magic backpack.",
)
print(response.text)

Node.js

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

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

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

Node.js

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

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

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

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

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

Audio

Python

from google import genai

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

Node.js

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

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

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

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

Node.js

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

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

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

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

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

Node.js

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

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

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

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

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

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

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

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

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

Cache (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.8-flash"

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

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

Node.js

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

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

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

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

Go

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

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

Node.js

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

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

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

Go

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

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

// Print the response.
printResponse(response)

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

Java

Client client = new Client();

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

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

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

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

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

Go

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

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

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

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

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

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

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

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

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

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

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

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

printResponse(finalResponse)

Node.js

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

System.out.println(result);

Konfiguracja generowania

Python

from google import genai
from google.genai import types

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

Node.js

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

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

console.log(response.text);

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

printResponse(response)

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

print(response.candidates[0].safety_ratings)

Node.js

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

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

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

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

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

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

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

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

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

Instrukcja systemowa

Python

from google import genai
from google.genai import types

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

Node.js

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

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.8-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.8-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óry ma zostać użyty do wygenerowania uzupełnienia.

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ń jednoetapowych 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ż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ń poza wiedzą i zakresem Model. Obsługiwane wartości Tool to Function i codeExecution. Więcej informacji znajdziesz w przewodnikach dotyczących wywoływania funkcji i wykonywania kodu.

toolConfig object (ToolConfig)

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

safetySettings[] object (SafetySetting)

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

Będzie to egzekwowane w przypadku GenerateContentRequest.contents i GenerateContentResponse.candidates. Nie powinno być więcej niż 1 ustawienia dla każdego typu SafetyCategory. Interfejs API będzie blokować wszelkie treści i odpowiedzi, które nie spełniają progów określonych w tych ustawieniach. Ta lista zastępuje domyślne ustawienia każdej kategorii SafetyCategory określonej w safetySettings. Jeśli na liście nie ma podanej wartości SafetySetting dla danej kategorii 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ż ze wskazówkami dotyczącymi bezpieczeństwa, aby dowiedzieć się, jak uwzględnić kwestie bezpieczeństwa w aplikacjach AI.

continuationToken string (bytes format)

Opcjonalnie: Nieprzejrzysty token kontynuacji używany do wznowienia generowania z poprzedniej odpowiedzi models.generateContent lub models.streamGenerateContent, która została zatrzymana, gdy parametr finishReason był ustawiony na CONTINUATION. Pamiętaj, że parametr contents jest obowiązkowy i musi dokładnie odzwierciedlać prompta i historię rozmowy z początkowego żądania, gdy w żądaniu podany jest token kontynuacji.

Ciąg znaków zakodowany w formacie base64.

labels map (key: string, value: string)

Opcjonalnie: Etykiety z metadanymi zdefiniowanymi przez użytkownika dla żądania.

Opcjonalnie: Etykiety muszą spełniać standardowe wymagania dotyczące ujednoliconych etykiet Cloud: – klucze etykiet muszą zaczynać się od litery. – Klucze i wartości etykiet nie mogą być dłuższe niż 63 znaki (punkty kodowe Unicode). Mogą zawierać tylko małe litery, cyfry, podkreślenia i myślniki. - Znaki międzynarodowe są dozwolone.

Sposób użycia: identyfikatory bezpieczeństwa od agregatorów: użyj klucza safety_identifier (np. {"safety_identifier": "user_session_123"})

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

systemInstruction object (Content)

Opcjonalnie: Instrukcje systemowe ustawione przez dewelopera. Obecnie tylko tekst.

generationConfig object (GenerationConfig)

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

cachedContent string

Opcjonalnie: Nazwa treści zapisanych w pamięci podręcznej, które mają być używane jako kontekst do wygenerowania podpowiedzi. Format: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Opcjonalnie: Poziom usługi żądania.

store boolean

Opcjonalnie: Konfiguruje zachowanie logowania dla 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.8-flash",
    contents="Write a story about a magic backpack.",
)
for chunk in response:
  print(chunk.text)
  print("_" * 80)

Node.js

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

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

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

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

responseStream.close();

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

Node.js

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

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

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

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

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

responseStream.close();

Audio

Python

from google import genai

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

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

Node.js

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

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

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

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

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

print(chat.get_history())

Node.js

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

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

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

console.log(chat.getHistory());

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

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

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

fmt.Println(chat.History(false))

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żdego kandydata w finishReason i safetyRatings. Interfejs API: – zwraca wszystkie żądane odpowiedzi kandydujące lub żadną z nich; – nie zwraca żadnych odpowiedzi kandydujących tylko wtedy, gdy wystąpił problem z promptem (sprawdź promptFeedback); – zgłasza opinie o każdej odpowiedzi kandydującej w finishReason i safetyRatings.

Pola
candidates[] object (Candidate)

Odpowiedzi kandydujące z modelu.

promptFeedback object (PromptFeedback)

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

usageMetadata object (UsageMetadata)

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

modelVersion string

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

responseId string

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

modelStatus object (ModelStatus)

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

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

PromptFeedback

Zestaw metadanych opinii określonych w prompcie w: GenerateContentRequest.content.

Pola
blockReason enum (BlockReason)

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

safetyRatings[] object (SafetyRating)

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

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

BlockReason

Określa powód zablokowania prompta.

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. Sprawdź safetyRatings, aby dowiedzieć się, która kategoria bezpieczeństwa spowodowała blokadę.
OTHER Prompt został zablokowany z nieznanych powodów.
BLOCKLIST Prompt został zablokowany z powodu haseł, 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 przez żądanie generowania.

Pola
promptTokenCount integer

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

cachedContentTokenCount integer

Liczba tokenów w części promptu zapisanej w pamięci podręcznej (treści zapisane w pamięci podręcznej)

candidatesTokenCount integer

Łączna liczba tokenów we wszystkich wygenerowanych odpowiedziach.

toolUsePromptTokenCount integer

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

thoughtsTokenCount integer

Tylko dane wyjściowe. Liczba tokenów myśli w przypadku modeli myślących.

totalTokenCount integer

Łączna liczba tokenów w żądaniu generowania (prompt + prompt dotyczący użycia narzędzia + myśli + kandydaci do odpowiedzi).

promptTokensDetails[] object (ModalityTokenCount)

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

cacheTokensDetails[] object (ModalityTokenCount)

Tylko dane wyjściowe. Lista modalności treści zapisanych w pamięci podręcznej w danych wejściowych żądania.

candidatesTokensDetails[] object (ModalityTokenCount)

Tylko dane wyjściowe. Lista modalności zwróconych w odpowiedzi.

toolUsePromptTokensDetails[] object (ModalityTokenCount)

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

serviceTier enum (ServiceTier)

Tylko dane wyjściowe. Typ 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 modelu podstawowego i czasu wycofania (jeśli dotyczy).

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

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

Model bazowy podlega wielu dostrojeniom.

EXPERIMENTAL Modele na tym etapie służą wyłącznie do celów eksperymentalnych.
PREVIEW Modele na tym etapie są bardziej dojrzałe niż modele eksperymentalne.
STABLE Modele na tym etapie są uważane za stabilne i gotowe do użycia w środowisku produkcyjnym.
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ą wycofane. Nie można używać tych modeli.

Kandydat

Odpowiedź kandydująca wygenerowana 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 kandydującej odpowiedzi.

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

citationMetadata object (CitationMetadata)

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

To pole może zawierać informacje o recytacji dowolnego tekstu zawartego w elemencie content. Są to fragmenty „cytowane” z materiałów chronionych prawem autorskim, które znajdują się w danych treningowych podstawowego 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 udzielenia odpowiedzi opartej na źródłach.

To pole jest wypełniane w przypadku wywołań GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Tylko dane wyjściowe. Metadane groundingu dla kandydata.

To pole jest wypełniane w przypadku wywołań GenerateContent.

avgLogprobs number

Tylko dane wyjściowe. Średni wynik prawdopodobieństwa logarytmicznego kandydata.

logprobsResult object (LogprobsResult)

Tylko dane wyjściowe. wyniki logarytmicznej wiarygodności dla tokenów odpowiedzi i najważniejszych tokenów;

urlContextMetadata object (UrlContextMetadata)

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

continuationToken string (bytes format)

Opcjonalny nieprzejrzysty token kontynuacji zwracany, gdy finishReason ma wartość CONTINUATION. Klienci mogą przekazać ten token w kolejnym wywołaniu GenerateContentRequest, aby kontynuować generowanie.

Ciąg znaków zakodowany w formacie base64.

index integer

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

finishMessage string

Opcjonalnie: Tylko dane wyjściowe. Szczegółowe informacje o powodzie, dla którego model przestał generować tokeny. To pole jest wypełniane tylko wtedy, gdy ustawiono 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)
  },
  "continuationToken": string,
  "index": integer,
  "finishMessage": string
}

FinishReason

Określa powód, dla którego 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ść odpowiedzi została oznaczona ze względów bezpieczeństwa.
RECITATION Treść odpowiedzi została oznaczona ze względu na cytowanie.
LANGUAGE Treść odpowiedzi została oznaczona jako używająca nieobsługiwanego języka.
OTHER Nieznana przyczyna.
BLOCKLIST Generowanie tokenów zostało zatrzymane, ponieważ treści zawierają niedozwolone hasła.
PROHIBITED_CONTENT Generowanie tokenów zostało zatrzymane, ponieważ mogą one zawierać niedozwolone treści.
SPII Generowanie tokena zostało zatrzymane, ponieważ treść może zawierać informacje poufne umożliwiające identyfikację.
MALFORMED_FUNCTION_CALL Wywołanie funkcji wygenerowane przez model jest nieprawidłowe.
IMAGE_SAFETY Generowanie tokenów zostało zatrzymane, ponieważ wygenerowane obrazy naruszają zasady 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 cytowania.
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 po kolei, więc system zakończył wykonywanie.
MISSING_THOUGHT_SIGNATURE W żądaniu brakuje co najmniej 1 podpisu myśli.
MALFORMED_RESPONSE Zakończono z powodu nieprawidłowej odpowiedzi.
ESCALATION Żądanie zostało odfiltrowane przez regułę przekazywania.
PUP_LIMITED_DISABLED Wskazuje, że generowanie tokenów zostało zatrzymane, ponieważ konto użytkownika jest ograniczone lub wyłączone z powodu naruszenia zasad dotyczących niedozwolonych zastosowań.
CONTINUATION Generowanie tokenów zostało zatrzymane, ponieważ odpowiedź osiągnęła limit tokenów na żądanie, ale generowanie nie zostało jeszcze zakończone. Odpowiedź modelu można kontynuować za pomocą kolejnego żądania, używając zwróconego parametru continuationToken. Uwaga: parametr maxOutputTokens jest kumulowany w ramach kolejnych przeskoków i musi być monotonicznie zwiększany lub pomijany.

GroundingAttribution

Atrybucja źródła, które przyczyniło się do udzielenia 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 źródło.

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
Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
groundingPassage object (GroundingPassageId)

Identyfikator fragmentu wbudowanego.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Identyfikator Chunk pobranego za pomocą semantycznego systemu pobierania.

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{

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

GroundingPassageId

Identyfikator części w obiekcie GroundingPassage.

Pola
passageId string

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

partIndex integer

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

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

SemanticRetrieverChunk

Identyfikator Chunk pobrany za pomocą semantycznego pobierania określonego w GenerateAnswerRequest przy użyciu SemanticRetrieverConfig.

Pola
source string

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

chunk string

Tylko dane wyjściowe. Nazwa Chunk zawierającego tekst, do którego przypisano atrybucję. Przykład: corpora/123/documents/abc/chunks/xyz

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

GroundingMetadata

Metadane zwracane do klienta, gdy grounding jest włączony.

Pola
groundingChunks[] object (GroundingChunk)

Lista źródeł potwierdzających pobranych z określonego źródła informacji. W przypadku strumieniowania zawiera tylko fragmenty źródeł, które nie zostały uwzględnione w metadanych źródeł poprzednich odpowiedzi.

groundingSupports[] object (GroundingSupport)

Lista obsługiwanych źródeł informacji.

webSearchQueries[] string

Zapytania do wyszukiwarki Google na potrzeby kolejnego wyszukiwania w internecie.

imageSearchQueries[] string

Zapytania wyszukiwania obrazów używane do groundingu.

searchEntryPoint object (SearchEntryPoint)

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

retrievalMetadata object (RetrievalMetadata)

Metadane związane z pobieraniem w procesie groundingu.

googleMapsWidgetContextToken string

Opcjonalnie: Nazwa zasobu tokena kontekstowego widżetu Map Google, którego można używać z widżetem PlacesContextElement do renderowania danych kontekstowych. Wypełniane tylko wtedy, gdy włączone jest powiązanie 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 wyszukiwarki Google.

Pola
renderedContent string

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

sdkBlob string (bytes format)

Opcjonalnie: Zakodowany w systemie Base64 obiekt JSON reprezentujący tablicę krotek <search term, search url>.

Ciąg znaków zakodowany w formacie base64.

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

GroundingChunk

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

Pola
chunk_type Union type
Typ fragmentu. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
web object (Web)

Fragment z internetu użyty do groundingu.

image object (Image)

Opcjonalnie: Fragment z wyszukiwarki grafiki.

retrievedContext object (RetrievedContext)

Opcjonalnie: Fragment źródłowy z kontekstu pobranego przez narzędzie do wyszukiwania plików.

maps object (Maps)

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

Koniec pól wykluczających się wzajemnie.
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. Identyfikator 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 pobranego przez narzędzie do wyszukiwania plików.

Pola
customMetadata[] object (CustomMetadata)

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

uri string

Opcjonalnie: Identyfikator 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 (jeśli dotyczy).

mediaId string

Opcjonalnie: Nazwa zasobu obiektu blob multimediów dla wyników wyszukiwania plików multimodalnych. 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 dotyczące GroundingFact podane przez użytkownika.

Pola
key string

Klucz metadanych.

value Union type
Wartość metadanych. Może to być ciąg znaków, lista ciągów znaków lub liczba. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
stringValue string

Opcjonalnie: Wartość ciągu przypisana do metadanych.

stringListValue object (StringList)

Opcjonalnie: Lista wartości ciągów znaków dla metadanych.

numericValue number

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

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{
  "key": string,

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

StringList

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

Pola
values[] string

Wartości ciągu na liście.

Zapis JSON
{
  "values": [
    string
  ]
}

Mapy

Fragment z Map Google użyty do groundingu. Fragment mapy 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 zawierają odpowiedzi na pytania o cechy 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żdy komunikat PlaceAnswerSources odpowiada konkretnemu miejscu w Mapach Google. Narzędzie Map Google korzystało z tych źródeł, aby odpowiadać na pytania dotyczące cech miejsca (np. „Czy w Barze Foo jest Wi-Fi?” lub „Czy Foo Bar jest dostępny dla osób na wózkach?”). Obecnie jako źródła obsługujemy tylko fragmenty opinii.

Pola
reviewSnippets[] object (ReviewSnippet)

Fragmenty opinii, które są używane do generowania odpowiedzi na pytania o cechy danego miejsca w Mapach Google.

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

ReviewSnippet

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

Pola
reviewId string

Identyfikator fragmentu opinii.

googleMapsUri string

Link, który odpowiada opinii użytkownika w Mapach Google.

title string

Tytuł opinii.

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

GroundingSupport

Obsługa groundingu.

Pola
groundingChunkIndices[] integer

Opcjonalnie: Lista indeksów (w polu „grounding_chunk” w response.candidate.grounding_metadata) określających cytaty powiązane z twierdzeniem. 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, groundingChunkIndices odnosi się do indeksów we wszystkich odpowiedziach. Klient jest odpowiedzialny za gromadzenie fragmentów źródeł ze wszystkich odpowiedzi (przy zachowaniu tej samej kolejności).

confidenceScores[] number

Opcjonalnie: Wskaźnik ufności materiałów pomocniczych. Zakres od 0 do 1. 1 to najwyższy poziom pewności. Ta lista musi mieć taki sam rozmiar jak 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 ta pomoc.

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

Segment

Segment treści.

Pola
partIndex integer

Indeks obiektu Part w nadrzędnym obiekcie Content.

startIndex integer

Indeks początkowy w danej części, mierzony w bajtach. Przesunięcie od początku części (włącznie), zaczynając od zera.

endIndex integer

Indeks końcowy w danej części, mierzony w bajtach. Przesunięcie od początku części (wykluczając najwyższą wartość), zaczynając 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 groundingu.

Pola
googleSearchDynamicRetrievalScore number

Opcjonalnie: Wynik wskazujący, jak bardzo informacje z wyszukiwarki Google mogą pomóc w odpowiedzi na prompta. 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 ona porównywana z progiem, aby określić, czy należy uruchomić wyszukiwarkę 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. Wybrani kandydaci 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ższymi prawdopodobieństwami logarytmicznymi 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

Prawdopodobieństwo logarytmiczne 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 adresów 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 Pobieranie adresu URL zakończyło się powodzeniem.
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ódeł dla fragmentu treści.

Pola
citationSources[] object (CitationSource)

cytaty ze źródeł w przypadku konkretnej odpowiedzi;

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

CitationSource

cytat ze źródła dotyczący części 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, który jest przypisany jako źródło części tekstu.

license string

Opcjonalnie: Licencja na projekt GitHub, który jest przypisany jako źródło segmentu.

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

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

HarmCategory

Kategoria oceny.

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

Wartości w polu enum
HARM_CATEGORY_UNSPECIFIED Kategoria nie została określona.
HARM_CATEGORY_DEROGATORY

PaLM – negatywne lub szkodliwe komentarze dotyczące tożsamości innej osoby lub cech chronionych. WYCOFANE: kategoria tylko dla PaLM, nieobsługiwana przez modele Gemini.

HARM_CATEGORY_TOXICITY

PaLM – treści, które są nieuprzejme, obraźliwe lub wulgarne. WYCOFANE: kategoria tylko dla PaLM, nieobsługiwana przez modele Gemini.

HARM_CATEGORY_VIOLENCE

PaLM – opisuje scenariusze przedstawiające przemoc wobec osoby lub grupy albo ogólne opisy przemocy. WYCOFANE: kategoria tylko dla PaLM, nieobsługiwana przez modele Gemini.

HARM_CATEGORY_SEXUAL

PaLM – treści zawierające odniesienia do aktów seksualnych lub innych lubieżnych treści. WYCOFANE: kategoria tylko dla PaLM, nieobsługiwana przez modele Gemini.

HARM_CATEGORY_MEDICAL

PaLM – promuje niesprawdzone porady medyczne. WYCOFANE: kategoria tylko dla PaLM, nieobsługiwana przez modele Gemini.

HARM_CATEGORY_DANGEROUS

PaLM – treści niebezpieczne, które promują, wspierają lub ułatwiają podejmowanie szkodliwych działań. WYCOFANE: kategoria tylko dla PaLM, nieobsługiwana przez modele Gemini.

HARM_CATEGORY_HARASSMENT Gemini – treści związane z nękaniem.
HARM_CATEGORY_HATE_SPEECH Gemini – szerzenie nienawiści i treści nawołujące do nienawiś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ą zostać wykorzystane do naruszenia uczciwości obywatelskiej. WYCOFANE: zamiast tego użyj enableEnhancedCivicAnswers.

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

ModalityTokenCount

Reprezentuje informacje o liczbie tokenów dla pojedynczej modalności.

Pola
modality enum (Modality)

Modalność powiązana z tą liczbą tokenów.

tokenCount integer

Liczba tokenów.

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

Modalność

Modalność części treści

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

SafetyRating

Ocena bezpieczeństwa fragmentu treści.

Ocena bezpieczeństwa zawiera kategorię szkody i poziom prawdopodobieństwa szkody w tej kategorii dla danego fragmentu treści. Treści są klasyfikowane pod kątem bezpieczeństwa w kilku kategoriach szkód, a prawdopodobieństwo klasyfikacji szkody jest podane tutaj.

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ści są niebezpieczne. Nie wskazuje to na stopień szkodliwości treści.

Wartości w polu enum
HARM_PROBABILITY_UNSPECIFIED Prawdopodobieństwo nie zostało określone.
NEGLIGIBLE Istnieje znikome prawdopodobieństwo, że treści są niebezpieczne.
LOW Istnieje niewielkie prawdopodobieństwo, że treść jest niebezpieczna.
MEDIUM Istnieje średnie prawdopodobieństwo, że treść jest niebezpieczna.
HIGH Istnieje duże prawdopodobieństwo, że treści są niebezpieczne.

SafetySetting

Ustawienie bezpieczeństwa, które wpływa na zachowanie blokowania ze względów bezpieczeństwa.

Przekazanie ustawienia bezpieczeństwa dla kategorii zmienia dozwolone 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, gdy prawdopodobieństwo wystąpienia szkodliwych treści jest równe określonej wartości lub wyższe.

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

ServiceTier

Typ usług żądania.

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

Treść

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

Content zawiera pole role, które wskazuje producenta Content, oraz pole parts, które zawiera wieloczęściowe dane z treścią tury wiadomości.

Pola
parts[] object (Part)

Uporządkowane elementy Parts, które stanowią pojedynczą wiadomość. 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 przeciwnym razie można pozostawić puste lub nieustawione.

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

Część

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

Part składa się z danych, które mają powiązany typ danych. Pole Part może zawierać tylko jeden z akceptowanych typów w Part.data.

Jeśli pole inlineData jest wypełnione nieprzetworzonymi bajtami, Part musi mieć stały typ MIME IANA, który identyfikuje typ i podtyp multimediów.

Pola
thought boolean

Opcjonalnie: Wskazuje, czy część jest przemyślana przez model.

thoughtSignature string (bytes format)

Opcjonalnie: Nieprzezroczysty podpis myśli, dzięki któremu można go użyć ponownie w kolejnych żądaniach.

Ciąg znaków zakodowany w formacie base64.

partMetadata object (Struct format)

Niestandardowe metadane powiązane z częścią. Agenty używające 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ęść, albo 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 typem MIME wideo). W przypadku części innych niż wideo to pole jest ignorowane.

audioTranscription object (AudioTranscription)

Opcjonalnie: transkrypcja dźwięku (wejściowego lub wyjściowego); Ta właściwość jest ustawiana tylko wtedy, gdy ta część zawiera dane audio.

speechMetadata object (SpeechMetadata)

Opcjonalnie: Metadane stosowane do części tekstu w celu dostosowania sposobu ich wypowiadania lub syntezy, np. określenia tożsamości rozmówcy lub stylu mówienia.

data Union type
Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
text string

Tekst wbudowany.

inlineData object (Blob)

Bajty multimediów w tekście.

functionCall object (FunctionCall)

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

functionResponse object (FunctionResponse)

Wynik działania funkcji FunctionCall, który zawiera ciąg znaków reprezentujący FunctionDeclaration.name i uporządkowany obiekt JSON zawierający dane wyjściowe funkcji, jest używany jako kontekst dla modelu.

fileData object (FileData)

Dane oparte na identyfikatorach URI.

executableCode object (ExecutableCode)

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

codeExecutionResult object (CodeExecutionResult)

Wynik wykonania ExecutableCode.

toolCall object (ToolCall)

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

toolResponse object (ToolResponse)

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

Koniec pól wykluczających się wzajemnie.
metadata Union type
Steruje dodatkowym wstępnym przetwarzaniem danych. Ustaw tę opcję, gdy obecny jest element inline_data lub file_data, aby skonfigurować wstępne przetwarzanie statycznych multimediów dla poszczególnych części. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
videoMetadata object (VideoMetadata)

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

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),
  "audioTranscription": {
    object (AudioTranscription)
  },
  "speechMetadata": {
    object (SpeechMetadata)
  },

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

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

Blob

Nieprzetworzone bajty multimediów.

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

Pola
mimeType string

Standardowy typ MIME IANA danych źródłowych. Przykłady obsługiwanych typów: - Obrazy: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Audio: 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 Dodatkowe informacje znajdziesz w artykule Obsługiwane formaty plików. //

data string (bytes format)

Nieprzetworzone bajty w przypadku formatów multimedialnych.

Ciąg znaków zakodowany w formacie base64.

displayName string

Opcjonalnie: Określa nazwę używaną do odwoływania się do tego obiektu blob w modelu (np. „my_blob.png”). Używany jako identyfikator odwołania do obiektu blob, gdy właściwość verbalizationMode jest ustawiona na REFERENCE_ONLY.

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

FunctionCall

Przewidywana wartość FunctionCall zwrócona z modelu, 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 powinien wykonać functionCall i zwrócić odpowiedź z pasującym id.

name string

Wymagane. Nazwa funkcji do wywołania. Może zawierać znaki a–z, A–Z, 0–9, podkreślenia i łączniki. Maksymalna długość to 128 znaków.

args object (Struct format)

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

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

FunctionResponse

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

Pola
id string

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

name string

Wymagane. Nazwa funkcji do wywołania. Może zawierać znaki a–z, A–Z, 0–9, podkreślenia i łączniki. 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, które pasują do składni funkcji, aby zwracać dane wyjściowe funkcji, np. „output”, „result” itp. W szczególności, jeśli nie udało się wykonać wywołania funkcji, odpowiedź może zawierać klucz „error”, który zwraca szczegóły błędu do modelu.

Multimedia można dołączyć, używając podobiektu zawierającego pojedynczy klucz „$ref”, którego wartością jest inlineData.display_name obiektu FunctionResponsePart zawierającego multimedia. Więcej informacji znajdziesz na stronie https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

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

willContinue boolean

Opcjonalnie: Sygnalizuje, że wywołanie funkcji jest kontynuowane i zostanie zwróconych więcej odpowiedzi, co przekształca wywołanie 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 willContinue=False, aby zasygnalizować, że wywołanie funkcji zostało zakończone. Może to nadal powodować generowanie modelu. Aby uniknąć uruchomienia generowania i zakończyć wywołanie funkcji, dodatkowo ustaw scheduling na SILENT.

scheduling enum (Scheduling)

Opcjonalnie: Określa, jak odpowiedź powinna być zaplanowana w rozmowie. Dotyczy tylko wywołań funkcji NON_BLOCKING, w innym przypadku jest ignorowane. 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 składa się z danych, które mają powiązany typ danych. Pole FunctionResponsePart może zawierać tylko jeden z akceptowanych typów w FunctionResponsePart.data.

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

Pola
data Union type
Dane części odpowiedzi funkcji. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
inlineData object (FunctionResponseBlob)

Bajty multimediów w tekście.

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{

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

FunctionResponseBlob

Nieprzetworzone bajty multimediów dla odpowiedzi funkcji.

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

Pola
mimeType string

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

data string (bytes format)

Nieprzetworzone bajty w przypadku formatów multimedialnych.

Ciąg znaków 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 aktywuj generowania.
WHEN_IDLE dodać wynik do kontekstu rozmowy i wygenerować prompt bez przerywania trwającego procesu generowania.
INTERRUPT Dodaj wynik do kontekstu rozmowy, przerwij trwające generowanie i wyświetl prompt, aby wygenerować dane wyjściowe.

FileData

Dane oparte na identyfikatorze URI.

Pola
mimeType string

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

fileUri string

Wymagane. URI.

displayName string

Opcjonalnie: Określa nazwę używaną do odwoływania się do tego pliku w modelu (np. „mój_plik.pdf”). Używany jako identyfikator pliku referencyjnego, gdy parametr verbalizationMode ma wartość REFERENCE_ONLY.

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

ExecutableCode

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

Są generowane tylko podczas korzystania z narzędzia CodeExecution, w którym kod zostanie automatycznie wykonany, a odpowiedni CodeExecutionResult zostanie również wygenerowany.

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 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łniane tylko wtedy, gdy odpowiedni element ExecutableCode ma identyfikator.

outcome enum (Outcome)

Wymagane. Wynik wykonania kodu.

output string

Opcjonalnie: Zawiera stdout, gdy wykonanie kodu się powiedzie, lub stderr albo inny opis w przeciwnym razie.

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 jest dostępne).
OUTCOME_FAILED Nie udało się wykonać kodu. output zawiera stderr i stdout, jeśli istnieją.
OUTCOME_DEADLINE_EXCEEDED Wykonywanie 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óre model chce wywołać. Klient NIE powinien wykonywać tego ToolCall. Zamiast tego klient powinien przekazać ten ToolCall z powrotem do interfejsu API w kolejnej turze w wiadomości Content wraz z odpowiednim ToolResponse.

Pola
id string

Opcjonalnie: Unikalny identyfikator wywołania narzędzia. Serwer zwraca odpowiedź narzędzia z pasującym identyfikatorem 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, mapowane na Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Narzędzie do wyszukiwania grafiki, mapowane na Tool.google_search.search_types.image_search.
URL_CONTEXT Narzędzie kontekstu adresu URL, mapowane na Tool.url_context.
GOOGLE_MAPS Narzędzie Map Google, mapowane na Tool.google_maps.

ToolResponse

Dane wyjściowe wykonania ToolCall po stronie serwera. Ta wiadomość zawiera wyniki wywołania narzędzia, które zostało zainicjowane przez ToolCall z modelu. Klient powinien przekazać ten ToolResponse z powrotem do interfejsu API w kolejnej turze w wiadomości Content wraz z odpowiednim 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 odpowiada toolType w odpowiednim ToolCall.

response object (Struct format)

Opcjonalnie: Odpowiedź narzędzia.

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

VideoMetadata

Metadane opisują wejściowe treści wideo. Ustaw to w polu Part.video_metadata lub FunctionResponsePart.video_metadata, gdy pole inlineData lub fileData zawiera film, aby skonfigurować wstępne przetwarzanie statycznego filmu (np. przycinanie czasu, liczbę klatek, maksymalną liczbę klatek lub wyodrębnione warstwy treści).

Pola
startOffset string (Duration format)

Opcjonalnie: Przesunięcie początku filmu.

Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „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 literą „s”. Przykład: "3.5s".

fps number

Opcjonalnie: Liczba klatek filmu wysłanego do modelu. Jeśli nie zostanie określona, domyślna wartość to 1,0. Zakres liczby 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. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
level enum (Level)

Jakość tokenizacji używana w przypadku danych multimediów. , aby uzyskać pomoc dotyczącą interfejsu Gemini API .

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{

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

Poziom

Poziom rozdzielczości multimediów.

Wartości w polu enum
MEDIA_RESOLUTION_UNSPECIFIED Nie ustawiono rozdzielczości multimediów.
MEDIA_RESOLUTION_LOW Rozdzielczość multimediów jest ustawiona na niską.
MEDIA_RESOLUTION_MEDIUM Ustawiono średnią rozdzielczość multimediów.
MEDIA_RESOLUTION_HIGH Ustawiono wysoką rozdzielczość multimediów.
MEDIA_RESOLUTION_ULTRA_HIGH Rozdzielczość multimediów ustawiona na bardzo wysoką.

MediaProcessing

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

Wartości w polu enum
MEDIA_PROCESSING_UNSPECIFIED Domyślnie jest to przetwarzanie zależne od modelu.
STATIC Wyodrębnianie klatek ze stałą częstotliwością. Wszystkie klatki umieszczone w kontekście.
AGENTIC Nawigacja dynamiczna oparta na modelu. Zalecany do większości zastosowań.

AudioTranscription

Transkrypcja części audio. W przypadku dźwięku z wieloma rozmówcami każdy segment rozmówcy jest osobną częścią z własnym obiektem AudioTranscription zawierającym etykietę speakerLabel.

Pola
text string

Wymagane. Transkrypcja tego segmentu audio.

speakerLabel string

Opcjonalnie: Etykieta identyfikująca rozmówcę w tym segmencie audio (np. „spk_1”, „spk_2”). Występuje, gdy ustawiona jest diaryzacja.

words[] object (WordInfo)

Opcjonalnie: szczegółowe transkrypcje na poziomie słów i informacje o czasie; Występuje, gdy ustawiono parametr wordTimestamp.

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

WordInfo

Informacje o pojedynczym rozpoznanym słowie.

Pola
word string

Wymagane. Transkrypcja słowa.

startOffset string (Duration format)

Opcjonalnie: Przesunięcie początku słowa względem początku dźwięku.

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

endOffset string (Duration format)

Opcjonalnie: Przesunięcie końca słowa w czasie względem początku dźwięku.

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

Zapis JSON
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

Metadane mowy dla text części.

Pola
speaker string

Opcjonalnie: Opcjonalna nazwa rozmówcy na potrzeby syntezy wielu rozmówców.

style string

Opcjonalnie: Opcjonalne instrukcje dotyczące stylu syntezy mowy.

Zapis JSON
{
  "speaker": string,
  "style": string
}

Ś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. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Zezwalaj tylko na określone domeny.

networkMode enum (NetworkMode)

Tryb ruchu wychodzącego z sieci.

Koniec pól wykluczających się wzajemnie.
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 spoza listy 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 definiowanie typów danych wejściowych i wyjściowych. Te typy mogą być obiektami, ale też elementami podstawowymi i tablicami. 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 aktywuje żadnych specjalnych funkcji.

title string

Opcjonalnie: Tytuł schematu.

description string

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

nullable boolean

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

enum[] string

Opcjonalnie: Możliwe wartości elementu Type.STRING w formacie typu wyliczeniowego. Możemy na przykład zdefiniować typ wyliczeniowy Direction jako : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Opcjonalnie: Maksymalna liczba elementów dla Type.ARRAY.

minItems string (int64 format)

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

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

Opcjonalnie: Właściwości typu 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ść typu Type.STRING

pattern string

Opcjonalnie: Wzorzec typu Type.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 zostać zweryfikowana pod kątem dowolnego (jednego lub kilku) podschematu na liście.

propertyOrdering[] string

Opcjonalnie: Kolejność właściwości. Nie jest to standardowe pole w specyfikacji OpenAPI. 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 tutaj uwzględniony i ignorowany, aby deweloperzy, którzy wysyłają schematy z polem default, nie otrzymywali błędów dotyczących nieznanego pola.

items object (Schema)

Opcjonalnie: Schemat elementów typu Type.ARRAY.

minimum number

Opcjonalnie: POLA SCHEMATU DLA TYPU INTEGER i NUMBER Minimalna wartość dla Type.INTEGER i Type.NUMBER

maximum number

Opcjonalnie: Maksymalna wartość typu 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 numeru.
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ń poza wiedzą i zakresem modelu.

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 zostać zwrócona jako FunctionCall z argumentami po stronie klienta do wykonania. Model może zdecydować o wywołaniu podzbioru tych funkcji, wypełniając FunctionCall w odpowiedzi. Następna tura rozmowy może zawierać FunctionResponse z kontekstem generowania Content.role „funkcja” dla następnej tury modelu.

googleSearchRetrieval object (GoogleSearchRetrieval)

Opcjonalnie: Narzędzie do pobierania danych, które jest obsługiwane przez wyszukiwarkę Google.

codeExecution object (CodeExecution)

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

computerUse object (ComputerUse)

Opcjonalnie: Narzędzie, które umożliwia 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 można się połączyć.

googleMaps object (GoogleMaps)

Opcjonalnie: Narzędzie, które umożliwia ugruntowanie odpowiedzi modelu za pomocą kontekstu geoprzestrzennego związanego 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. Ta deklaracja FunctionDeclaration reprezentuje blok kodu, który może być używany przez model jako Tool i wykonywany przez klienta.

Pola
name string

Wymagane. Nazwa funkcji. Musi zawierać znaki a–z, A–Z, 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. Odzwierciedla ciąg znaków klucza obiektu parametru Open API 3.03: nazwa parametru. W nazwach parametrów wielkość liter ma znaczenie, Wartość schematu: schemat definiujący typ używany dla 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. Odzwierciedla obiekt odpowiedzi Open API 3.03. Schemat definiuje typ używany dla 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ę wzajemnie 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 jest ustawiona, system będzie czekać 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, zachowując rozmowę między użytkownikiem a modelem.

GoogleSearchRetrieval

Narzędzie do pobierania publicznych danych internetowych na potrzeby groundingu, oparte na technologii 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 przypadku dynamicznego pobierania. 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 aktywuj pobieranie.
MODE_DYNAMIC Uruchamiaj pobieranie tylko wtedy, gdy system uzna, że jest to 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ż ExecutableCode i CodeExecutionResult, 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 czasu. Jeśli klienci ustawią czas rozpoczęcia, muszą też ustawić czas zakończenia (i odwrotnie).

searchTypes object (SearchTypes)

Opcjonalnie: Zestaw typów wyszukiwania do włączenia. Jeśli nie jest ustawiona, wyszukiwanie w internecie jest 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 obrazów na potrzeby groundingu i powiązanych konfiguracji.

ComputerUse

Typ narzędzia: korzystanie z komputera.

Pola
environment enum (Environment)

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

excludedPredefinedFunctions[] string

Opcjonalnie: Domyślnie wstępnie zdefiniowane 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: 1. użycie bardziej ograniczonej lub innej przestrzeni działań; 2. ulepszenie definicji i instrukcji dotyczących wstępnie zdefiniowanych funkcji;

enablePromptInjectionDetection boolean

Opcjonalnie: Określa, czy włączyć sprawdzanie wykrywania wstrzykiwania promptów w przypadku żądania użycia komputera.

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, np. przeglądarkę internetową.

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

SafetyPolicy

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

Wartości w polu enum
SAFETY_POLICY_UNSPECIFIED Nieokreślona zasada 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. Gmaila, 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 Semantic Retrieval. Pliki są importowane do korpusów Semantic Retrieval za pomocą interfejsu ImportFile API.

Pola
fileSearchStoreNames[] string

Wymagane. Nazwy magazynów fileSearchStore, z których mają zostać pobrane 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 pobierania semantycznego.

topK integer

Opcjonalnie: Liczba fragmentów do pobrania semantycznego.

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

McpServer

MCPServer to serwer, który może być wywoływany przez model w celu wykonywania działań. Jest to serwer, który implementuje protokół MCP.

Pola
name string

Nazwa serwera MCP.

transport Union type
Transport używany do łączenia się z MCPServer. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
streamableHttpTransport object (StreamableHttpTransport)

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

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{
  "name": string,

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

StreamableHttpTransport

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

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 literą „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 literą „s”. Przykład: "3.5s".

terminateOnClose boolean

Określa, czy sesja klienta ma zostać zamknięta po zamknięciu transportu.

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

GoogleMaps

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

Pola
enableWidget boolean

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

Zapis JSON
{
  "enableWidget": boolean
}

Zasób REST: auth_tokens

Zasób: AuthToken

Żądanie utworzenia tymczasowego tokena uwierzytelniania.

Pola
name string

Tylko dane wyjściowe. Identyfikator. Sam token.

expireTime string (Timestamp format)

Opcjonalnie: Tylko dane wejściowe. Wartość niezmienna. Opcjonalny czas, po którym wiadomości w sesjach BidiGenerateContent będą odrzucane, gdy używany będzie wynikowy token. (Po tym czasie Gemini może zamknąć sesję).

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

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. Wartość niezmienna. Czas, po którym nowe sesje Live API korzystające z tokena wynikającego z tego żądania będą odrzucane.

Jeśli nie jest ustawiony, przyjmuje się domyślnie 60 sekund w przyszłości. Jeśli ta wartość jest ustawiona, musi być mniejsza niż 20 godzin w przyszłości.

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. Wartość niezmienna. Jeśli pole fieldMask jest puste i nie ma pola bidiGenerateContentSetup, obowiązujący komunikat BidiGenerateContentSetup jest pobierany z połączenia z Live API.

Jeśli pole fieldMask jest puste i bidiGenerateContentSetup jest obecne, to efektywny komunikat BidiGenerateContentSetup jest pobierany w całości z bidiGenerateContentSetup w tym żądaniu. Komunikat konfiguracji z połączenia z interfejsem Live API jest ignorowany.

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

Jest to rozdzielona przecinkami lista pełnych i jednoznacznych nazw pól. Przykład: "user.displayName,photo".

config Union type
Konfiguracja metody dla wynikowego tokena. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcjonalnie: Tylko dane wejściowe. Wartość niezmienna. Konfiguracja dotycząca BidiGenerateContent.

Koniec pól wykluczających się wzajemnie.
uses integer

Opcjonalnie: Tylko dane wejściowe. Wartość niezmienna. Liczba możliwych użyć tokena. Jeśli ta wartość wynosi 0, limit nie jest stosowany. Wznowienie sesji Live API nie jest liczone jako użycie. Jeśli nie zostanie określona, domyślnie będzie to 1.

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

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

BidiGenerateContentSetup

Wiadomość, która zostanie 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.

Klient powinien poczekać na wiadomość BidiGenerateContentSetupComplete, zanim wyśle kolejne wiadomości.

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 częściach należy używać tylko tekstu, a treść w każdej części będzie znajdować się w osobnym akapicie.

tools[] object (Tool)

Opcjonalnie: Lista Tools, których model może użyć do wygenerowania 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 modelu.

realtimeInputConfig object (RealtimeInputConfig)

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

sessionResumption object (SessionResumptionConfig)

Opcjonalnie: Konfiguruje mechanizm wznawiania sesji.

Jeśli zostanie uwzględniony, serwer wyśle 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 zasada jest skonfigurowana, umożliwia transkrypcję głosową. Transkrypcja jest zgodna z językiem wejściowym dźwięku, jeśli został on skonfigurowany.

outputAudioTranscription object (AudioTranscriptionConfig)

Opcjonalnie: Jeśli jest ustawiona, umożliwia transkrypcję wyjścia audio modelu. Transkrypcja jest zgodna z kodem języka określonym dla wyjściowego dźwięku, jeśli został on skonfigurowany.

historyConfig object (HistoryConfig)

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

labels map (key: string, value: string)

Opcjonalnie: Etykiety z metadanymi zdefiniowanymi przez użytkownika dla żądania.

Opcjonalnie: Etykiety muszą spełniać standardowe wymagania dotyczące ujednoliconych etykiet Cloud: – klucze etykiet muszą zaczynać się od litery. – Klucze i wartości etykiet nie mogą być dłuższe niż 63 znaki (punkty kodowe Unicode). Mogą zawierać tylko małe litery, cyfry, podkreślenia i myślniki. - Znaki międzynarodowe są dozwolone.

Sposób użycia: identyfikatory bezpieczeństwa od agregatorów: użyj klucza safety_identifier (np. {"safety_identifier": "user_session_123"})

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

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)
  },
  "labels": {
    string: string,
    ...
  }
}

GenerationConfig

Opcje konfiguracji generowania i danych wyjściowych modelu. Nie wszystkie parametry można konfigurować 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 stop_sequence. Sekwencja zatrzymania nie będzie częścią odpowiedzi.

responseMimeType string

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

responseSchema
(deprecated)
object (Schema)

Opcjonalnie: Schemat wyjściowy wygenerowanego tekstu kandydującego. Schematy muszą być podzbiorem schematu OpenAPI i mogą być obiektami, elementami podstawowymi lub tablicami.

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

Rola wycofana. Użyj w zamian zasady responseFormat.

_responseJsonSchema
(deprecated)
value (Value format)

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

Jeśli jest ustawiony, należy pominąć responseSchema, ale wymagany jest responseMimeType.

Można 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.

Odwołania cykliczne są rozwijane w ograniczonym stopniu i dlatego można ich używać tylko we właściwościach, które nie są wymagane. (Właściwości, które mogą mieć wartość null, nie są wystarczające). Jeśli w schemacie podrzędnym ustawiono $ref, nie można ustawić żadnych innych właściwości oprócz tych, które zaczynają się od $.

Rola wycofana. Użyj w zamian zasady responseFormat.

responseJsonSchema value (Value format)

Opcjonalnie: Szczegóły wewnętrzne. Zamiast tego pola użyj właściwości responseJsonSchema.

responseModalities[] enum (Modality)

Opcjonalnie: Żądane modalności odpowiedzi. Reprezentuje zestaw modalności, które model może zwrócić i których należy oczekiwać w odpowiedzi. Jest to dokładne dopasowanie do modalności odpowiedzi.

Model może mieć wiele kombinacji obsługiwanych modalności. Jeśli żądane modalności nie pasują do żadnej z obsługiwanych kombinacji, zostanie zwrócony błąd.

Pusta lista odpowiada żądaniu tylko tekstu.

candidateCount integer

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

maxOutputTokens integer

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

Uwaga: wartość domyślna różni się w zależności od modelu. Zobacz atrybut Model.output_token_limit obiektu Model zwracanego 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. Zobacz atrybut Model.temperature obiektu Model zwracanego przez funkcję getModel.

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

To pole nie jest już obsługiwane i jest ignorowane w Gemini 3.6 Flash i nowszych modelach.

topP number

Opcjonalnie: Maksymalne skumulowane prawdopodobieństwo tokenów, które należy uwzględnić podczas próbkowania.

Model używa 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, podczas gdy próbkowanie jądra ogranicza liczbę tokenów na podstawie skumulowanego prawdopodobieństwa.

Uwaga: wartość domyślna różni się w zależności 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 topK w żądaniach.

To pole nie jest już obsługiwane i jest ignorowane w Gemini 3.6 Flash i nowszych modelach.

topK integer

Opcjonalnie: Maksymalna liczba tokenów, które mają być uwzględniane podczas próbkowania.

Modele Gemini używają próbkowania Top-p (nucleus) lub 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ądra nie zezwalają na ustawienie topK.

Uwaga: wartość domyślna różni się w zależności 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 topK w żądaniach.

To pole nie jest już obsługiwane i jest ignorowane w Gemini 3.6 Flash i nowszych modelach.

seed integer

Opcjonalnie: Ziarno używane podczas dekodowania. Jeśli nie zostanie ustawiony, żądanie użyje losowo wygenerowanego ziarna.

presencePenalty number

Opcjonalnie: Kara za obecność zastosowana do logprobs następnego tokena, jeśli token został już wyświetlony w odpowiedzi.

Ta kara jest binarna (włączona/wyłączona) i nie zależy od liczby użyć tokena (po pierwszym użyciu). Użyj frequencyPenalty, aby kara zwiększała się z każdym użyciem.

Dodatnia kara zniechęca do używania tokenów, które zostały już użyte w odpowiedzi, co zwiększa zasób słownictwa.

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

frequencyPenalty number

Opcjonalnie: Kara za częstotliwość stosowana do logprobs następnego tokena, pomnożona przez liczbę wystąpień każdego tokena w odpowiedzi do tej pory.

Dodatnia kara zniechęca do używania tokenów, które zostały już użyte, proporcjonalnie do liczby użyć tokena: 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 używania tokenów proporcjonalnie do liczby przypadków użycia tokena. Niewielkie wartości ujemne zmniejszą słownictwo odpowiedzi. Większe wartości ujemne spowodują, że model zacznie powtarzać popularny token, dopóki nie osiągnie limitu maxOutputTokens.

responseLogprobs boolean

Opcjonalnie: Jeśli ma wartość prawda, wyeksportuj wyniki logprobs w odpowiedzi.

logprobs integer

Opcjonalnie: Prawidłowe tylko wtedy, gdy responseLogprobs=True. Ustawia liczbę najwyższych wartości logprobs, 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 obywatelskie. Może nie być dostępna we wszystkich modelach.

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ą rozumowania, zostanie zwrócony błąd.

imageConfig object (ImageConfig)

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

mediaResolution enum (MediaResolution)

Opcjonalnie: Jeśli zostanie określona, używana będzie określona rozdzielczość multimediów.

enableAffectiveDialog boolean

Opcjonalnie: Jeśli ta opcja jest włączona, model będzie wykrywać emocje i odpowiednio dostosowywać 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 translacji.

audioTranscriptionConfig object (AudioTranscriptionConfig)

Opcjonalnie: Konfiguracja transkrypcji dźwięku (rozpoznawania 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 konfiguracji z wieloma głośnikami. Wyklucza się z polem voiceConfig.

languageCode string

Opcjonalnie: Kod języka IETF BCP-47, który użytkownik skonfigurował w aplikacji. Służy 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-RU i th-TH.

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

VoiceConfig

Konfiguracja głosu, który ma być używany.

Pola
voice_config Union type
Konfiguracja głośnika, którego chcesz używać. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Konfiguracja gotowego głosu, który ma być używany.

voice string

Opcjonalnie: Identyfikator mówcy na potrzeby syntezy. Obsługiwane formaty:

  • Nazwa lektora w przypadku gotowych głosów (np. Orus lub Kore).
  • Identyfikator głosu w przypadku zapisanych głosów (np. voice_xxx).
  • Klucz replikacji głosu (na przykład voicekey_xxx).
Koniec pól wykluczających się wzajemnie.
Zapis JSON
{

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

PrebuiltVoiceConfig

Konfiguracja gotowego głośnika, którego chcesz użyć.

Pola
voiceName string

Opcjonalnie: Nazwa gotowego głosu, którego chcesz użyć.

Zapis JSON
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Konfiguracja konfiguracji z wieloma głośnikami.

Pola
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Wymagane. Wszystkie włączone głosy rozmówców.

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, którego chcesz użyć. Powinien być taki sam jak w prompcie.

voiceConfig object (VoiceConfig)

Wymagane. Konfiguracja głosu, który ma być używany.

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

ThinkingConfig

Konfiguracja funkcji myślenia.

Pola
includeThoughts boolean

Wskazuje, czy w odpowiedzi mają być uwzględniane myśli. Jeśli ma wartość true, procesy myślowe są zwracane tylko wtedy, gdy są dostępne.

thinkingBudget integer

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

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 go z wcześniejszymi modelami powoduje błąd.

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

ThinkingLevel

Zezwalaj użytkownikowi na określanie, jak długo model ma myśleć, za pomocą typu wyliczeniowego zamiast budżetu w postaci liczby całkowitej.

Wartości w polu enum
THINKING_LEVEL_UNSPECIFIED Wartość domyślna.
MINIMAL Brak lub niski poziom myślenia.
LOW Podstawowy poziom myślenia.
MEDIUM Średni poziom myślenia.
HIGH Myślenie rozszerzone.

ImageConfig

Konfiguracja funkcji generowania obrazów.

Pola
aspectRatio string

Opcjonalnie: Format obrazu, który ma zostać wygenerowany. 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 lub 21:9.

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

imageSize string

Opcjonalnie: Określa rozmiar wygenerowanych obrazów. Obsługiwane wartości to 512, 1K, 2K, 4K. Jeśli nie zostanie określona, 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 Nie ustawiono rozdzielczości multimediów.
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ą (powiększone kadrowanie z 256 tokenami).

ResponseFormatConfig

Konfiguracja formatu odpowiedzi. Jest to płaski obiekt, w którym każde opcjonalne pole podrzędne konfiguruje konkretny rodzaj danych wyjściowych.

Pola
text object (TextResponseFormat)

Opcjonalnie: Konfiguracja formatu wyjściowego tekstu.

audio object (AudioResponseFormat)

Opcjonalnie: Konfiguracja formatu wyjściowego dźwięku.

image object (ImageResponseFormat)

Opcjonalnie: Konfiguracja formatu wyjściowego obrazu.

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

TextResponseFormat

Konfiguracja formatu wyjściowego tekstu.

Pola
mimeType enum (MimeType)

Opcjonalnie: Typ MIME wyjściowego tekstu.

schema value (Value format)

Opcjonalnie: Schemat JSON, z którym 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 dla danych wyjściowych w formie tekstu.

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 zwykłego tekstu.

AudioResponseFormat

Konfiguracja formatu wyjściowego dźwięku.

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

bitRate integer

Opcjonalnie: Szybkość transmisji bitów w bitach na sekundę (b/s). 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ściowego dźwięku.

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 Nieprzetworzony format audio 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.
URI Dane audio są zwracane jako identyfikator URI.

ImageResponseFormat

Konfiguracja formatu wyjściowego obrazu.

Pola
mimeType enum (MimeType)

Opcjonalnie: Typ MIME wygenerowanego obrazu.

delivery enum (Delivery)

Opcjonalnie: Tryb wyświetlania obrazu wyjściowego.

aspectRatio enum (AspectRatio)

Opcjonalnie: Format obrazu wyjściowego.

imageSize enum (ImageSize)

Opcjonalnie: Rozmiar wygenerowanego obrazu.

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

MimeType

Obsługiwane typy MIME dla obrazów wyjściowych.

Wartości w polu enum
MIME_TYPE_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
IMAGE_JPEG Format pliku graficznego 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 wyjściowego.

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: 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ęzyków w standardzie BCP-47 (np. „en”, „es”, „fr”).

echoTargetLanguage boolean

Opcjonalnie: Jeśli ustawiona jest wartość „prawda”, model będzie generować dźwięk, gdy język docelowy jest językiem mówionym, 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ęzyków w standardzie BCP-47, które zawierają wskazówki dotyczące języków występujących w dźwięku. Jeśli zostanie pominięty lub pozostanie pusty, domyślnie zostanie użyte automatyczne wykrywanie języka.

adaptationPhrases[]
(deprecated)
string

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

customVocabulary[] string

Opcjonalnie: Lista niestandardowych wyrażeń, 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.

mode enum (Mode)

Opcjonalnie: Konfiguruje tryb transkrypcji. Obsługiwane wartości: VERBATIM, SMART. Jeśli nie określono inaczej, domyślnie jest to transkrypcja VERBATIM. W trybie SMART model usuwa pauzy i wtrącenia (wypełniacze, powtórzenia i falstarty), wprowadza drobne poprawki gramatyczne, automatycznie formatuje tekst (akapity, wypunktowania, listy numerowane) i wprowadza drobne zmiany użytkownika (wbudowane autokorekty). Sygnatury czasowe i diaryzacja są niezgodne z trybem SMART.

language_config Union type
Wycofane: użyj zamiast tego language_codes najwyższego poziomu. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
languageAuto
(deprecated)
object (LanguageAuto)

Opcjonalnie: Model automatycznie wykryje język.

languageHints
(deprecated)
object (LanguageHints)

Opcjonalnie: Określa co najmniej 1 język w ścieżce audio.

Koniec pól wykluczających się wzajemnie.
Zapis JSON
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,
  "mode": enum (Mode),

  // 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 zostać wykryty automatycznie.

LanguageHints

Dostarcza modelowi wskazówek dotyczących możliwych języków występujących w nagraniu audio.

Pola
languageCodes[]
(deprecated)
string

Wymagane. Kody języków w standardzie BCP-47.

Zapis JSON
{
  "languageCodes": [
    string
  ]
}

Tryb

Tryb transkrypcji.

Wartości w polu enum
MODE_UNSPECIFIED Nieokreślony tryb transkrypcji.
VERBATIM Tryb transkrypcji dosłownej.
SMART Tryb inteligentnej transkrypcji.

RealtimeInputConfig

Konfiguruje działanie danych wejściowych w czasie rzeczywistym w usłudze BidiGenerateContent.

Pola
automaticActivityDetection object (AutomaticActivityDetection)

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

activityHandling enum (ActivityHandling)

Opcjonalnie: Określa, jaki efekt ma aktywność.

turnCoverage enum (TurnCoverage)

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

interimTranscriptTimestampEnabled boolean

Opcjonalnie: Konfiguruje sygnatury czasowe transkrypcji tymczasowej.

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

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 niższa jest ta wartość, tym bardziej czułe jest wykrywanie początku mowy i tym krótsze wypowiedzi mogą być rozpoznawane. Zwiększa to jednak prawdopodobieństwo wystąpienia wyników fałszywie dodatnich.

endOfSpeechSensitivity enum (EndSensitivity)

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

silenceDurationMs integer

Opcjonalnie: Wymagany czas trwania wykrytego braku mowy (np. ciszy) przed zakończeniem mowy. Im większa jest ta wartość, tym dłuższe mogą być przerwy w mowie bez przerywania aktywności użytkownika, ale zwiększy to czas oczekiwania modelu.

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

StartSensitivity

Określa, jak wykrywany jest początek 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żytkownika;

Wartości w polu enum
ACTIVITY_HANDLING_UNSPECIFIED Jeśli nie określono inaczej, działanie domyślne to START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Jeśli ma wartość „true”, rozpoczęcie aktywności przerwie odpowiedź modelu (tzw. „wtrącenie”). Bieżąca odpowiedź modelu zostanie przerwana w momencie przerwania. Jest to zachowanie domyślne.
NO_INTERRUPTION Odpowiedź modelu nie zostanie przerwana.

TurnCoverage

Opcje dotyczące danych wejściowych uwzględnianych w turze użytkownika.

Wartości w polu enum
TURN_COVERAGE_UNSPECIFIED Jeśli nie zostanie określone, działanie domyślne 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ść audio oznacza mowę i wyklucza ciszę.

SessionResumptionConfig

Konfiguracja wznawiania sesji.

Ta wiadomość jest uwzględniona 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 jest obecny, tworzona jest nowa sesja.

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, dzięki któremu nie przekracza ono określonej długości.

Pola
compression_mechanism Union type
Używany mechanizm kompresji okna kontekstu. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
slidingWindow object (SlidingWindow)

Mechanizm przesuwanego okna.

Koniec pól wykluczających się wzajemnie.
triggerTokens string (int64 format)

Liczba tokenów (przed uruchomieniem tury) wymagana do aktywowania kompresji okna kontekstu.

Można to wykorzystać do zrównoważenia jakości i czasu oczekiwania, 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 uruchamiać zbyt często.

Jeśli nie jest ustawiona, domyślnie wynosi 80% limitu okna kontekstu modelu. Pozostawia to 20% na następne żą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 zaczyna się od początku tury roli USER. Instrukcje systemowe i wszelkie BidiGenerateContentSetup.prefix_turns zawsze pozostaną na początku wyniku.

Pola
targetTokens string (int64 format)

Docelowa liczba tokenów do zachowania. Wartość domyślna to triggerTokens/2.

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

Zapis JSON
{
  "targetTokens": string
}

HistoryConfig

Konfiguracja historii.

Ta wiadomość jest uwzględniona w konfiguracji sesji jako BidiGenerateContentSetup.history_config. Konfiguruje wymianę wiadomości z historii.

Pola
initialHistoryInClientContent boolean

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

Zapis JSON
{
  "initialHistoryInClientContent": boolean
}

Metoda: auth_tokens.create

Tworzy token, którego można użyć do ograniczenia 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. Wartość niezmienna. Opcjonalny czas, po którym wiadomości w sesjach BidiGenerateContent będą odrzucane, jeśli używany będzie wynikowy token. (Po tym czasie Gemini może zamknąć sesję).

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

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. Wartość niezmienna. Czas, po którym nowe sesje Live API korzystające z tokena wynikającego z tego żądania będą odrzucane.

Jeśli nie jest ustawiony, przyjmuje się domyślnie 60 sekund w przyszłości. Jeśli ta wartość jest ustawiona, musi być mniejsza niż 20 godzin w przyszłości.

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. Wartość niezmienna. Jeśli pole fieldMask jest puste i nie ma pola bidiGenerateContentSetup, obowiązujący komunikat BidiGenerateContentSetup jest pobierany z połączenia z Live API.

Jeśli pole fieldMask jest puste i bidiGenerateContentSetup jest obecne, to efektywny komunikat BidiGenerateContentSetup jest pobierany w całości z bidiGenerateContentSetup w tym żądaniu. Komunikat konfiguracji z połączenia z interfejsem Live API jest ignorowany.

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

Jest to rozdzielona przecinkami lista pełnych i jednoznacznych nazw pól. Przykład: "user.displayName,photo".

config Union type
Konfiguracja metody dla wynikowego tokena. Poniżej znajduje się lista pól, które wzajemnie się wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Opcjonalnie: Tylko dane wejściowe. Wartość niezmienna. Konfiguracja dotycząca BidiGenerateContent.

Koniec pól wykluczających się wzajemnie.
uses integer

Opcjonalnie: Tylko dane wejściowe. Wartość niezmienna. Liczba możliwych użyć tokena. Jeśli ta wartość wynosi 0, limit nie jest stosowany. Wznowienie sesji Live API nie jest liczone jako użycie. Jeśli nie zostanie określona, domyślnie będzie to 1.

Treść odpowiedzi

W przypadku powodzenia treść odpowiedzi obejmuje nowo utworzone wystąpienie elementu AuthToken.