Generating content

Gemini API поддерживает генерацию контента с изображениями, аудио, кодом, инструментами и не только. Чтобы узнать больше о каждой из этих функций, ознакомьтесь с приведенной ниже информацией и образцами кода или прочитайте подробные руководства.

Метод models.generateContent

Генерирует ответ модели на основе входных данных GenerateContentRequest. Подробную информацию об использовании можно найти в руководстве по генерации текста. Возможности ввода различаются в зависимости от модели, в том числе настроенной. Подробную информацию вы найдете в руководстве по моделям и руководстве по настройке.

Конечная точка

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

Параметры пути

model string

Обязательно. Название Model, которое будет использоваться для генерации дополнения.

Формат: models/{model}. Форма: models/{model}.

Тело запроса

Ниже приведена структура данных в теле запроса.

Поля
contents[] object (Content)

Обязательно. Содержимое текущего разговора с моделью.

Для одноэтапных запросов это один экземпляр. Для многоэтапных запросов, таких как чат, это повторяющееся поле, которое содержит историю разговора и последний запрос.

tools[] object (Tool)

Необязательное поле. Список Tools, которые Model может использовать для генерации следующего ответа.

Tool – это фрагмент кода, который позволяет системе взаимодействовать с внешними системами для выполнения действия или набора действий за пределами знаний и области действия Model. Поддерживаемые значения Tool: Function и codeExecution. Подробную информацию вы найдете в руководствах по вызову функций и выполнению кода.

toolConfig object (ToolConfig)

Необязательное поле. Конфигурация инструмента для любого Tool, указанного в запросе. Пример использования приведен в руководстве по вызову функций.

safetySettings[] object (SafetySetting)

Необязательное поле. Список уникальных экземпляров SafetySetting для блокировки небезопасного контента.

Это требование будет применяться к GenerateContentRequest.contents и GenerateContentResponse.candidates. Для каждого типа SafetyCategory должна быть только одна настройка. API будет блокировать любой контент и ответы, которые не соответствуют пороговым значениям, заданным в этих настройках. Этот список переопределяет настройки по умолчанию для каждого параметра SafetyCategory, указанного в safetySettings. Если для определенной категории SafetyCategory в списке не указан уровень SafetySetting, API будет использовать для нее настройки безопасности по умолчанию. Поддерживаются следующие категории вреда: HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Подробную информацию о доступных настройках безопасности можно найти в руководстве. Также ознакомьтесь с руководством по безопасности, чтобы узнать, как учитывать требования безопасности в приложениях ИИ.

continuationToken string (bytes format)

Необязательное поле. Непрозрачный токен продолжения, используемый для возобновления генерации из предыдущего ответа models.generateContent или models.streamGenerateContent, который остановился с finishReason, установленным на CONTINUATION. Обратите внимание, что параметр contents является обязательным и должен точно повторять запрос и историю разговора из исходного запроса, если в запросе указан токен продолжения.

Строка в кодировке Base64.

labels map (key: string, value: string)

Необязательное поле. Ярлыки с пользовательскими метаданными для запроса.

Необязательное поле. Ярлыки должны соответствовать стандартным требованиям к унифицированным ярлыкам Cloud: - Ключи ярлыков должны начинаться с буквы. - Ключи и значения ярлыков могут содержать не более 63 символов (кодовых точек Unicode) и состоять только из строчных букв, цифр, символов подчеркивания и тире. - Можно использовать буквы английского и других алфавитов.

Использование: - Идентификаторы безопасности от агрегаторов: используйте ключ safety_identifier (например, {"safety_identifier": "user_session_123"})

Объект содержит список из нескольких пар ("key": value). Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

systemInstruction object (Content)

Необязательное поле. Системные инструкции, заданные разработчиком. В настоящее время поддерживается только текст.

generationConfig object (GenerationConfig)

Необязательное поле. Параметры конфигурации для генерации и выходных данных модели.

cachedContent string

Необязательное поле. Название контента, кешированного для использования в качестве контекста при создании подсказки. Формат: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Необязательное поле. Уровень обслуживания запроса.

store boolean

Необязательное поле. Настраивает поведение ведения журнала для заданного запроса. Если он задан, то имеет приоритет над конфигурацией ведения журнала на уровне проекта.

Пример запроса

Текст

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

Проложить маршрут

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)

Ракушка

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

Изображение

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

Проложить маршрут

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)

Ракушка

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

Аудио

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

Проложить маршрут

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)

Ракушка

# 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

Видео

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

Проложить маршрут

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)

Ракушка

# 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=}")

Проложить маршрут

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)

Ракушка

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

Чат

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

Проложить маршрут

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

Ракушка

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

Кеш

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

Проложить маршрут

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)

Настроенная модель

Python

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

Режим JSON

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

Проложить маршрут

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)

Ракушка

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

Выполнение кода

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)

Проложить маршрут

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

Вызов функций

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)

Проложить маршрут

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

Ракушка


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

Конфигурация генерации

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

Проложить маршрут

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)

Ракушка

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

Настройки безопасности

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

Проложить маршрут

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

Ракушка

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

Системные инструкции

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

Проложить маршрут

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)

Ракушка

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

Тело ответа

Если ответ получен успешно, его тело содержит экземпляр GenerateContentResponse.

Метод models.streamGenerateContent

Генерирует потоковый ответ от модели на основе входных данных GenerateContentRequest.

Конечная точка

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

Параметры пути

model string

Обязательно. Название Model, которое будет использоваться для генерации дополнения.

Формат: models/{model}. Форма: models/{model}.

Тело запроса

Ниже приведена структура данных в теле запроса.

Поля
contents[] object (Content)

Обязательно. Содержимое текущего разговора с моделью.

Для одноэтапных запросов это один экземпляр. Для многоэтапных запросов, таких как чат, это повторяющееся поле, которое содержит историю разговора и последний запрос.

tools[] object (Tool)

Необязательное поле. Список Tools, которые Model может использовать для генерации следующего ответа.

Tool – это фрагмент кода, который позволяет системе взаимодействовать с внешними системами для выполнения действия или набора действий за пределами знаний и области действия Model. Поддерживаемые значения Tool: Function и codeExecution. Подробную информацию вы найдете в руководствах по вызову функций и выполнению кода.

toolConfig object (ToolConfig)

Необязательное поле. Конфигурация инструмента для любого Tool, указанного в запросе. Пример использования приведен в руководстве по вызову функций.

safetySettings[] object (SafetySetting)

Необязательное поле. Список уникальных экземпляров SafetySetting для блокировки небезопасного контента.

Это требование будет применяться к GenerateContentRequest.contents и GenerateContentResponse.candidates. Для каждого типа SafetyCategory должна быть только одна настройка. API будет блокировать любой контент и ответы, которые не соответствуют пороговым значениям, заданным в этих настройках. Этот список переопределяет настройки по умолчанию для каждого параметра SafetyCategory, указанного в safetySettings. Если для определенной категории SafetyCategory в списке не указан уровень SafetySetting, API будет использовать для нее настройки безопасности по умолчанию. Поддерживаются следующие категории вреда: HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_CIVIC_INTEGRITY, HARM_CATEGORY_JAILBREAK. Подробную информацию о доступных настройках безопасности можно найти в руководстве. Также ознакомьтесь с руководством по безопасности, чтобы узнать, как учитывать требования безопасности в приложениях ИИ.

continuationToken string (bytes format)

Необязательное поле. Непрозрачный токен продолжения, используемый для возобновления генерации из предыдущего ответа models.generateContent или models.streamGenerateContent, который остановился с finishReason, установленным на CONTINUATION. Обратите внимание, что параметр contents является обязательным и должен точно повторять запрос и историю разговора из исходного запроса, если в запросе указан токен продолжения.

Строка в кодировке Base64.

labels map (key: string, value: string)

Необязательное поле. Ярлыки с пользовательскими метаданными для запроса.

Необязательное поле. Ярлыки должны соответствовать стандартным требованиям к унифицированным ярлыкам Cloud: - Ключи ярлыков должны начинаться с буквы. - Ключи и значения ярлыков могут содержать не более 63 символов (кодовых точек Unicode) и состоять только из строчных букв, цифр, символов подчеркивания и тире. - Можно использовать буквы английского и других алфавитов.

Использование: - Идентификаторы безопасности от агрегаторов: используйте ключ safety_identifier (например, {"safety_identifier": "user_session_123"})

Объект содержит список из нескольких пар ("key": value). Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

systemInstruction object (Content)

Необязательное поле. Разработчик задал системные инструкции. В настоящее время поддерживается только текст.

generationConfig object (GenerationConfig)

Необязательное поле. Параметры конфигурации для генерации и выходных данных модели.

cachedContent string

Необязательное поле. Название контента, кешированного для использования в качестве контекста при создании подсказки. Формат: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

Необязательное поле. Уровень обслуживания запроса.

store boolean

Необязательное поле. Настраивает поведение ведения журнала для заданного запроса. Если он задан, то имеет приоритет над конфигурацией ведения журнала на уровне проекта.

Пример запроса

Текст

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

Проложить маршрут

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

Ракушка

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

Изображение

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

Проложить маршрут

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

Ракушка

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

Аудио

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)

Проложить маршрут

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

Ракушка

# 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

Видео

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

Проложить маршрут

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

Ракушка

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

Проложить маршрут

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

Ракушка

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

Чат

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

Проложить маршрут

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

Ракушка

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"

Тело ответа

Если запрос выполнен успешно, то тело ответа содержит поток экземпляров GenerateContentResponse.

GenerateContentResponse

Ответ модели, поддерживающий несколько вариантов ответа.

Оценки безопасности и фильтрация контента указываются как для запроса в GenerateContentResponse.prompt_feedback, так и для каждого варианта в finishReason и safetyRatings. API: - Возвращает либо все запрошенные варианты, либо ни одного. - Не возвращает ни одного варианта, только если в запросе была ошибка (проверьте promptFeedback). - Сообщает отзыв о каждом варианте в finishReason и safetyRatings.

Поля
candidates[] object (Candidate)

Варианты ответов от модели.

promptFeedback object (PromptFeedback)

Возвращает отзыв о запросе, связанный с фильтрами контента.

usageMetadata object (UsageMetadata)

Только для вывода. Метаданные об использовании токенов в запросах на генерацию.

modelVersion string

Только для вывода. Версия модели, использованная для генерации ответа.

responseId string

Только вывод. responseId используется для идентификации каждого ответа.

modelStatus object (ModelStatus)

Только для вывода. Текущий статус модели.

JSON-представление
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

Набор метаданных отзыва, указанный в запросе GenerateContentRequest.content.

Поля
blockReason enum (BlockReason)

Необязательное поле. Если задано, запрос был заблокирован и варианты не возвращаются. Перефразируйте запрос.

safetyRatings[] object (SafetyRating)

Оценки безопасности запроса. Для каждой категории указывается не более одной оценки.

JSON-представление
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

Указывает причину, по которой запрос был заблокирован.

Перечисления
BLOCK_REASON_UNSPECIFIED Значение по умолчанию. Это значение не используется.
SAFETY Запрос заблокирован из соображений безопасности. Проверьте safetyRatings, чтобы узнать, какая категория безопасности заблокировала его.
OTHER Запрос заблокирован по неизвестным причинам.
BLOCKLIST Запрос заблокирован из-за терминов, которые включены в черный список терминологии.
PROHIBITED_CONTENT Запрос заблокирован из-за запрещенного контента.
IMAGE_SAFETY Варианты заблокированы из-за небезопасного контента в сгенерированном изображении.

UsageMetadata

Метаданные об использовании токенов в запросе на генерацию.

Поля
promptTokenCount integer

Количество токенов в запросе. Если задано значение cachedContent, это по-прежнему общий эффективный размер запроса, то есть он включает количество токенов в кешированном контенте.

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)

Только для вывода. Уровень сервиса запроса.

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

Статус базовой модели. Указывает этап базовой модели и время прекращения поддержки, если применимо.

Поля
modelStage enum (ModelStage)

Стадия базовой модели.

retirementTime string (Timestamp format)

Время, когда модель будет выведена из эксплуатации.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

message string

Сообщение с объяснением статуса модели.

JSON-представление
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

Определяет этап базовой модели.

Перечисления
MODEL_STAGE_UNSPECIFIED Этап модели не указан.
UNSTABLE_EXPERIMENTAL

Базовая модель подлежит многочисленным настройкам.

EXPERIMENTAL Модели на этом этапе предназначены только для экспериментов.
PREVIEW Модели на этом этапе более зрелые, чем экспериментальные модели.
STABLE Модели на этом этапе считаются стабильными и готовыми к использованию в рабочей среде.
LEGACY Если модель находится на этом этапе, значит в ближайшем будущем она будет объявлена устаревшей. Эта модель доступна только существующим клиентам.
DEPRECATED

Поддержка моделей на этом этапе прекращена. Эти модели нельзя использовать.

RETIRED Модели на этом этапе прекращают работу. Эти модели нельзя использовать.

Кандидат

Вариант ответа, сгенерированный моделью.

Поля
content object (Content)

Только для вывода. Сгенерированный контент, возвращенный моделью.

finishReason enum (FinishReason)

Необязательное поле. Только для вывода. Причина, по которой модель прекратила генерировать токены.

Если поле пустое, модель не прекратила генерировать токены.

safetyRatings[] object (SafetyRating)

Список оценок безопасности варианта ответа.

Для каждой категории указывается не более одной оценки.

citationMetadata object (CitationMetadata)

Только для вывода. Информация о цитировании для варианта, сгенерированного моделью.

В этом поле может быть указана информация о декламации для любого текста, включенного в content. Это фрагменты, которые "цитируются" из защищенных авторским правом материалов в данных для обучения базовой LLM.

tokenCount integer

Только для вывода. Количество токенов для этого кандидата.

groundingAttributions[] object (GroundingAttribution)

Только для вывода. Информация об атрибуции для источников, которые использовались для обоснованного ответа.

Это поле заполняется для звонков GenerateAnswer.

groundingMetadata object (GroundingMetadata)

Только для вывода. Метаданные заземления для кандидата.

Это поле заполняется для звонков GenerateContent.

avgLogprobs number

Только для вывода. Средняя логарифмическая вероятность варианта.

logprobsResult object (LogprobsResult)

Только для вывода. Оценки логарифмического правдоподобия для токенов ответа и лучших токенов.

urlContextMetadata object (UrlContextMetadata)

Только для вывода. Метаданные, связанные с инструментом получения URL-контекста.

continuationToken string (bytes format)

Необязательный непрозрачный токен продолжения, возвращаемый, когда finishReason имеет значение CONTINUATION. Клиенты могут передать этот токен в последующем запросе GenerateContentRequest, чтобы продолжить генерацию.

Строка в кодировке Base64.

index integer

Только для вывода. Индекс кандидата в списке кандидатов на ответ.

finishMessage string

Необязательное поле. Только для вывода. Причина, по которой модель прекратила генерировать токены. Заполняется, только если задано значение finishReason.

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

Определяет причину, по которой модель прекратила генерировать токены.

Перечисления
FINISH_REASON_UNSPECIFIED Значение по умолчанию. Это значение не используется.
STOP Естественная точка остановки модели или предоставленная последовательность остановки.
MAX_TOKENS Достигнуто максимальное количество токенов, указанное в запросе.
SAFETY Контент варианта ответа был помечен как небезопасный.
RECITATION Контент ответа-кандидата был помечен как цитирование.
LANGUAGE Контент варианта ответа был помечен как содержащий неподдерживаемый язык.
OTHER Причина неизвестна.
BLOCKLIST Генерация токенов остановлена, так как контент содержит запрещенные термины.
PROHIBITED_CONTENT Генерация токенов остановлена, так как они могут содержать запрещенный контент.
SPII Генерация токенов остановлена, поскольку контент может содержать конфиденциальную информацию, позволяющую идентифицировать личность.
MALFORMED_FUNCTION_CALL Вызов функции, сгенерированный моделью, недействителен.
IMAGE_SAFETY Генерация токенов остановлена, так как сгенерированные изображения нарушают правила безопасности.
IMAGE_PROHIBITED_CONTENT Генерация изображений остановлена, поскольку сгенерированные изображения содержат другой запрещенный контент.
IMAGE_OTHER Генерация изображения остановлена из-за другой проблемы.
NO_IMAGE Модель должна была создать изображение, но не сделала этого.
IMAGE_RECITATION Генерация изображения остановлена из-за цитирования.
UNEXPECTED_TOOL_CALL Модель сгенерировала вызов инструмента, но в запросе не было включено ни одного инструмента.
TOO_MANY_TOOL_CALLS Модель вызвала слишком много инструментов подряд, поэтому система прекратила выполнение.
MISSING_THOUGHT_SIGNATURE В запросе отсутствует по крайней мере одна подпись мысли.
MALFORMED_RESPONSE Завершено из-за неверного ответа.
ESCALATION Запрос был отфильтрован правилом эскалации.
PUP_LIMITED_DISABLED Указывает, что генерация токенов остановлена, поскольку аккаунт пользователя ограничен или отключен из-за нарушения правил в отношении запрещенного использования.
CONTINUATION Генерация токенов была остановлена, поскольку ответ достиг лимита токенов на запрос, но генерация ещё не завершена. Ответ модели можно продолжить с помощью последующего запроса, используя возвращенный continuationToken. Обратите внимание, что значение maxOutputTokens является совокупным для всех переходов и должно монотонно увеличиваться или быть опущено.

GroundingAttribution

Указание авторства источника, который использовался для ответа.

Поля
sourceId object (AttributionSourceId)

Только для вывода. Идентификатор источника, связанного с этой атрибуцией.

content object (Content)

Контент источника заземления, на который ссылается атрибуция.

JSON-представление
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

Идентификатор источника, связанного с этой атрибуцией.

Поля
source Union type
Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
groundingPassage object (GroundingPassageId)

Идентификатор встроенного фрагмента.

semanticRetrieverChunk object (SemanticRetrieverChunk)

Идентификатор Chunk, полученный с помощью семантического поисковика.

Конец взаимоисключающих полей.
JSON-представление
{

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

GroundingPassageId

Идентификатор части в GroundingPassage.

Поля
passageId string

Только для вывода. Идентификатор фрагмента, соответствующий GroundingPassage.id GenerateAnswerRequest.

partIndex integer

Только для вывода. Индекс части в GroundingPassage.content GenerateAnswerRequest.

JSON-представление
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

Идентификатор для Chunk, полученный с помощью семантического поисковика, указанного в GenerateAnswerRequest с помощью SemanticRetrieverConfig.

Поля
source string

Только для вывода. Название источника, соответствующее значению SemanticRetrieverConfig.source в запросе. Примеры: corpora/123 или corpora/123/documents/abc.

chunk string

Только для вывода. Название Chunk, содержащего текст атрибуции. Пример: corpora/123/documents/abc/chunks/xyz

JSON-представление
{
  "source": string,
  "chunk": string
}

GroundingMetadata

Метаданные, возвращаемые клиенту, когда включено заземление.

Поля
groundingChunks[] object (GroundingChunk)

Список подтверждающих ссылок, полученных из указанного источника заземления. При потоковой передаче он содержит только фрагменты обоснования, которые не были включены в метаданные обоснования предыдущих ответов.

groundingSupports[] object (GroundingSupport)

Список поддерживаемых источников.

webSearchQueries[] string

Поисковые запросы для последующего веб-поиска.

imageSearchQueries[] string

Поисковые запросы для поиска изображений, используемые для обоснования.

searchEntryPoint object (SearchEntryPoint)

Необязательное поле. Поисковая строка Google для последующего поиска в интернете.

retrievalMetadata object (RetrievalMetadata)

Метаданные, связанные с извлечением в потоке обоснования.

googleMapsWidgetContextToken string

Необязательное поле. Название ресурса токена контекста виджета Google Карт, который можно использовать с виджетом PlacesContextElement для отображения контекстных данных. Заполняется, только если включено обоснование с Google Картами.

JSON-представление
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Точка входа в Google Поиск.

Поля
renderedContent string

Необязательное поле. Фрагмент веб-контента, который можно встроить в веб-страницу или компонент WebView приложения.

sdkBlob string (bytes format)

Необязательное поле. Закодированный в Base64 JSON, представляющий массив кортежей <поисковый запрос, URL поиска>.

Строка в кодировке Base64.

JSON-представление
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

GroundingChunk представляет собой фрагмент подтверждающих данных, на которых основан ответ модели. Это может быть фрагмент веб-страницы, контекст, извлеченный из файла, или информация из Google Карт.

Поля
chunk_type Union type
Тип фрагмента. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
web object (Web)

Фрагмент обоснования из интернета.

image object (Image)

Необязательное поле. Фрагмент обоснования из поиска по картинкам.

retrievedContext object (RetrievedContext)

Необязательное поле. Фрагмент обоснования из контекста, полученного инструментом поиска файлов.

maps object (Maps)

Необязательное поле. Фрагмент обоснования из Google Карт.

Конец взаимоисключающих полей.
JSON-представление
{

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

Веб

Фрагмент из интернета.

Поля
uri string

Только для вывода. URI-ссылка на фрагмент.

title string

Только для вывода. Название фрагмента.

JSON-представление
{
  "uri": string,
  "title": string
}

Изображение

Фрагмент из поиска картинок.

Поля
sourceUri string

URI веб-страницы для атрибуции.

imageUri string

URL объекта изображения.

title string

Название веб-страницы, на которой размещено изображение.

domain string

Корневой домен веб-страницы, на которой размещено изображение, например example.com.

JSON-представление
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

Фрагмент из контекста, полученный инструментом поиска файлов.

Поля
customMetadata[] object (CustomMetadata)

Необязательное поле. Предоставленные пользователем метаданные об извлеченном контексте.

uri string

Необязательное поле. URI-ссылка на документ семантического поиска.

title string

Необязательное поле. Название документа.

text string

Необязательное поле. Текст фрагмента.

fileSearchStore string

Необязательное поле. Название FileSearchStore, в котором находится документ. Пример: fileSearchStores/123

pageNumber integer

Необязательное поле. Номер страницы извлеченного контекста (если применимо).

mediaId string

Необязательное поле. Название ресурса медиаобъекта для результатов мультимодального поиска файлов. Формат: fileSearchStores/{file_search_store_id}/media/{blobId}

JSON-представление
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

Предоставленные пользователем метаданные о GroundingFact.

Поля
key string

Ключ метаданных.

value Union type
Значение метаданных. Может быть строкой, списком строк или числом. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
stringValue string

Необязательное поле. Строковое значение метаданных.

stringListValue object (StringList)

Необязательное поле. Список строковых значений для метаданных.

numericValue number

Необязательное поле. Числовое значение метаданных. Ожидаемый диапазон этого значения зависит от используемого key.

Конец взаимоисключающих полей.
JSON-представление
{
  "key": string,

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

StringList

Список строковых значений.

Поля
values[] string

Строковые значения списка.

JSON-представление
{
  "values": [
    string
  ]
}

Карты

Фрагмент обоснования из Google Карт. Фрагмент Maps соответствует одному месту.

Поля
uri string

URI-ссылка на место.

title string

Название места.

text string

Текстовое описание места.

placeId string

Идентификатор места в формате places/{placeId}. Пользователь может использовать этот идентификатор для поиска места.

placeAnswerSources object (PlaceAnswerSources)

Источники, которые предоставляют ответы о характеристиках определенного места в Google Картах.

JSON-представление
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Набор источников, в которых можно найти ответы на вопросы об особенностях места в Google Картах. Каждое сообщение PlaceAnswerSources соответствует определенному месту в Google Картах. Инструмент Google Карт использовал эти источники, чтобы отвечать на вопросы об особенностях места (например, "Есть ли в баре Foo Wi-Fi?" или "Доступен ли бар Foo для инвалидов-колясочников?"). В настоящее время в качестве источников поддерживаются только фрагменты отзывов.

Поля
reviewSnippets[] object (ReviewSnippet)

Фрагменты отзывов, которые используются для генерации ответов о характеристиках определенного места в Google Картах.

JSON-представление
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Фрагмент отзыва пользователя, который отвечает на вопрос о характеристиках определенного места в Google Картах.

Поля
reviewId string

Идентификатор фрагмента отзыва.

googleMapsUri string

Ссылка на отзыв пользователя в Google Картах.

title string

Название отзыва.

JSON-представление
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

Поддержка обоснования.

Поля
groundingChunkIndices[] integer

Необязательное поле. Список индексов (в grounding_chunk в response.candidate.grounding_metadata), указывающих на цитаты, связанные с утверждением. Например, [1,3,4] означает, что grounding_chunk[1], grounding_chunk[3], grounding_chunk[4] – это извлеченный контент, связанный с утверждением. Если ответ передается в потоковом режиме, groundingChunkIndices ссылается на индексы во всех ответах. Клиент должен собрать фрагменты обоснования из всех ответов, сохраняя их порядок.

confidenceScores[] number

Необязательное поле. Индекс достоверности источников. Значение может быть от 0 до 1. 1 – максимальная уверенность. Этот список должен быть того же размера, что и groundingChunkIndices.

renderedParts[] integer

Только для вывода. Индексы в поле parts контента кандидата. Эти индексы указывают, какие части ответа связаны с этим источником.

segment object (Segment)

Сегмент контента, к которому относится эта поддержка.

JSON-представление
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

Сегмент

Сегмент контента.

Поля
partIndex integer

Индекс объекта Part в родительском объекте Content.

startIndex integer

Начальный индекс в указанной части, измеряемый в байтах. Смещение от начала части (включительно), начиная с нуля.

endIndex integer

Конечный индекс в указанной части, измеряемый в байтах. Смещение от начала части, не включительно, начиная с нуля.

text string

Текст, соответствующий сегменту из ответа.

JSON-представление
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

Метаданные, связанные с извлечением в процессе заземления.

Поля
googleSearchDynamicRetrievalScore number

Необязательное поле. Оценка, показывающая, насколько вероятно, что информация из Google Поиска поможет ответить на запрос. Оценка находится в диапазоне [0, 1], где 0 – наименьшая вероятность, а 1 – наибольшая. Эта оценка заполняется, только если включено обоснование в Google Поиске и динамический поиск. Оно будет сравниваться с пороговым значением, чтобы определить, нужно ли запускать Google Поиск.

JSON-представление
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Результат Logprobs

Поля
topCandidates[] object (TopCandidates)

Длина – общее количество шагов декодирования.

chosenCandidates[] object (Candidate)

Длина – общее количество шагов декодирования. Выбранные варианты могут быть или не быть в topCandidates.

logProbabilitySum number

Сумма логарифмических вероятностей для всех токенов.

JSON-представление
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

Варианты с наибольшей логарифмической вероятностью на каждом шаге декодирования.

Поля
candidates[] object (Candidate)

Отсортировано по логарифмической вероятности в порядке убывания.

JSON-представление
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

Кандидат

Кандидат для токена и оценки logprobs.

Поля
token string

Строковое значение токена кандидата.

tokenId integer

Значение идентификатора токена кандидата.

logProbability number

Логарифмическая вероятность кандидата.

JSON-представление
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

Метаданные, связанные с инструментом получения URL-контекста.

Поля
urlMetadata[] object (UrlMetadata)

Список URL-контекстов.

JSON-представление
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

Контекст получения одного URL.

Поля
retrievedUrl string

URL, полученный инструментом.

urlRetrievalStatus enum (UrlRetrievalStatus)

Статус получения URL.

JSON-представление
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

Статус получения URL.

Перечисления
URL_RETRIEVAL_STATUS_UNSPECIFIED Значение по умолчанию. Это значение не используется.
URL_RETRIEVAL_STATUS_SUCCESS URL получен.
URL_RETRIEVAL_STATUS_ERROR Не удалось получить URL из-за ошибки.
URL_RETRIEVAL_STATUS_PAYWALL Не удалось получить URL, потому что контент доступен только по платной подписке.
URL_RETRIEVAL_STATUS_UNSAFE Не удалось получить URL, так как контент небезопасен.

CitationMetadata

Набор атрибутов источника для фрагмента контента.

Поля
citationSources[] object (CitationSource)

Ссылки на источники для конкретного ответа.

JSON-представление
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

Ссылка на источник для части определенного ответа.

Поля
startIndex integer

Необязательное поле. Начало фрагмента ответа, который относится к этому источнику.

Индекс указывает на начало сегмента в байтах.

endIndex integer

Необязательное поле. Конец сегмента, к которому относится атрибут (не включительно).

uri string

Необязательное поле. URI, который указан как источник для части текста.

license string

Необязательное поле. Лицензия для проекта GitHub, который указан как источник сегмента.

Для цитирования кода требуется информация о лицензии.

JSON-представление
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

Категория возрастного ограничения.

Эти категории охватывают различные виды вреда, которые разработчики могут захотеть скорректировать.

Перечисления
HARM_CATEGORY_UNSPECIFIED Категория не указана.
HARM_CATEGORY_DEROGATORY

PaLM – негативные или вредные комментарии, направленные на личность и/или защищенный атрибут. УСТАРЕЛО. Категория только для PaLM, не поддерживается моделями Gemini.

HARM_CATEGORY_TOXICITY

PaLM – грубый, неуважительный или непристойный контент. УСТАРЕЛО. Категория только для PaLM, не поддерживается моделями Gemini.

HARM_CATEGORY_VIOLENCE

PaLM Описывает сценарии, изображающие насилие в отношении человека или группы людей, или общие описания жестокости. УСТАРЕЛО. Категория только для PaLM, не поддерживается моделями Gemini.

HARM_CATEGORY_SEXUAL

PaLM – содержит ссылки на половые акты или прочий непристойный контент. УСТАРЕЛО. Категория только для PaLM, не поддерживается моделями Gemini.

HARM_CATEGORY_MEDICAL

PaLM – продвигает непроверенные медицинские рекомендации. УСТАРЕЛО. Категория только для PaLM, не поддерживается моделями Gemini.

HARM_CATEGORY_DANGEROUS

PaLM – опасный контент, который пропагандирует опасные действия, призывает к ним или упрощает их совершение. УСТАРЕЛО. Категория только для PaLM, не поддерживается моделями Gemini.

HARM_CATEGORY_HARASSMENT Gemini – домогательства.
HARM_CATEGORY_HATE_SPEECH Gemini – дискриминационные высказывания и контент.
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini – откровенно сексуальный контент.
HARM_CATEGORY_DANGEROUS_CONTENT Gemini – опасный контент.
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini – контент, который может использоваться для нанесения вреда гражданской целостности. УСТАРЕЛО. Используйте enableEnhancedCivicAnswers.

HARM_CATEGORY_JAILBREAK Gemini – запросы, направленные на обход правил безопасности модели (попытки взлома).

ModalityTokenCount

Представляет информацию о подсчете токенов для одной модальности.

Поля
modality enum (Modality)

Модальность, связанная с этим количеством токенов.

tokenCount integer

Количество токенов.

JSON-представление
{
  "modality": enum (Modality),
  "tokenCount": integer
}

Модальность

Модальность части контента

Перечисления
MODALITY_UNSPECIFIED Неуказанный режим.
TEXT Обычный текст.
IMAGE Изображение.
VIDEO Видео.
AUDIO Аудио.
DOCUMENT Документ, например PDF.

SafetyRating

Рейтинг безопасности для контента.

Оценка безопасности содержит категорию вреда и уровень вероятности вреда в этой категории для фрагмента контента. Контент классифицируется по безопасности в нескольких категориях вреда, и здесь указывается вероятность классификации вреда.

Поля
category enum (HarmCategory)

Обязательно. Категория, к которой относится оценка.

probability enum (HarmProbability)

Обязательно. Вероятность причинения вреда этим контентом.

blocked boolean

Был ли этот контент заблокирован из-за возрастного ограничения?

JSON-представление
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

Вероятность того, что контент является вредоносным.

Система классификации определяет вероятность того, что контент небезопасен. Это не указывает на степень вреда от контента.

Перечисления
HARM_PROBABILITY_UNSPECIFIED Вероятность не указана.
NEGLIGIBLE Вероятность того, что контент небезопасен, ничтожно мала.
LOW Вероятность того, что контент небезопасен, низкая.
MEDIUM Средняя вероятность того, что контент небезопасен.
HIGH Контент с высокой вероятностью небезопасен.

SafetySetting

Настройка безопасности, влияющая на поведение блокировки.

Передача настройки безопасности для категории изменяет допустимую вероятность блокировки контента.

Поля
category enum (HarmCategory)

Обязательно. Категория для этой настройки.

threshold enum (HarmBlockThreshold)

Обязательно. Определяет пороговое значение вероятности, при котором блокируется вредоносный контент.

JSON-представление
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

Блокировать при указанной вероятности вреда и выше.

Перечисления
HARM_BLOCK_THRESHOLD_UNSPECIFIED Пороговое значение не указано.
BLOCK_LOW_AND_ABOVE Контент с пометкой NEGLIGIBLE будет разрешен.
BLOCK_MEDIUM_AND_ABOVE Контент с оценками "Незначительный" и "Низкий" будет разрешен.
BLOCK_ONLY_HIGH Контент с НЕЗНАЧИТЕЛЬНЫМ, НИЗКИМ и СРЕДНИМ уровнем риска будет разрешен.
BLOCK_NONE Весь контент будет разрешен.
OFF Отключите фильтр безопасности.

ServiceTier

Уровень сервиса запроса.

Перечисления
unspecified Уровень сервиса по умолчанию – стандартный.
standard Стандартный уровень сервиса.
flex Уровень сервиса Flex.
priority Приоритетный уровень обслуживания.

Контент

Базовый структурированный тип данных, содержащий составной контент сообщения.

Объект Content включает поле role, в котором указан автор Content, и поле parts, содержащее данные из нескольких частей, которые составляют контент сообщения.

Поля
parts[] object (Part)

Упорядоченные Parts, которые составляют одно сообщение. У частей могут быть разные MIME-типы.

role string

Необязательное поле. Производитель контента. Допустимые значения: user или model.

Полезно для многоэтапных разговоров, в остальных случаях можно оставить пустым или не задавать.

JSON-представление
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Изделие

Тип данных, содержащий медиаконтент, который является частью составного сообщения Content.

Part состоит из данных, которые имеют связанный тип данных. Part может содержать только один из допустимых типов в Part.data.

Если поле inlineData заполнено необработанными байтами, у Part должен быть фиксированный MIME-тип IANA, определяющий тип и подтип медиаконтента.

Поля
thought boolean

Необязательное поле. Указывает, является ли часть результатом размышлений модели.

thoughtSignature string (bytes format)

Необязательное поле. Непрозрачная подпись для размышления, чтобы его можно было использовать в последующих запросах.

Строка в кодировке Base64.

partMetadata object (Struct format)

Пользовательские метаданные, связанные с частью. Агентам, использующим genai.Part для представления контента, может потребоваться отслеживать дополнительную информацию. Например, это может быть название файла или источника, из которого поступает фрагмент, или способ мультиплексирования нескольких потоков фрагментов.

mediaResolution object (MediaResolution)

Необязательное поле. Разрешение медиафайла.

mediaProcessing enum (MediaProcessing)

Необязательное поле. Как модель обрабатывает медиаконтент этой части для понимания. Имеет значение только для видеофрагментов (inlineData или fileData с MIME-типом видео). Для других частей объявления это поле игнорируется.

audioTranscription object (AudioTranscription)

Необязательное поле. Расшифровка аудио (входного или выходного). Задается, только если часть содержит аудиоданные.

speechMetadata object (SpeechMetadata)

Необязательное поле. Метаданные, применяемые к частям текста для настройки того, как они должны быть произнесены или синтезированы, например, для указания личности говорящего или стиля речи.

data Union type
Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
text string

Встроенный текст.

inlineData object (Blob)

Байты встроенных медиафайлов.

functionCall object (FunctionCall)

Прогнозируемый FunctionCall, возвращаемый моделью, который содержит строку, представляющую FunctionDeclaration.name с аргументами и их значениями.

functionResponse object (FunctionResponse)

Результат FunctionCall, который содержит строку, представляющую FunctionDeclaration.name, и структурированный объект JSON, содержащий любые выходные данные функции, используется в качестве контекста для модели.

fileData object (FileData)

Данные на основе URI.

executableCode object (ExecutableCode)

Код, сгенерированный моделью и предназначенный для выполнения.

codeExecutionResult object (CodeExecutionResult)

Результат выполнения ExecutableCode.

toolCall object (ToolCall)

Вызов серверного инструмента. Это поле заполняется, когда модель прогнозирует вызов инструмента, который должен быть выполнен на сервере. Клиент должен вернуть это сообщение в API.

toolResponse object (ToolResponse)

Выходные данные, полученные в результате выполнения ToolCall на стороне сервера. Это поле заполняется клиентом результатами выполнения соответствующего ToolCall.

Конец взаимоисключающих полей.
metadata Union type
Управляет дополнительной предварительной обработкой данных. Задайте это значение, если присутствует inline_data или file_data, чтобы настроить предварительную обработку статических медиафайлов для каждой части. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
videoMetadata object (VideoMetadata)

Необязательное поле. Метаданные видео. Метаданные следует указывать только в том случае, если видеоданные представлены в inlineData или fileData.

Конец взаимоисключающих полей.
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-объект

Необработанные байты медиафайла.

Текст не должен отправляться в виде необработанных байтов. Используйте поле text.

Поля
mimeType string

MIME-тип исходных данных по стандарту IANA. Примеры поддерживаемых типов: - Изображения: image/png, image/jpeg, image/jpg, image/webp, image/heic, image/heif, image/gif, image/avif - Аудио: audio/*, video/audio/s16le, video/audio/wav - Видео: video/* - Текст: 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 - Приложения: application/x-javascript, application/x-typescript, application/x-python-code, application/json, application/x-ipynb+json, application/rtf, application/pdf Дополнительную информацию можно найти в разделе Поддерживаемые форматы файлов. //

data string (bytes format)

Необработанные байты для медиаформатов.

Строка в кодировке Base64.

displayName string

Необязательное поле. Указывает имя, используемое для ссылки на этот blob-объект в модели (например, "my_blob.png"). Используется в качестве идентификатора ссылки на blob-объект, если для параметра verbalizationMode задано значение REFERENCE_ONLY.

JSON-представление
{
  "mimeType": string,
  "data": string,
  "displayName": string
}

FunctionCall

Прогнозируемый FunctionCall, возвращаемый моделью, который содержит строку, представляющую FunctionDeclaration.name с аргументами и их значениями.

Поля
id string

Необязательное поле. Уникальный идентификатор вызова функции. Если поле заполнено, клиент должен выполнить functionCall и вернуть ответ с соответствующим id.

name string

Обязательно. Название вызываемой функции. Допустимы буквы латинского алфавита (a–z, A–Z), цифры (0–9), символы подчеркивания и дефисы. Максимальная длина – 128 символов.

args object (Struct format)

Необязательное поле. Параметры и значения функции в формате объекта JSON.

JSON-представление
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

Результат, полученный от FunctionCall, содержит строку, представляющую FunctionDeclaration.name, и структурированный объект JSON, содержащий любые выходные данные функции. Этот результат используется в качестве контекста для модели. Здесь должен быть результат FunctionCall, сделанного на основе прогноза модели.

Поля
id string

Необязательное поле. Идентификатор вызова функции, для которого предназначен этот ответ. Заполняется клиентом в соответствии с вызовом функции id.

name string

Обязательно. Название вызываемой функции. Допустимы буквы латиницы (a–z, A–Z), цифры (0–9), символы подчеркивания и дефисы. Максимальная длина – 128 символов.

response object (Struct format)

Обязательно. Ответ функции в формате объекта JSON. Вызывающие абоненты могут использовать любые ключи по своему выбору, соответствующие синтаксису функции, чтобы вернуть выходные данные функции, например "output", "result" и т. д. В частности, если вызов функции не удалось выполнить, ответ может иметь ключ "error" для возврата сведений об ошибке в модель.

Мультимедийные материалы можно добавить с помощью подобъекта, содержащего один ключ $ref, значением которого является inlineData.display_name объекта FunctionResponsePart, содержащего мультимедийные материалы. Подробнее: https://ai.google.dev/gemini-api/docs/function-calling#multimodal.

parts[] object (FunctionResponsePart)

Необязательное поле. Упорядоченные объекты Parts, составляющие ответ функции. Части могут иметь разные MIME-типы IANA.

willContinue boolean

Необязательное поле. Указывает, что вызов функции продолжается и будет возвращено больше ответов, превращая вызов функции в генератор. Применимо только к вызовам функций NON_BLOCKING, в остальных случаях игнорируется. Если задано значение False, будущие ответы не будут учитываться. Допускается возвращать пустой объект response с willContinue=False, чтобы сообщить о завершении вызова функции. Это может запустить генерацию модели. Чтобы избежать генерации и завершить вызов функции, дополнительно задайте для scheduling значение SILENT.

scheduling enum (Scheduling)

Необязательное поле. Указывает, как ответ должен быть запланирован в чате. Применимо только к вызовам функции NON_BLOCKING, в остальных случаях игнорируется. Значение по умолчанию – WHEN_IDLE.

JSON-представление
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

Тип данных, содержащий медиаконтент, который является частью сообщения FunctionResponse.

FunctionResponsePart состоит из данных, которые имеют связанный тип данных. FunctionResponsePart может содержать только один из допустимых типов в FunctionResponsePart.data.

Если поле inlineData заполнено необработанными байтами, у FunctionResponsePart должен быть фиксированный MIME-тип IANA, определяющий тип и подтип медиаконтента.

Поля
data Union type
Данные части ответа функции. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
inlineData object (FunctionResponseBlob)

Байты встроенных медиафайлов.

Конец взаимоисключающих полей.
JSON-представление
{

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

FunctionResponseBlob

Необработанные байты медиаконтента для ответа функции.

Текст не должен отправляться в виде необработанных байтов. Используйте поле FunctionResponse.response.

Поля
mimeType string

MIME-тип исходных данных по стандарту IANA. Примеры: - image/png - image/jpeg Если указан неподдерживаемый MIME-тип, возвращается ошибка. Полный список поддерживаемых типов приведен в статье Поддерживаемые форматы файлов.

data string (bytes format)

Необработанные байты для медиаформатов.

Строка в кодировке Base64.

JSON-представление
{
  "mimeType": string,
  "data": string
}

Планирование

Указывает, как ответ должен быть запланирован в чате.

Перечисления
SCHEDULING_UNSPECIFIED Это значение не используется.
SILENT Добавь результат в контекст разговора, не прерывай и не запускай генерацию.
WHEN_IDLE Добавьте результат в контекст разговора и запросите генерацию ответа, не прерывая текущую генерацию.
INTERRUPT Добавить результат в контекст разговора, прервать текущую генерацию и запросить генерацию выходных данных.

FileData

Данные на основе URI.

Поля
mimeType string

Необязательное поле. MIME-тип исходных данных по стандарту IANA.

fileUri string

Обязательно. URI.

displayName string

Необязательное поле. Указывает имя, используемое для ссылки на этот файл в модели (например, "my_file.pdf"). Используется в качестве идентификатора цифрового отпечатка, если для параметра verbalizationMode задано значение REFERENCE_ONLY.

JSON-представление
{
  "mimeType": string,
  "fileUri": string,
  "displayName": string
}

ExecutableCode

Код, сгенерированный моделью, который должен быть выполнен, и результат, возвращенный модели.

Генерируется только при использовании инструмента CodeExecution, в котором код будет выполняться автоматически, и также будет генерироваться соответствующий CodeExecutionResult.

Поля
id string

Необязательное поле. Уникальный идентификатор части ExecutableCode. Сервер возвращает CodeExecutionResult с соответствующим id.

language enum (Language)

Обязательно. Язык программирования code.

code string

Обязательно. Код, который нужно выполнить.

JSON-представление
{
  "id": string,
  "language": enum (Language),
  "code": string
}

Язык

Поддерживаемые языки программирования для сгенерированного кода.

Перечисления
LANGUAGE_UNSPECIFIED Язык не указан. Это значение не должно использоваться.
PYTHON Python версии 3.10 или более поздней с numpy и simpy. Python – язык по умолчанию.

CodeExecutionResult

Результат выполнения ExecutableCode.

Создается, только если используется инструмент CodeExecution.

Поля
id string

Необязательное поле. Идентификатор части ExecutableCode, к которой относится результат. Заполняется, только если у соответствующего объекта ExecutableCode есть идентификатор.

outcome enum (Outcome)

Обязательно. Результат выполнения кода.

output string

Необязательное поле. Содержит stdout, если выполнение кода успешно, и stderr или другое описание в противном случае.

JSON-представление
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

Результат

Перечисление возможных результатов выполнения кода.

Перечисления
OUTCOME_UNSPECIFIED Статус не указан. Это значение не должно использоваться.
OUTCOME_OK Выполнение кода завершено. output содержит stdout, если он есть.
OUTCOME_FAILED Не удалось выполнить код. output содержит stderr и stdout, если они есть.
OUTCOME_DEADLINE_EXCEEDED Выполнение кода заняло слишком много времени и было отменено. Частичный output может присутствовать или отсутствовать.

ToolCall

Прогнозируемое значение ToolCall на стороне сервера, возвращенное моделью. Это сообщение содержит информацию об инструменте, который модель хочет вызвать. Клиент НЕ должен выполнять этот ToolCall. Вместо этого клиент должен передать ToolCall обратно в API в следующем запросе в сообщении Content вместе с соответствующим ToolResponse.

Поля
id string

Необязательное поле. Уникальный идентификатор вызова инструмента. Сервер возвращает ответ инструмента с соответствующим id.

toolName string

Необязательное поле. Название вызванного инструмента.

toolType enum (ToolType)

Обязательно. Тип вызванного инструмента.

args object (Struct format)

Необязательное поле. Аргументы вызова инструмента. Пример: {"arg1" : "value1", "arg2" : "value2" , ...}

JSON-представление
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

Тип инструмента в вызове функции.

Перечисления
TOOL_TYPE_UNSPECIFIED Не указан тип инструмента.
GOOGLE_SEARCH_WEB Инструмент Google Поиска, сопоставляется с Tool.google_search.search_types.web_search.
GOOGLE_SEARCH_IMAGE Инструмент поиска изображений, сопоставляется с Tool.google_search.search_types.image_search.
URL_CONTEXT Инструмент URL-контекста, сопоставляется с Tool.url_context.
GOOGLE_MAPS Инструмент Google Карт, сопоставляется с Tool.google_maps.

ToolResponse

Выходные данные, полученные в результате выполнения ToolCall на стороне сервера. Это сообщение содержит результаты вызова инструмента, инициированного ToolCall из модели. Клиент должен передать этот ToolResponse обратно в API в последующем вызове в сообщении Content вместе с соответствующим ToolCall.

Поля
id string

Необязательное поле. Идентификатор вызова инструмента, для которого предназначен этот ответ.

toolType enum (ToolType)

Обязательно. Тип вызванного инструмента, соответствующий toolType в ToolCall.

response object (Struct format)

Необязательное поле. Ответ инструмента.

JSON-представление
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

Метаданные описывают входной видеоконтент. Задайте это свойство в Part.video_metadata или FunctionResponsePart.video_metadata, если inlineData или fileData содержит видео, чтобы настроить предварительную обработку статического видео (например, обрезку по времени, частоту кадров, максимальное количество кадров или извлеченные слои контента).

Поля
startOffset string (Duration format)

Необязательное поле. Смещение начала видео.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву s. Пример: "3.5s".

endOffset string (Duration format)

Необязательное поле. Смещение конца видео.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву s. Пример: "3.5s".

fps number

Необязательное поле. Частота кадров видео, отправленного модели. Если значение не указано, по умолчанию используется 1.0. Диапазон частоты кадров: (0,0; 24,0].

JSON-представление
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

Разрешение медиаконтента для токенизации.

Поля
value Union type
Уровень разрешения медиаконтента. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
level enum (Level)

Качество токенизации, используемое для заданного медиаконтента. для поддержки Gemini API .

Конец взаимоисключающих полей.
JSON-представление
{

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

Уровень

Уровень разрешения медиаконтента.

Перечисления
MEDIA_RESOLUTION_UNSPECIFIED Разрешение медиафайла не задано.
MEDIA_RESOLUTION_LOW Установлено низкое разрешение медиаконтента.
MEDIA_RESOLUTION_MEDIUM Установлено среднее разрешение медиафайлов.
MEDIA_RESOLUTION_HIGH Выбрано высокое разрешение медиафайлов.
MEDIA_RESOLUTION_ULTRA_HIGH Установлено сверхвысокое разрешение медиафайлов.

MediaProcessing

Как модель обрабатывает входные медиаданные для понимания.

Перечисления
MEDIA_PROCESSING_UNSPECIFIED По умолчанию используется обработка, зависящая от модели.
STATIC Извлечение кадров с фиксированной частотой. Все фреймы помещены в контекст.
AGENTIC Динамическая навигация на основе модели. Рекомендуется для большинства случаев.

AudioTranscription

Расшифровка аудиофрагмента. Если в аудио несколько говорящих, каждый сегмент речи представляет собой отдельный объект Part с собственным объектом AudioTranscription, содержащим speakerLabel.

Поля
text string

Обязательно. Расшифровка этого аудиосегмента.

speakerLabel string

Необязательное поле. Ярлык, идентифицирующий говорящего в этом аудиосегменте (например, "spk_1", "spk_2"). Присутствует, если задана диаризация.

words[] object (WordInfo)

Необязательное поле. Подробные расшифровки на уровне слов и временные метки. Присутствует, если задано значение wordTimestamp.

JSON-представление
{
  "text": string,
  "speakerLabel": string,
  "words": [
    {
      object (WordInfo)
    }
  ]
}

WordInfo

Информация об одном распознанном слове.

Поля
word string

Обязательно. Транскрипция слова.

startOffset string (Duration format)

Необязательное поле. Смещение начала слова относительно начала аудиозаписи.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву s. Пример: "3.5s".

endOffset string (Duration format)

Необязательное поле. Время окончания слова относительно начала аудиозаписи.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву s. Пример: "3.5s".

JSON-представление
{
  "word": string,
  "startOffset": string,
  "endOffset": string
}

SpeechMetadata

Метаданные речи для text частей.

Поля
speaker string

Необязательное поле. Необязательное имя говорящего для синтеза речи с несколькими говорящими.

style string

Необязательное поле. Необязательные инструкции по стилю для синтеза речи.

JSON-представление
{
  "speaker": string,
  "style": string
}

Среда

Среда выполнения для агента.

Поля
id string

Обязательно. Только для вывода. Идентификатор среды.

sources[] object (Source)

Источники, которые нужно подключить к среде.

created string

Только для вывода. Время создания среды в формате ISO 8601 (ГГГГ-ММ-ДДTчч:мм:ссZ).

updated string

Только для вывода. Время последнего обновления среды в формате ISO 8601 (ГГГГ-ММ-ДДTчч:мм:ссZ).

lastAccessed string

Только для вывода. Время последнего доступа к среде в формате ISO 8601 (ГГГГ-ММ-ДДTчч:мм:ссZ).

status enum (Status)

Только для вывода. Статус контейнера среды.

fileCount string (int64 format)

Только для вывода. Количество файлов в среде (только для вывода).

sizeBytes string (int64 format)

Только для вывода. Общий размер файлов среды в байтах (только для вывода).

network Union type
Конфигурация сети для среды. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

Разрешить только определенные домены.

networkMode enum (NetworkMode)

Режим исходящего сетевого трафика.

Конец взаимоисключающих полей.
JSON-представление
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

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

Статус

Статус среды.

Перечисления
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

Режим исходящего сетевого трафика для конфигураций, не включенных в белый список.

Перечисления
NETWORK_MODE_UNSPECIFIED Значение по умолчанию. Не используется.
DISABLED Весь исходящий трафик блокируется.

Схема

Объект Schema позволяет определить типы входных и выходных данных. Это могут быть объекты, а также примитивы и массивы. Представляет собой выбранный поднабор объекта схемы OpenAPI 3.0.

Поля
type enum (Type)

Обязательно. Тип данных.

format string

Необязательное поле. Формат данных. Допустимо любое значение, но большинство из них не активирует никаких специальных функций.

title string

Необязательное поле. Название схемы.

description string

Необязательное поле. Краткое описание параметра. Здесь могут быть примеры использования. Описание параметра может быть отформатировано как Markdown.

nullable boolean

Необязательное поле. Указывает, может ли значение быть нулевым.

enum[] string

Необязательное поле. Возможные значения элемента Type.STRING в формате перечисления. Например, мы можем определить Enum Direction как : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]}

maxItems string (int64 format)

Необязательное поле. Максимальное количество элементов для Type.ARRAY.

minItems string (int64 format)

Необязательное поле. Минимальное количество элементов для Type.ARRAY.

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

Необязательное поле. Свойства Type.OBJECT.

Объект содержит список из нескольких пар ("key": value). Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

required[] string

Необязательное поле. Обязательные свойства Type.OBJECT.

minProperties string (int64 format)

Необязательное поле. Минимальное количество свойств для Type.OBJECT.

maxProperties string (int64 format)

Необязательное поле. Максимальное количество свойств для Type.OBJECT.

minLength string (int64 format)

Необязательное поле. ПОЛЯ СХЕМЫ ДЛЯ ТИПА STRING Минимальная длина Type.STRING

maxLength string (int64 format)

Необязательное поле. Максимальная длина Type.STRING

pattern string

Необязательное поле. Шаблон Type.STRING для ограничения строки регулярным выражением.

example value (Value format)

Необязательное поле. Пример объекта. Заполняется, только если объект является корневым.

anyOf[] object (Schema)

Необязательное поле. Значение должно быть проверено на соответствие любой (одной или нескольким) из подсхем в списке.

propertyOrdering[] string

Необязательное поле. Порядок свойств. Нестандартное поле в спецификации OpenAPI. Используется для определения порядка свойств в ответе.

default value (Value format)

Необязательное поле. Значение поля по умолчанию. Согласно схеме JSON, это поле предназначено для генераторов документации и не влияет на проверку. Поэтому оно включено в схему и игнорируется, чтобы разработчики, отправляющие схемы с полем default, не получали ошибок, связанных с неизвестными полями.

items object (Schema)

Необязательное поле. Схема элементов Type.ARRAY.

minimum number

Необязательное поле. ПОЛЯ СХЕМЫ ДЛЯ ТИПОВ INTEGER И NUMBER Минимальное значение для Type.INTEGER и Type.NUMBER.

maximum number

Необязательное поле. Максимальное значение Type.INTEGER и Type.NUMBER.

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
}

Тип

Type содержит список типов данных OpenAPI, определенных на странице https://spec.openapis.org/oas/v3.0.3#data-types.

Перечисления
TYPE_UNSPECIFIED Не указано, не следует использовать.
STRING Тип строки.
NUMBER Тип номера.
INTEGER Целое число.
BOOLEAN Логический тип.
ARRAY Тип массива.
OBJECT Тип объекта.
NULL Нулевой тип.

Инструмент

Сведения об инструменте, которые модель может использовать для генерации ответа.

Tool – это фрагмент кода, который позволяет системе взаимодействовать с внешними системами для выполнения действия или набора действий за пределами знаний и области действия модели.

Поля
functionDeclarations[] object (FunctionDeclaration)

Необязательное поле. Список FunctionDeclarations, доступных модели для вызова функций.

Модель или система не выполняет функцию. Вместо этого заданная функция может быть возвращена на сторону клиента в виде FunctionCall с аргументами для выполнения. Модель может вызвать подмножество этих функций, заполнив FunctionCall в ответе. Следующий ход разговора может содержать FunctionResponse с контекстом генерации Content.role "function" для следующего хода модели.

googleSearchRetrieval object (GoogleSearchRetrieval)

Необязательное поле. Инструмент поиска на основе Google Поиска.

codeExecution object (CodeExecution)

Необязательное поле. Позволяет модели выполнять код в процессе генерации.

computerUse object (ComputerUse)

Необязательное поле. Инструмент, позволяющий модели напрямую взаимодействовать с компьютером. Если эта функция включена, она автоматически заполняет объявления функций, относящиеся к использованию компьютера.

urlContext object (UrlContext)

Необязательное поле. Инструмент для поддержки получения URL-контекста.

mcpServers[] object (McpServer)

Необязательное поле. MCP-серверы, к которым нужно подключиться.

googleMaps object (GoogleMaps)

Необязательное поле. Инструмент, позволяющий обосновать ответ модели с помощью геопространственного контекста, связанного с запросом пользователя.

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

Структурированное представление объявления функции, как определено в спецификации OpenAPI 3.03. В это объявление входят название функции и параметры. Этот FunctionDeclaration представляет собой блок кода, который может использоваться моделью как Tool и выполняться клиентом.

Поля
name string

Обязательно. Название функции. Допустимы символы a–z, A–Z, 0–9, подчеркивания, двоеточия, точки и дефисы. Максимальная длина – 128 символов.

description string

Обязательно. Краткое описание функции.

behavior enum (Behavior)

Необязательное поле. Определяет поведение функции. В настоящее время поддерживается только методом BidiGenerateContent.

parameters object (Schema)

Необязательное поле. Описывает параметры этой функции. Отражает ключ строки объекта параметра Open API 3.03: название параметра. В названиях параметров учитывается регистр. Значение схемы: схема, определяющая тип, используемый для параметра.

parametersJsonSchema value (Value format)

Необязательное поле. Описывает параметры функции в формате JSON Schema. Схема должна описывать объект, свойства которого являются параметрами функции. Пример:

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

Это поле несовместимо с полем parameters.

response object (Schema)

Необязательное поле. Описывает выходные данные этой функции в формате схемы JSON. Отражает объект ответа Open API 3.03. Схема определяет тип, используемый для значения ответа функции.

responseJsonSchema value (Value format)

Необязательное поле. Описывает выходные данные этой функции в формате схемы JSON. Значение, указанное в схеме, – это значение ответа функции.

Это поле несовместимо с полем response.

JSON-представление
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

Поведение

Определяет поведение функции. Значение по умолчанию – BLOCKING.

Перечисления
UNSPECIFIED Это значение не используется.
BLOCKING Если этот параметр задан, система будет ждать ответа функции, прежде чем продолжить разговор.
NON_BLOCKING Если задано, система не будет ждать ответа функции. Вместо этого она будет пытаться обрабатывать ответы функций по мере их поступления, поддерживая при этом разговор между пользователем и моделью.

GoogleSearchRetrieval

Инструмент от Google для получения общедоступных веб-данных для обоснования.

Поля
dynamicRetrievalConfig object (DynamicRetrievalConfig)

Указывает конфигурацию динамического извлечения для заданного источника.

JSON-представление
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

Описывает варианты настройки динамического извлечения.

Поля
mode enum (Mode)

Режим предиктора, который будет использоваться при динамическом извлечении.

dynamicThreshold number

Пороговое значение, которое будет использоваться при динамическом извлечении. Если значение не задано, используются системные настройки по умолчанию.

JSON-представление
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

Режим

Режим предиктора, который будет использоваться при динамическом извлечении.

Перечисления
MODE_UNSPECIFIED Всегда запускать извлечение.
MODE_DYNAMIC Выполнять извлечение, только когда система считает это необходимым.

CodeExecution

У этого типа нет полей.

Инструмент, который выполняет сгенерированный моделью код и автоматически возвращает ей результат.

Также ознакомьтесь с информацией о полях ExecutableCode и CodeExecutionResult, которые создаются только при использовании этого инструмента.

GoogleSearch

Тип инструмента GoogleSearch. Инструмент для поддержки Google Поиска в модели. Технологии Google.

Поля
timeRangeFilter object (Interval)

Необязательное поле. Фильтрация результатов поиска по определенному диапазону дат. Если клиент задает время начала, он должен указать и время окончания (и наоборот).

searchTypes object (SearchTypes)

Необязательное поле. Набор типов поиска, которые нужно включить. Если правило не настроено, поиск в интернете по умолчанию включен.

JSON-представление
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

Интервал

Представляет собой интервал времени, зашифрованный как временные метки начала (включается в интервал) и окончания интервала (исключается из него).

Время начала должно быть меньше, чем время окончания, или равно ему. Если время начала равно времени окончания, интервал будет пустым (не включает никакой период). Если время начала и окончания не указано, включается весь отрезок времени.

Поля
startTime string (Timestamp format)

Необязательное поле. Включается время начала интервала.

Если оно указано, временная метка, совпадающая с этим интервалом, должна совпадать с временем начала или быть позднее его.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

endTime string (Timestamp format)

Необязательное поле. Время окончания интервала не включается.

Если оно указано, временная метка, совпадающая с этим интервалом, должна быть до времени окончания.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

JSON-представление
{
  "startTime": string,
  "endTime": string
}

SearchTypes

Различные типы поиска, которые можно включить в инструменте GoogleSearch.

Поля
JSON-представление
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

У этого типа нет полей.

Стандартный веб-поиск для обоснования и связанных конфигураций.

ImageSearch

У этого типа нет полей.

Поиск изображений для обоснования и связанных конфигураций.

ComputerUse

Тип инструмента Computer Use.

Поля
environment enum (Environment)

Обязательно. Среда, в которой выполняется операция.

excludedPredefinedFunctions[] string

Необязательное поле. По умолчанию предопределенные функции включаются в итоговый вызов модели. Некоторые из них можно исключить из автоматического добавления. Это может быть полезно в двух случаях: 1. Использование более ограниченного или другого пространства действий. 2. Улучшение определений и инструкций для встроенных функций.

enablePromptInjectionDetection boolean

Необязательное поле. Включает или отключает проверку на внедрение запросов при использовании компьютера.

disabledSafetyPolicies[] enum (SafetyPolicy)

Необязательное поле. Отключены правила безопасности для использования компьютера.

JSON-представление
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

Среда

Представляет среду, в которой выполняется операция, например веб-браузер.

Перечисления
ENVIRONMENT_UNSPECIFIED Значение по умолчанию – browser.
ENVIRONMENT_BROWSER Работает в веб-браузере.
ENVIRONMENT_MOBILE Работает в мобильной среде.
ENVIRONMENT_DESKTOP Работает на компьютерах.

SafetyPolicy

Предустановленные правила безопасности для использования компьютера.

Перечисления
SAFETY_POLICY_UNSPECIFIED Правила безопасности не указаны.
FINANCIAL_TRANSACTIONS Правила безопасности для финансовых транзакций.
SENSITIVE_DATA_MODIFICATION Правила безопасности для изменения конфиденциальных данных.
COMMUNICATION_TOOL Правила безопасности для инструментов коммуникации (например, Gmail, Chat, Meet).
ACCOUNT_CREATION Правила безопасности для создания аккаунта.
DATA_MODIFICATION Правила безопасности для изменения данных.
LEGAL_TERMS_AND_AGREEMENTS Правила безопасности для юридических условий и соглашений.

UrlContext

У этого типа нет полей.

Инструмент для поддержки получения URL-контекста.

FileSearch

Инструмент FileSearch, который извлекает знания из корпусов Semantic Retrieval. Файлы импортируются в корпуса Semantic Retrieval с помощью ImportFile API.

Поля
fileSearchStoreNames[] string

Обязательно. Названия fileSearchStores, из которых нужно получить данные. Пример: fileSearchStores/my-file-search-store-123

metadataFilter string

Необязательное поле. Фильтр метаданных, который применяется к документам и фрагментам семантического поиска.

topK integer

Необязательное поле. Количество фрагментов семантического поиска, которые нужно получить.

JSON-представление
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCP-сервер – это сервер, который модель может вызывать для выполнения действий. Это сервер, на котором реализован протокол MCP.

Поля
name string

Название сервера MCP.

transport Union type
Транспорт, используемый для подключения к MCPServer. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
streamableHttpTransport object (StreamableHttpTransport)

Транспорт, который может передавать HTTP-запросы и ответы.

Конец взаимоисключающих полей.
JSON-представление
{
  "name": string,

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

StreamableHttpTransport

Транспорт, который может передавать HTTP-запросы и ответы.

Поля
url string

Полный URL конечной точки MCP-сервера. Пример: https://api.example.com/mcp.

headers map (key: string, value: string)

Необязательно: поля для заголовков аутентификации, тайм-аутов и т. д.

Объект содержит список из нескольких пар ("key": value). Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

timeout string (Duration format)

Время ожидания HTTP для обычных операций.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву s. Пример: "3.5s".

sseReadTimeout string (Duration format)

Время ожидания для операций чтения SSE.

Продолжительность в секундах, может содержать до девяти дробных цифр и заканчиваться на букву s. Пример: "3.5s".

terminateOnClose boolean

Закрывать ли сеанс клиента при закрытии транспорта.

JSON-представление
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

Инструмент GoogleMaps, который предоставляет геопространственный контекст для запроса пользователя.

Поля
enableWidget boolean

Необязательное поле. Возвращать ли токен контекста виджета в GroundingMetadata ответа. Разработчики могут использовать токен контекста виджета, чтобы отображать виджет Google Карт с геопространственным контекстом, связанным с местами, на которые модель ссылается в ответе.

JSON-представление
{
  "enableWidget": boolean
}

Ресурс REST: auth_tokens

Ресурс: AuthToken

Запрос на создание временного токена аутентификации.

Поля
name string

Только для вывода. Идентификатор. Сам токен.

expireTime string (Timestamp format)

Необязательное поле. Только для ввода. Не меняется. Необязательный параметр, определяющий время, после которого при использовании результирующего токена сообщения в сеансах BidiGenerateContent будут отклоняться. (Gemini может закрыть сеанс раньше).

Если значение не задано, по умолчанию используется 30 минут. Если значение задано, оно должно быть меньше 20 часов в будущем.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Необязательное поле. Только для ввода. Не меняется. Время, после которого новые сеансы Live API, использующие токен, полученный в результате этого запроса, будут отклонены.

Если значение не задано, по умолчанию используется 60 секунд. Если значение задано, оно должно быть меньше 20 часов в будущем.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Необязательное поле. Только для ввода. Не меняется. Если поле fieldMask пустое и bidiGenerateContentSetup отсутствует, то эффективное сообщение BidiGenerateContentSetup берется из подключения Live API.

Если поле fieldMask пустое, а поле bidiGenerateContentSetup заполнено, то сообщение BidiGenerateContentSetup полностью берется из поля bidiGenerateContentSetup в этом запросе. Сообщение о настройке из подключения Live API игнорируется.

Если поле fieldMask не пустое, то соответствующие поля из bidiGenerateContentSetup перезапишут поля из сообщения setup в подключении Live API.

Это список полных названий полей, разделенных запятыми. Пример: "user.displayName,photo".

config Union type
Конфигурация для полученного токена, зависящая от метода. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Необязательное поле. Только для ввода. Не меняется. Конфигурация, относящаяся к BidiGenerateContent.

Конец взаимоисключающих полей.
uses integer

Необязательное поле. Только для ввода. Не меняется. Количество раз, которое можно использовать токен. Если указано значение 0, ограничение не применяется. Возобновление сеанса Live API не считается использованием. Если значение не указано, по умолчанию используется 1.

JSON-представление
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

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

BidiGenerateContentSetup

Сообщение, которое будет отправлено в первом (и только в первом) BidiGenerateContentClientMessage. Содержит конфигурацию, которая будет применяться в течение всего времени потоковой передачи RPC.

Клиенты должны дождаться сообщения BidiGenerateContentSetupComplete, прежде чем отправлять дополнительные сообщения.

Поля
model string

Обязательно. Название ресурса модели. Это идентификатор, который будет использовать модель.

Формат: models/{model}

generationConfig object (GenerationConfig)

Необязательное поле. Конфигурация генерации.

Не поддерживаются следующие поля:

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

Необязательное поле. Системные инструкции для модели, предоставленные пользователем.

Примечание. В частях должен использоваться только текст, а контент в каждой части будет находиться в отдельном абзаце.

tools[] object (Tool)

Необязательное поле. Список Tools, которые модель может использовать для генерации следующего ответа.

Tool – это фрагмент кода, который позволяет системе взаимодействовать с внешними системами для выполнения действия или набора действий за пределами знаний и области действия модели.

realtimeInputConfig object (RealtimeInputConfig)

Необязательное поле. Настраивает обработку входных данных в реальном времени.

sessionResumption object (SessionResumptionConfig)

Необязательное поле. Это правило позволяет настроить механизм возобновления сеанса.

Если он включен, сервер отправит SessionResumptionUpdate сообщений.

contextWindowCompression object (ContextWindowCompressionConfig)

Необязательное поле. Настраивает механизм сжатия окна контекста.

Если он включен, сервер автоматически уменьшит размер контекста, когда он превысит настроенную длину.

inputAudioTranscription object (AudioTranscriptionConfig)

Необязательное поле. Если правило настроено, оно включает расшифровку голосового ввода. Расшифровка соответствует языку входного аудио, если он настроен.

outputAudioTranscription object (AudioTranscriptionConfig)

Необязательное поле. Если задано, включает расшифровку аудиовыхода модели. Расшифровка соответствует коду языка, указанному для выходного аудио, если он настроен.

historyConfig object (HistoryConfig)

Необязательное поле. Это правило позволяет настроить обмен историей между клиентом и сервером.

labels map (key: string, value: string)

Необязательное поле. Ярлыки с пользовательскими метаданными для запроса.

Необязательное поле. Ярлыки должны соответствовать стандартным требованиям к унифицированным ярлыкам Cloud: - Ключи ярлыков должны начинаться с буквы. - Ключи и значения ярлыков могут содержать не более 63 символов (кодовых точек Unicode) и состоять только из строчных букв, цифр, символов подчеркивания и тире. - Можно использовать буквы английского и других алфавитов.

Использование: - Идентификаторы безопасности от агрегаторов: используйте ключ safety_identifier (например, {"safety_identifier": "user_session_123"})

Объект содержит список из нескольких пар ("key": value). Пример: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

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

Параметры конфигурации для генерации и выходных данных модели. Не все параметры можно настроить для каждой модели.

Поля
stopSequences[] string

Необязательное поле. Набор последовательностей символов (до пяти), которые остановят генерацию выходных данных. Если указано, API остановится при первом появлении stop_sequence. Последовательность остановки не будет включена в ответ.

responseMimeType string

Необязательное поле. MIME-тип сгенерированного текста. Поддерживаемые MIME-типы: text/plain – текстовый вывод (по умолчанию). application/json – ответ JSON в вариантах ответа. text/x.enum: ENUM в виде строкового ответа в вариантах ответа. Список всех поддерживаемых MIME-типов текста можно найти в документации.

responseSchema
(deprecated)
object (Schema)

Необязательное поле. Схема вывода сгенерированного текста. Схемы должны быть подмножеством схемы OpenAPI и могут быть объектами, примитивами или массивами.

Если задано это правило, то также должно быть задано совместимое правило responseMimeType. Совместимые MIME-типы: application/json: схема для ответа JSON. Дополнительную информацию можно найти в руководстве по генерации текста JSON.

Устаревший метод. Вместо него используйте responseFormat.

_responseJsonSchema
(deprecated)
value (Value format)

Необязательное поле. Схема вывода сгенерированного ответа. Это альтернатива responseSchema, которая принимает схему JSON.

Если задан этот параметр, то responseSchema нужно опустить, а responseMimeType – указать.

Хотя можно отправить полную схему JSON, поддерживаются не все функции. Поддерживаются только следующие свойства:

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum (для строк и чисел)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOf (интерпретируется так же, как anyOf)
  • properties
  • additionalProperties
  • required

Также может быть задано нестандартное свойство propertyOrdering.

Циклические ссылки разворачиваются в ограниченной степени и поэтому могут использоваться только в необязательных свойствах. (Свойств, допускающих значение NULL, недостаточно.) Если в подсхеме задано свойство $ref, то другие свойства, кроме начинающихся с $, задать нельзя.

Устаревший метод. Вместо него используйте responseFormat.

responseJsonSchema value (Value format)

Необязательное поле. Внутренние сведения. Вместо этого поля используйте responseJsonSchema.

responseModalities[] enum (Modality)

Необязательное поле. Запрошенные модальности ответа. Представляет набор модальностей, которые модель может вернуть и которые следует ожидать в ответе. Это точное соответствие модальностям ответа.

У модели может быть несколько комбинаций поддерживаемых модальностей. Если запрошенные модальности не соответствуют ни одной из поддерживаемых комбинаций, будет возвращена ошибка.

Пустой список эквивалентен запросу только текста.

candidateCount integer

Необязательное поле. Количество сгенерированных ответов, которые нужно вернуть. Если значение не задано, по умолчанию используется 1. Обратите внимание, что это не работает для моделей предыдущего поколения (семейство Gemini 1.0).

maxOutputTokens integer

Необязательное поле. Максимальное количество токенов, которое может быть включено в ответ.

Примечание. Значение по умолчанию зависит от модели. См. атрибут Model.output_token_limit объекта Model, возвращаемого функцией getModel.

temperature number

Необязательное поле. Управляет случайностью выходных данных.

Примечание. Значение по умолчанию зависит от модели. См. атрибут Model.temperature объекта Model, возвращаемого функцией getModel.

Значения могут быть в диапазоне от 0,0 до 2,0.

Это поле больше не поддерживается и игнорируется в Gemini 3.6 Flash и более новых моделях.

topP number

Необязательное поле. Максимальная совокупная вероятность токенов, которые будут учитываться при выборке.

Модель использует комбинированную выборку Top-k и Top-p (ядро).

Токены сортируются по присвоенным им вероятностям, чтобы учитывались только наиболее вероятные. Выборка Top-k напрямую ограничивает максимальное количество токенов, которые следует учитывать, а выборка Nucleus ограничивает количество токенов на основе совокупной вероятности.

Примечание. Значение по умолчанию зависит от Model и определяется атрибутом Model.top_p, возвращаемым функцией getModel. Пустой атрибут topK указывает, что модель не применяет выборку top-k и не позволяет задавать topK в запросах.

Это поле больше не поддерживается и игнорируется в Gemini 3.6 Flash и более новых моделях.

topK integer

Необязательное поле. Максимальное количество токенов, которое учитывается при выборке.

Модели Gemini используют выборку Top-p (ядро) или комбинацию выборки Top-k и ядра. При выборке Top-K рассматривается набор из topK наиболее вероятных токенов. В моделях, работающих с ядерной выборкой, нельзя задать параметр topK.

Примечание. Значение по умолчанию зависит от Model и указывается в атрибуте Model.top_p, возвращаемом функцией getModel. Пустой атрибут topK указывает, что модель не применяет выборку top-k и не позволяет задавать topK в запросах.

Это поле больше не поддерживается и игнорируется в Gemini 3.6 Flash и более новых моделях.

seed integer

Необязательное поле. Начальное значение, используемое при декодировании. Если значение не задано, в запросе используется случайно сгенерированное начальное значение.

presencePenalty number

Необязательное поле. Штраф за присутствие, применяемый к логарифмической вероятности следующего токена, если он уже встречался в ответе.

Этот штраф применяется только один раз, независимо от того, сколько раз токен используется после первого. Используйте frequencyPenalty, чтобы штраф увеличивался с каждым использованием.

Положительное значение штрафа будет препятствовать использованию токенов, которые уже есть в ответе, что позволит расширить словарный запас.

Отрицательное значение штрафа будет поощрять использование токенов, которые уже есть в ответе, что приведет к уменьшению словарного запаса.

frequencyPenalty number

Необязательное поле. Штраф за частоту, применяемый к логарифмическим вероятностям следующего токена, умноженный на количество раз, когда каждый токен был замечен в ответе.

Положительное значение штрафа препятствует использованию токенов, которые уже были использованы, пропорционально количеству раз, когда токен был использован: чем больше токен используется, тем сложнее модели использовать этот токен снова, увеличивая словарный запас ответов.

Внимание! Отрицательный штраф будет стимулировать модель повторно использовать токены пропорционально тому, сколько раз они уже использовались. Небольшие отрицательные значения уменьшают словарный запас ответа. При больших отрицательных значениях модель начнет повторять распространенный токен, пока не достигнет ограничения maxOutputTokens.

responseLogprobs boolean

Необязательное поле. Если задано значение true, в ответе экспортируются результаты logprobs.

logprobs integer

Необязательное поле. Действительно, только если responseLogprobs=True. Задает количество наиболее вероятных логарифмических вероятностей, включая выбранного кандидата, которые будут возвращаться на каждом шаге декодирования в Candidate.logprobs_result. Число должно быть в диапазоне от 0 до 20.

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)

Необязательное поле. Конфигурация для расшифровки аудио (распознавания речи).

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

Модальность

Поддерживаемые модальности ответа.

Перечисления
MODALITY_UNSPECIFIED Значение по умолчанию.
TEXT Указывает, что модель должна возвращать текст.
IMAGE Указывает, что модель должна возвращать изображения.
AUDIO Указывает, что модель должна возвращать аудио.

SpeechConfig

Конфигурация для генерации и расшифровки речи.

Поля
voiceConfig object (VoiceConfig)

Конфигурация для вывода одного голоса.

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

Необязательное поле. Конфигурация для настройки нескольких колонок. Оно является взаимоисключающим с полем voiceConfig.

languageCode string

Необязательное поле. Код языка BCP-47, который пользователь выбрал в приложении. Используется для распознавания и синтеза речи.

Допустимые значения: 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 и th-TH.

JSON-представление
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

Конфигурация голоса, который будет использоваться.

Поля
voice_config Union type
Конфигурация для используемой колонки. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

Конфигурация для использования встроенного голоса.

voice string

Необязательное поле. Идентификатор говорящего для синтеза. Поддерживаемые форматы:

  • Имя диктора для встроенных голосов (например, Orus или Kore).
  • Идентификатор сохраненного голоса (например, voice_xxx).
  • Ключ репликации голоса (например, voicekey_xxx).
Конец взаимоисключающих полей.
JSON-представление
{

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

PrebuiltVoiceConfig

Конфигурация для использования встроенного динамика.

Поля
voiceName string

Необязательное поле. Название предустановленного голоса.

JSON-представление
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

Конфигурация для настройки нескольких колонок.

Поля
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

Обязательно. Все включенные голоса.

JSON-представление
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

Конфигурация для одного динамика в системе с несколькими динамиками.

Поля
speaker string

Обязательно. Название колонки, которую нужно использовать. Должен совпадать с указанным в запросе.

voiceConfig object (VoiceConfig)

Обязательно. Конфигурация голоса, который будет использоваться.

JSON-представление
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

Конфигурация для функций рассуждения.

Поля
includeThoughts boolean

Указывает, нужно ли включать в ответ размышления. Если задано значение true, размышления возвращаются, только когда они доступны.

thinkingBudget integer

Количество токенов рассуждений, которые должна сгенерировать модель.

thinkingLevel enum (ThinkingLevel)

Необязательное поле. Определяет максимальную глубину внутренних рассуждений модели перед созданием ответа. Значение по умолчанию зависит от модели. Подробную информацию можно найти в руководстве по уровням мышления. Рекомендуется для Gemini 3 и более поздних моделей. Если использовать ее с более ранними моделями, возникнет ошибка.

JSON-представление
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

Позволяет пользователю указать, сколько нужно думать, используя перечисление вместо целочисленного бюджета.

Перечисления
THINKING_LEVEL_UNSPECIFIED Значение по умолчанию.
MINIMAL Не нужно думать.
LOW Низкий уровень рассуждений.
MEDIUM Средний уровень рассуждений.
HIGH Высокий уровень мышления.

ImageConfig

Конфигурация для функций генерации изображений.

Поля
aspectRatio string

Необязательное поле. Соотношение сторон изображения, которое нужно сгенерировать. Поддерживаемые соотношения сторон: 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 или 21:9.

Если соотношение сторон не указано, модель выберет его по умолчанию на основе предоставленных референсных изображений.

imageSize string

Необязательное поле. Указывает размер сгенерированных изображений. Допустимые значения: 512, 1K, 2K, 4K. Если значение не указано, модель будет использовать значение по умолчанию 1K.

JSON-представление
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

Разрешение входного медиафайла.

Перечисления
MEDIA_RESOLUTION_UNSPECIFIED Разрешение медиафайла не задано.
MEDIA_RESOLUTION_LOW Разрешение медиафайлов установлено на низкое (64 токена).
MEDIA_RESOLUTION_MEDIUM Разрешение медиафайлов установлено на среднее (256 токенов).
MEDIA_RESOLUTION_HIGH Для разрешения медиафайлов установлено высокое значение (кадрирование с увеличением и 256 токенами).

ResponseFormatConfig

Настройки формата выходных данных ответа. Это плоский объект, в котором каждое необязательное подполе настраивает определенный режим вывода.

Поля
text object (TextResponseFormat)

Необязательное поле. Конфигурация формата вывода текста.

audio object (AudioResponseFormat)

Необязательное поле. Конфигурация формата вывода аудио.

image object (ImageResponseFormat)

Необязательное поле. Конфигурация формата вывода изображения.

JSON-представление
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

Конфигурация формата текстовых выходных данных.

Поля
mimeType enum (MimeType)

Необязательное поле. MIME-тип выходного текста.

schema value (Value format)

Необязательное поле. Схема JSON, которой должны соответствовать выходные данные. Применимо, только если mimeType имеет значение APPLICATION_JSON.

JSON-представление
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

Поддерживаемые MIME-типы для текстовых выходных данных.

Перечисления
MIME_TYPE_UNSPECIFIED Значение по умолчанию. Это значение не используется.
APPLICATION_JSON Формат вывода JSON.
TEXT_PLAIN Формат вывода – обычный текст.

AudioResponseFormat

Конфигурация формата вывода аудио.

Поля
mimeType enum (MimeType)

Необязательное поле. MIME-тип аудиовыхода.

delivery enum (Delivery)

Необязательное поле. Режим доставки для аудиовыхода.

sampleRate integer

Необязательное поле. Частота дискретизации в Гц.

bitRate integer

Необязательное поле. Битрейт в битах в секунду (бит/с). Применимо только для сжатых форматов (MP3, Opus).

JSON-представление
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

Поддерживаемые MIME-типы для вывода аудио.

Перечисления
MIME_TYPE_UNSPECIFIED Значение по умолчанию. Это значение не используется.
AUDIO_MP3 Формат аудио: MP3.
AUDIO_OGG_OPUS Аудиоформат OGG Opus.
AUDIO_L16 Необработанный аудиоформат PCM (L16).
AUDIO_WAV Аудиоформат WAV.
AUDIO_ALAW Аудиоформат A-law.
AUDIO_MULAW Аудиоформат Mu-law.

Доставка

Режим доставки для вывода аудио.

Перечисления
DELIVERY_UNSPECIFIED Значение по умолчанию. Это значение не используется.
INLINE Аудиоданные возвращаются в ответе.
URI Аудиоданные возвращаются в виде URI.

ImageResponseFormat

Конфигурация формата выходного изображения.

Поля
mimeType enum (MimeType)

Необязательное поле. MIME-тип выходного изображения.

delivery enum (Delivery)

Необязательное поле. Режим доставки для выходного изображения.

aspectRatio enum (AspectRatio)

Необязательное поле. Соотношение сторон для выходного изображения.

imageSize enum (ImageSize)

Необязательное поле. Размер изображения.

JSON-представление
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

Поддерживаемые MIME-типы для выходных изображений.

Перечисления
MIME_TYPE_UNSPECIFIED Значение по умолчанию. Это значение не используется.
IMAGE_JPEG Графический формат JPEG.

Доставка

Режим доставки для вывода изображения.

Перечисления
DELIVERY_UNSPECIFIED Значение по умолчанию. Это значение не используется.
INLINE Данные изображения возвращаются в ответе.
URI Данные изображения возвращаются в виде URI.

AspectRatio

Поддерживаемые соотношения сторон для изображений.

Перечисления
ASPECT_RATIO_UNSPECIFIED Значение по умолчанию. Это значение не используется.
ASPECT_RATIO_ONE_BY_ONE Соотношение сторон: 1:1.
ASPECT_RATIO_TWO_BY_THREE Соотношение сторон: 2:3.
ASPECT_RATIO_THREE_BY_TWO Соотношение сторон: 3:2.
ASPECT_RATIO_THREE_BY_FOUR Соотношение сторон: 3:4.
ASPECT_RATIO_FOUR_BY_THREE Соотношение сторон – 4:3.
ASPECT_RATIO_FOUR_BY_FIVE Соотношение сторон: 4:5.
ASPECT_RATIO_FIVE_BY_FOUR Соотношение сторон: 5:4.
ASPECT_RATIO_NINE_BY_SIXTEEN Соотношение сторон: 9:16.
ASPECT_RATIO_SIXTEEN_BY_NINE Соотношение сторон – 16:9.
ASPECT_RATIO_TWENTY_ONE_BY_NINE Соотношение сторон: 21:9.
ASPECT_RATIO_ONE_BY_EIGHT Соотношение сторон: 1:8.
ASPECT_RATIO_EIGHT_BY_ONE Соотношение сторон: 8:1.
ASPECT_RATIO_ONE_BY_FOUR Соотношение сторон: 1:4.
ASPECT_RATIO_FOUR_BY_ONE Соотношение сторон: 4:1.

ImageSize

Поддерживаемые размеры изображений для вывода изображений.

Перечисления
IMAGE_SIZE_UNSPECIFIED Значение по умолчанию. Это значение не используется.
IMAGE_SIZE_FIVE_TWELVE Размер изображения: 512 пкс.
IMAGE_SIZE_ONE_K Размер изображения: 1K.
IMAGE_SIZE_TWO_K Размер изображения 2K.
IMAGE_SIZE_FOUR_K Размер изображения 4K.

TranslationConfig

Конфигурация функций перевода.

Поля
targetLanguageCode string

Обязательно. Язык перевода. Допустимые значения — это коды языков по стандарту BCP-47 (например, "en", "es", "fr").

echoTargetLanguage boolean

Необязательное поле. Если задано значение true, модель будет генерировать аудио, когда говорят на языке перевода, по сути повторяя входные данные. Если false, аудио на языке целевой аудитории не будет создано.

JSON-представление
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

Конфигурация расшифровки аудио.

Поля
languageCodes[] string

Необязательное поле. Коды языков по стандарту BCP-47, указывающие на языки, которые используются в аудиозаписи. Если параметр не указан или пуст, язык определяется автоматически.

adaptationPhrases[]
(deprecated)
string

Необязательное поле. Список фраз, используемых для адаптации речи, который смещает модель ASR для улучшения распознавания этих конкретных терминов.

customVocabulary[] string

Необязательное поле. Список фраз, которые помогают модели распознавания речи распознавать определенные термины (названия товаров, имена собственные, жаргонизмы).

wordTimestamp boolean

Необязательное поле. Настраивает создание временных меток на уровне слов.

diarization boolean

Необязательное поле. Настраивает разделение говорящих.

mode enum (Mode)

Необязательное поле. Настраивает режим расшифровки. Допустимые значения: VERBATIM, SMART. Если не указано, по умолчанию используется расшифровка VERBATIM. В режиме "SMART" модель удаляет запинки (слова-паразиты, повторы и фальстарты), исправляет простые грамматические ошибки, автоматически форматирует текст (абзацы, маркированные и нумерованные списки) и вносит незначительные правки (исправления, сделанные пользователем в процессе речи). Временные метки и диаризация несовместимы с режимом SMART.

language_config Union type
Устарело. Используйте вместо него language_codes верхнего уровня. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
languageAuto
(deprecated)
object (LanguageAuto)

Необязательное поле. Модель определит язык автоматически.

languageHints
(deprecated)
object (LanguageHints)

Необязательное поле. Указывает один или несколько языков в аудио.

Конец взаимоисключающих полей.
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

У этого типа нет полей.

Указывает, что язык аудио должен определяться автоматически.

LanguageHints

Предоставляет модели подсказки о возможных языках, присутствующих в аудио.

Поля
languageCodes[]
(deprecated)
string

Обязательно. Коды языков по стандарту BCP 47.

JSON-представление
{
  "languageCodes": [
    string
  ]
}

Режим

Режим расшифровки.

Перечисления
MODE_UNSPECIFIED Режим расшифровки не указан.
VERBATIM Дословная расшифровка.
SMART Режим умной расшифровки.

RealtimeInputConfig

Настраивает поведение ввода в реальном времени в BidiGenerateContent.

Поля
automaticActivityDetection object (AutomaticActivityDetection)

Необязательное поле. Если правило не настроено, автоматическое отслеживание активности включено по умолчанию. Если автоматическое распознавание голоса отключено, клиент должен отправлять сигналы активности.

activityHandling enum (ActivityHandling)

Необязательное поле. Определяет, какой эффект имеет действие.

turnCoverage enum (TurnCoverage)

Необязательное поле. Определяет, какие входные данные включаются в реплику пользователя.

interimTranscriptTimestampEnabled boolean

Необязательное поле. Настраивает временные метки промежуточной расшифровки.

JSON-представление
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage),
  "interimTranscriptTimestampEnabled": boolean
}

AutomaticActivityDetection

Настройка автоматического распознавания активности.

Поля
disabled boolean

Необязательное поле. Если параметр включен (по умолчанию), распознанный голосовой и текстовый ввод считается действием. Если эта функция отключена, клиент должен отправлять сигналы активности.

startOfSpeechSensitivity enum (StartSensitivity)

Необязательное поле. Определяет, насколько вероятно, что речь будет распознана.

prefixPaddingMs integer

Необязательное поле. Продолжительность обнаруженной речи, необходимая для фиксации начала речи. Чем ниже это значение, тем чувствительнее распознавание начала речи и тем более короткие фразы могут быть распознаны. Однако это также увеличивает вероятность ложноположительных результатов.

endOfSpeechSensitivity enum (EndSensitivity)

Необязательное поле. Определяет вероятность того, что распознанная речь закончилась.

silenceDurationMs integer

Необязательное поле. Продолжительность обнаруженного отсутствия речи (например, тишины), после которого фиксируется конец речи. Чем больше это значение, тем длиннее могут быть паузы в речи без прерывания действий пользователя, но это увеличит задержку модели.

JSON-представление
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

Определяет, как распознается начало речи.

Перечисления
START_SENSITIVITY_UNSPECIFIED Значение по умолчанию – START_SENSITIVITY_HIGH.
START_SENSITIVITY_HIGH Автоматическое определение будет чаще распознавать начало речи.
START_SENSITIVITY_LOW Автоматическое определение будет реже распознавать начало речи.

EndSensitivity

Определяет, как обнаруживается конец речи.

Перечисления
END_SENSITIVITY_UNSPECIFIED Значение по умолчанию – END_SENSITIVITY_HIGH.
END_SENSITIVITY_HIGH Автоматическое определение чаще завершает речь.
END_SENSITIVITY_LOW При автоматическом определении речь прерывается реже.

ActivityHandling

Различные способы обработки действий пользователя.

Перечисления
ACTIVITY_HANDLING_UNSPECIFIED Если оно не задано, используется режим работы по умолчанию – START_OF_ACTIVITY_INTERRUPTS.
START_OF_ACTIVITY_INTERRUPTS Если задано значение true, начало действия прервет ответ модели. Текущий ответ модели будет прерван. Такая сортировка используется по умолчанию.
NO_INTERRUPTION Ответ модели не будет прерван.

TurnCoverage

Настройки, определяющие, какие входные данные включаются в реплику пользователя.

Перечисления
TURN_COVERAGE_UNSPECIFIED Если значение не указано, режим работы по умолчанию выбирается на основе модели. Например, для Gemini 2.5 по умолчанию используется TURN_INCLUDES_ONLY_ACTIVITY, а для Gemini 3.1 и более поздних версий – TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO.
TURN_INCLUDES_ONLY_ACTIVITY Включает действия с момента последнего хода, за исключением бездействия (например, тишины в аудиопотоке).
TURN_INCLUDES_ALL_INPUT Включает все входные данные в реальном времени с момента последнего хода, включая бездействие (например, тишину в аудиопотоке).
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO Включает аудиозаписи и все видео с момента последнего хода. При автоматическом определении активности аудиоактивность означает речь и исключает тишину.

SessionResumptionConfig

Конфигурация возобновления сеанса.

Это сообщение включено в конфигурацию сеанса как BidiGenerateContentSetup.session_resumption. Если настроено, сервер будет отправлять сообщения SessionResumptionUpdate.

Поля
handle string

Дескриптор предыдущего сеанса. Если его нет, создается новый сеанс.

Дескрипторы сеансов берутся из значений SessionResumptionUpdate.token в предыдущих подключениях.

JSON-представление
{
  "handle": string
}

ContextWindowCompressionConfig

Включает сжатие окна контекста – механизм управления окном контекста модели, чтобы оно не превышало заданную длину.

Поля
compression_mechanism Union type
Используемый механизм сжатия окна контекста. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
slidingWindow object (SlidingWindow)

Механизм скользящего окна.

Конец взаимоисключающих полей.
triggerTokens string (int64 format)

Количество токенов (до выполнения хода), необходимое для запуска сжатия окна контекста.

Это позволяет найти баланс между качеством и задержкой, поскольку более короткие окна контекста могут привести к более быстрым ответам модели. Однако любая операция сжатия вызывает временное увеличение задержки, поэтому не следует запускать ее часто.

Если значение не задано, по умолчанию используется 80% от лимита окна контекста модели. Оставшиеся 20% используются для следующего запроса пользователя или ответа модели.

JSON-представление
{

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

SlidingWindow

Метод SlidingWindow удаляет контент в начале окна контекста. Результирующий контекст всегда будет начинаться с роли USER. Системные инструкции и BidiGenerateContentSetup.prefix_turns всегда будут в начале результата.

Поля
targetTokens string (int64 format)

Целевое количество токенов, которые нужно сохранить. Значение по умолчанию – triggerTokens/2.

Удаление частей окна контекста приводит к временному увеличению задержки, поэтому это значение следует откалибровать, чтобы избежать частых операций сжатия.

JSON-представление
{
  "targetTokens": string
}

HistoryConfig

Настройки истории.

Это сообщение включено в конфигурацию сеанса как BidiGenerateContentSetup.history_config. Настраивает обмен сообщениями истории.

Поля
initialHistoryInClientContent boolean

Необязательное поле. Если указано значение true, после отправки setupComplete сервер будет ждать и сначала обрабатывать сообщения clientContent, пока turnComplete не станет true. Эта начальная история не вызовет модель и может закончиться ролью MODEL. После того как turnComplete будет true, клиент сможет начать разговор в реальном времени через realtimeInput.

JSON-представление
{
  "initialHistoryInClientContent": boolean
}

Метод: auth_tokens.create

Создает токен, который можно использовать для ограничения поведения сеанса BidiGenerateContent.

Конечная точка

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

Тело запроса

Тело запроса содержит экземпляр AuthToken.

Поля
expireTime string (Timestamp format)

Необязательное поле. Только для ввода. Не меняется. Необязательный параметр, определяющий время, после которого при использовании результирующего токена сообщения в сеансах BidiGenerateContent будут отклоняться. (Gemini может закрыть сеанс раньше).

Если значение не задано, по умолчанию используется 30 минут. Если значение задано, оно должно быть меньше 20 часов в будущем.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

newSessionExpireTime string (Timestamp format)

Необязательное поле. Только для ввода. Не меняется. Время, после которого новые сеансы Live API, использующие токен, полученный в результате этого запроса, будут отклонены.

Если значение не задано, по умолчанию используется 60 секунд. Если значение задано, оно должно быть меньше 20 часов в будущем.

Используется формат RFC 3339. Результат всегда будет Z-нормализованным, и в нем будут использоваться цифры дробных частей 0, 3, 6 или 9. Допустимы и другие типы нормализации. Примеры: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30".

fieldMask string (FieldMask format)

Необязательное поле. Только для ввода. Не меняется. Если поле fieldMask пустое и bidiGenerateContentSetup отсутствует, то эффективное сообщение BidiGenerateContentSetup берется из подключения Live API.

Если поле fieldMask пустое, а поле bidiGenerateContentSetup заполнено, то сообщение BidiGenerateContentSetup полностью берется из поля bidiGenerateContentSetup в этом запросе. Сообщение о настройке из подключения Live API игнорируется.

Если поле fieldMask не пустое, то соответствующие поля из bidiGenerateContentSetup перезапишут поля из сообщения setup в подключении Live API.

Это список полных названий полей, разделенных запятыми. Пример: "user.displayName,photo".

config Union type
Конфигурация для полученного токена, зависящая от метода. Ниже приведен список взаимоисключающих полей. В ответе будет задано не более одного из следующих полей:
bidiGenerateContentSetup object (BidiGenerateContentSetup)

Необязательное поле. Только для ввода. Не меняется. Конфигурация, относящаяся к BidiGenerateContent.

Конец взаимоисключающих полей.
uses integer

Необязательное поле. Только для ввода. Не меняется. Количество раз, которое можно использовать токен. Если указано значение 0, ограничение не применяется. Возобновление сеанса Live API не считается использованием. Если значение не указано, по умолчанию используется 1.

Тело ответа

Тело ответа, полученного на запрос, содержит новый экземпляр AuthToken.