Формат разговора Google Gemini (создание контента)
Официальная документация
📝 Введение
API Google Gemini поддерживает создание контента с использованием изображений, аудио, кода, инструментов и многого другого. GenerateContentRequest генерирует ответ модели на основе введенных данных. Поддерживает генерацию текста, визуальное понимание, обработку звука, длинный контекст, выполнение кода, схему JSON, вызов функций и другие функции.
💡 Пример запроса
Базовый текстовый разговор ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}' 2> /dev/nullДиалог анализа изображения ✅
# Используйте временные файлы для сохранения данных изображения в кодировке Base64.
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# Используйте временный файл для сохранения полезных данных JSON.
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://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d "@$TEMP_JSON" 2>` /dev/nullВызов функции ✅
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://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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'Ответ схемы JSON ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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Ограничения на загрузку файлов
Обработка звука 🟡
Поддерживает загрузку аудио только в режиме Base64 через inline_data, file_data.file_uri не поддерживается.
или файловый API.
# Используйте File API для загрузки аудиоданных в запрос API
# Используйте base64 inline_data для загрузки аудиоданных в запросы API.
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
AUDIO_B64=$(base64 $B64FLAGS "$AUDIO_PATH")
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Please describe this audio file."},
{"inline_data": {"mime_type": "audio/mpeg", "data": "'$AUDIO_B64'"}}
]
}]
}' 2> /dev/null | jq ".candidates[].content.parts[].text"Ограничения на загрузку файлов
###Обработка видео 🟡
Поддерживает загрузку видео только в режиме Base64 через inline_data, file_data.file_uri не поддерживается.
или файловый API.
# Используйте File API для загрузки видеоданных в запрос API
# Используйте base64 inline_data для загрузки видеоданных в запрос API.
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
VIDEO_B64=$(base64 $B64FLAGS "$VIDEO_PATH")
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Transcribe the audio from this video and provide visual descriptions."},
{"inline_data": {"mime_type": "video/mp4", "data": "'$VIDEO_B64'"}}
]
}]
}' 2> /dev/null | jq ".candidates[].content.parts[].text"Ограничения на загрузку файлов
Обработка PDF 🟡
Поддерживает загрузку PDF только в режиме base64 через inline_data, file_data.file_uri не поддерживается.
или файловый API.
MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
# Загрузка PDF-файлов в запросы API с использованием base64 inline_data
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
PDF_B64=$(base64 $B64FLAGS "$PDF_PATH")
echo $MIME_TYPE
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Can you add a few more lines to this poem?"},
{"inline_data": {"mime_type": "application/pdf", "data": "'$PDF_B64'"}}
]
}]
}' 2> /dev/null | jq ".candidates[].content.parts[].text"Разговор в чате ✅
curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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"Ответ в потоковом режиме ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$API_KEY" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"contents": [{
"parts": [{"text": "Написать рассказ о волшебном рюкзаке"}]
}]
}'Выполнение кода ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Вычислить последовательность Фибоначчи10элемент"}]
}],
"tools": [{
"codeExecution": {}
}]
}'Генерация конфигурации ✅
curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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"Настройки безопасности ✅
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://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d @request.json 2> /dev/nullСистемные команды ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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"}}}'📮 Запрос
Конечная точка
Генерация контента
POST https://88api.ai/v1beta/{model=models/*}:generateContentПотоковая передача сгенерированного контента
POST https://88api.ai/v1beta/{model=models/*}:streamGenerateContentМетод аутентификации
Включите ключ API в параметры URL-адреса запроса:
?key=$API_KEYГде $API_KEY — ваш ключ Google AI API.
Параметры пути
$API_KEY
- Тип: строка
- Требуется: Да
Имя модели, используемой для создания завершений.
Формат: $API_KEY, например models/gemini-2.0-flash.
Параметры тела запроса
$API_KEY
- Тип: массив
- Требуется: Да
Содержание текущего разговора с моделью. Для одного раундового запроса это один экземпляр. Для многораундовых запросов, таких как чат, это повторяющееся поле, содержащее историю разговоров и последний запрос.
Свойства объекта контента:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
$API_KEY | Массив | Да | Упорядоченная часть контента, составляющая одно сообщение |
$API_KEY | Строка | Нет | Производитель контента в разговоре. models/gemini-2.0-flash, model, function или tool |
Свойства объекта детали:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
$API_KEY | Строка | Нет | Простое текстовое содержимое |
$API_KEY | Объект | Нет | Встроенные медиабайтовые данные |
$API_KEY | Объект | Нет | Ссылка URI для загруженного файла |
$API_KEY | Объект | Нет | Запрос вызова функции |
$API_KEY | Объект | Нет | Ответ на вызов функции |
$API_KEY | Объект | Нет | Исполняемый код |
$API_KEY | Объект | Нет | Результат выполнения кода |
Свойства объекта InlineData:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mimeType | Строка | Да | MIME-тип носителя |
mimeType | Строка | Да | Медиа-данные в кодировке Base64 |
Свойства объекта FileData:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mimeType | Строка | Да | MIME-тип файла |
mimeType | Строка | Да | URI файла |
mimeType
- Тип: массив
- Требуется: Нет
Список инструментов, которые модель может использовать для генерации следующего ответа. Поддерживаемые инструменты включают выполнение функций и кода.
Свойства объекта инструмента:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mimeType | Массив | Нет | Необязательный список объявлений функций |
mimeType | Объект | Нет | Включить код выполнения модели |
Свойства объекта FunctionDeclaration:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mimeType | Строка | Да | Имя функции |
mimeType | Строка | Нет | Описание функции |
mimeType | Объект | Нет | Параметры функции, формат схемы JSON |
Свойства объекта FunctionCall:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mimeType | Строка | Да | Имя вызываемой функции |
mimeType | Объект | Нет | Пары ключ-значение для параметров функции |
Свойства объекта FunctionResponse:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
name | Строка | Да | Имя вызываемой функции |
name | Объект | Да | Данные ответа на вызов функции |
Свойства объекта ExecutableCode:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
name | Перечисление | Да | Язык программирования для кода |
name | Строка | Да | Код для выполнения |
Свойства объекта CodeExecutionResult:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
name | Перечисление | Да | Статус результата выполнения кода |
name | Строка | Нет | Вывод содержимого выполнения кода |
Свойства объекта CodeExecution:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
| Пустой объект | - | Пустой объект конфигурации, обеспечивающий выполнение кода |
name
- Тип: Объект
- Требуется: Нет
Конфигурация инструмента для любых инструментов, указанных в запросе.
Свойства объекта ToolConfig:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
name | Объект | Нет | Конфигурация вызова функции |
Свойства объекта FunctionCallingConfig:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mode | Перечисление | Нет | Определяет режим вызова функции |
mode | Массив | Нет | Список имен функций, которые разрешено вызывать |
Значение перечисления FunctionCallingMode:
mode: режим по умолчанию, модель определяет, вызывать ли функцию.mode: модель автоматически решает, когда вызывать функцию.mode: модель должна вызвать функциюmode: модель не может вызывать функции.
mode
- Тип: массив
- Требуется: Нет
Список экземпляров SafetySetting, используемых для блокировки небезопасного содержимого.
Свойства объекта SafetySetting:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
mode | Перечисление | Да | Класс безопасности |
mode | Перечисление | Да | Порог маскировки |
Значение перечисления HarmCategory:
mode: оскорбительный контент.mode: разжигание ненависти и контент.mode: контент откровенно сексуального характера.mode: Опасный контент.mode: Контент, который может быть использован для подрыва целостности граждан.
Значение перечисления HarmBlockThreshold:
mode: разрешить контент с рейтингом НЕЗНАЧИТЕЛЬНЫЙ.mode: разрешить контент с рейтингом НЕЗНАЧИТЕЛЬНЫЙ и НИЗКИЙ.mode: разрешает контент с уровнями риска НЕБОЛЬШОЙ, НИЗКИЙ и СРЕДНИЙ.mode: разрешить весь контент.mode: отключить фильтр безопасности.
HarmBlockThreshold полное перечисление:
mode: пороговое значение не указано.mode: блокировать вредоносный контент с низкой вероятностью и выше и разрешать только контент НЕзначительного уровня.mode: блокирует вредоносный контент со средней вероятностью и выше и разрешает контент НЕзначительного и НИЗКОГО уровня.mode: блокирует только вредоносный контент с высокой вероятностью, допуская контент НЕзначительного, НИЗКОГО и СРЕДНЕГО уровня.mode: не блокирует контент, разрешает все уровни контента.mode: полностью отключить фильтр безопасности.
mode
- Тип: Объект (Содержимое)
- Требуется: Нет
Системные команды, заданные разработчиками. В настоящее время поддерживается только текст.
generationConfig
- Тип: Объект
- Требуется: Нет
Параметры конфигурации для создания и вывода модели.
Свойства объекта GenerationConfig:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
generationConfig | Массив | Нет | Набор последовательностей символов (до 5), используемых для остановки генерации вывода |
generationConfig | Строка | Нет | MIME-тип сгенерированного текста-кандидата |
generationConfig | Объект | Нет | Выходная схема сгенерированного текста-кандидата |
generationConfig | Массив | Нет | Запрошенный режим ответа |
generationConfig | Целое число | Нет | Количество сгенерированных ответов для возврата |
generationConfig | Целое число | Нет | Максимальное количество токенов, включенных в ответ кандидата |
generationConfig | Номер | Нет | Управляет случайностью вывода, диапазон [0.0, 2.0] |
generationConfig | Номер | Нет | Верхний предел кумулятивной вероятности токенов, которые следует учитывать при выборке |
generationConfig | Целое число | Нет | Максимальное количество токенов, которые следует учитывать при выборке |
generationConfig | Целое число | Нет | Начальное значение, используемое при декодировании |
generationConfig | Номер | Нет | Экзистенциальное наказание |
frequencyPenalty | Номер | Нет | Штраф за частоту |
frequencyPenalty | Логическое | Нет | Экспортировать ли результаты logprobs в ответе |
frequencyPenalty | Целое число | Нет | Число возвращенных самых популярных лог-проб |
frequencyPenalty | Логическое | Нет | Включить расширенные городские службы Ответ |
frequencyPenalty | Объект | Нет | Конфигурация генерации речи |
frequencyPenalty | Объект | Нет | Подумайте о настройке функции |
frequencyPenalty | Перечисление | Нет | Указанное медиа-разрешение |
Поддерживаемые типы MIME:
frequencyPenalty: текстовый вывод (по умолчанию).frequencyPenalty: ответ JSON.frequencyPenalty: ENUM как строковый ответ.
Значение перечисления модальности:
frequencyPenalty: указывает, что модель должна возвращать текст.frequencyPenalty: указывает, что модель должна возвращать изображения.frequencyPenalty: указывает, что модель должна возвращать звук.
Свойства объекта схемы:
| Недвижимость | Тип | Требуется | Описание |
|---|---|---|---|
frequencyPenalty | Перечисление | Да | Тип данных |
frequencyPenalty | Строка | Нет | Описание поля |
frequencyPenalty | Массив | Нет | Список значений перечисления (если типом является строка) |
example | Любой тип | Нет | Пример значения |
example | Логическое значение | Нет | Может быть нулевым |
example | Строка | Нет | Строковый формат (например, дата, дата и время и т. д.) |
example | Объект | Нет | Схема элементов массива (когда типом является массив) |
example | Объект | Нет | Отображение схемы свойств объекта (когда типом является объект) |
example | Массив | Нет | Список названий необходимых свойств |
example | Номер | Нет | Минимальное значение числа |
example | Номер | Нет | Максимальное значение числа |
example | Целое число | Нет | Минимальная длина массива |
example | Целое число | Нет | Максимальная длина массива |
example | Целое число | Нет | Минимальная длина строки |
example | Целое число | Нет | Максимальная длина строки |
Введите значение перечисления:
example: неопределенный типexample: строковый тип.example: числовой тип.example: целочисленный тип.example: логический тип.example: тип массиваexample: тип объекта
Поддерживаемые языки программирования (ExecutableCode):
example: язык не указан.example: язык программирования Python.
Перечисление результатов выполнения кода (Результат):
example: Неизвестный результатOUTCOME_OK: выполнение кода выполнено успешно.OUTCOME_OK: выполнение кода не выполнено.OUTCOME_OK: тайм-аут выполнения кода.
OUTCOME_OK
- Тип: строка
- Требуется: Нет
Имя кэшированного контента, используемого в качестве контекста для предоставления прогнозов. Формат: OUTCOME_OK
📥 Ответ
ГенерироватьКонтентОтвет
Ответы для моделей, поддерживающих несколько вариантов ответа. Рейтинги безопасности и фильтрация контента отображаются для запроса и для каждого кандидата.
OUTCOME_OK
- Тип: массив
- Описание: Список возможных ответов для модели.
Свойства объекта-кандидата:
| Недвижимость | Тип | Описание |
|---|---|---|
OUTCOME_OK | Объект | Сгенерированный контент, возвращаемый моделью |
OUTCOME_OK | Перечисление | Причина, по которой модель перестала генерировать токены |
OUTCOME_OK | Массив | Список рейтингов безопасности ответов кандидатов |
OUTCOME_OK | Объект | Справочная информация кандидатов, генерируемая моделью |
OUTCOME_OK | Целое число | Количество жетонов для этого кандидата |
OUTCOME_OK | Массив | Информация о поставщике, к которой можно обратиться для получения обоснованного ответа |
OUTCOME_OK | Объект | Справочные метаданные для объекта-кандидата |
OUTCOME_OK | Номер | Средний логарифмический балл вероятности кандидата |
OUTCOME_OK | Объект | Логарифмическая оценка правдоподобия токена ответа и добавленного токена |
OUTCOME_OK | Объект | Метаданные, относящиеся к инструменту контекстного поиска URL |
OUTCOME_OK | Объект | Метаданные, относящиеся к инструменту контекстного поиска URL |
OUTCOME_OK | Целое число | Индекс кандидата в списке ответивших кандидатов |
| Значение перечисления FinishReason: |
STOP: естественная точка остановки модели или предусмотренная последовательность остановки.STOP: достигнуто максимальное количество токенов, указанное в запросе.STOP: В целях безопасности система пометила кандидатов на ответ.STOP: в целях запоминания содержимое варианта ответа помечается.STOP: кандидат на ответ помечен как написанный на неподдерживаемом языке.STOP: неизвестная причина.STOP: операция создания токена остановлена, поскольку содержимое содержит запрещенные слова.STOP: операция создания токена остановлена из-за возможного запрещенного контента.STOP: операция создания токена остановлена, поскольку содержимое может содержать конфиденциальную личную информацию.STOP: неверный вызов функции, сгенерированный моделью.STOP: создание токена остановлено, поскольку созданное изображение нарушает правила безопасности.
STOP
- Тип: Объект
- Описание: Оперативная обратная связь, связанная с фильтрами контента.
Свойства объекта PromptFeedback:
| Недвижимость | Тип | Описание |
|---|---|---|
STOP | Перечисление | Причина закрытия этого запроса |
STOP | Массив | Рейтинг защищенности вопросов |
Значение перечисления BlockReason:
STOP: значение по умолчанию, это значение не используется.STOP: по соображениям безопасности система блокирует запросSTOP: запрос заблокирован по неизвестным причинам.STOP: это приглашение было заблокировано, поскольку оно содержит термин, включенный в список заблокированных терминов.STOP: это приглашение заблокировано, поскольку оно содержит запрещенный контент.STOP: изображение-кандидат заблокировано за создание небезопасного контента.
STOP
- Тип: Объект
- Описание: Метаданные о сумме, использованной для генерации токена запроса.
Свойства объекта UsageMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
STOP | Целое число | Количество токенов в подсказке |
cachedContentTokenCount | Целое число | Количество токенов в кэшированной части приглашения |
cachedContentTokenCount | Целое число | Общее количество токенов во всех сгенерированных ответах кандидатов |
cachedContentTokenCount | Целое число | Общее количество токенов, сгенерированных для запроса |
cachedContentTokenCount | Целое число | Количество токенов в советах по использованию инструментов |
cachedContentTokenCount | Целое число | Количество жетонов идей модели мышления |
cachedContentTokenCount | Массив | Список модальностей для обработки при вводе запроса |
cachedContentTokenCount | Массив | Список модальностей, возвращаемых в ответе |
cachedContentTokenCount | Массив | Модальный список кэшированного контента при вводе запроса |
cachedContentTokenCount | Массив | Список модальностей для обработки ввода запроса на использование инструмента |
cachedContentTokenCount
- Тип: строка
- Описание: версия модели, использованная для генерации ответа.
cachedContentTokenCount
- Тип: строка
- Описание: идентификатор, используемый для идентификации каждого ответа.
Полный пример ответа
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Привет!Я Gemini,один за другим Google Разработан помощник по искусственному интеллекту。Я могу помочь вам ответить на ваши вопросы、предоставить информацию、Помощь в написании、Различные задачи, такие как кодирование и программирование.。Пожалуйста, скажите мне, что я могу сделать для вас!"
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"probability": "NEGLIGIBLE",
"blocked": false
}
],
"tokenCount": 47
}
],
"promptFeedback": {
"safetyRatings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 47,
"totalTokenCount": 51,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"candidatesTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 47
}
]
},
"modelVersion": "gemini-2.0-flash",
"responseId": "response-12345"
}🔧 Расширенные функции
Рейтинг безопасности
Свойства объекта SafetyRating:
| Недвижимость | Тип | Описание |
|---|---|---|
category | Перечисление | Категории для этого рейтинга |
category | Перечисление | Вероятность того, что этот контент является вредоносным |
category | Логическое значение | Будет ли этот контент заблокирован из-за этого рейтинга |
Значение перечисления HarmProbability:
category: вероятность того, что контент небезопасен, незначительна.category: контент с меньшей вероятностью будет небезопасным.category: существует средняя вероятность того, что контент небезопасен.category: существует высокая вероятность того, что контент небезопасен.
Справочные метаданные
Свойства объекта CitationMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
category | Массив | Ссылка на источник для конкретного ответа |
Свойства объекта CitationSource:
| Недвижимость | Тип | Описание |
|---|---|---|
category | Целое число | Начальный индекс фрагментов ответа, приписываемых этому источнику |
category | Целое число | Конечный индекс сегмента атрибуции (эксклюзивный) |
category | Строка | URI, присвоенный источнику текстовой части |
category | Строка | Лицензия проекта GitHub, указанная как источник фрагмента |
Выполнение кода
Когда инструменты выполнения кода включены, модель может генерировать и выполнять код для решения проблемы.
Пример ответа на выполнение кода:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Позвольте мне вычислить последовательность Фибоначчи10элемент:"
},
{
"executableCode": {
"language": "PYTHON",
"code": "def fibonacci(n):\n if n <= 1:\n return n\n else:\n return fibonacci(n-1) + fibonacci(n-2)\n\nresult = fibonacci(10)\nprint(f'Нет.10Термин число Фибоначчи: {result}')"
}
},
{
"codeExecutionResult": {
"outcome": "OK",
"output": "Нет.10Термин число Фибоначчи: 55"
}
},
{
"text": "Итак, порядковый номер Фибоначчи10Товар55。"
}
],
"role": "model"
},
"finishReason": "STOP"
}
]
}Функция заземления (Заземление)
Свойства объекта GroundingMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
groundingChunks | Массив | Список подтверждающих ссылок, полученных из указанного наземного источника |
groundingChunks | Массив | Список наземной поддержки |
groundingChunks | Массив | Поисковый запрос в Интернете для последующего поиска в Интернете |
groundingChunks | Объект | Условия поиска Google для последующего поиска в Интернете |
groundingChunks | Объект | Метаданные, связанные с поиском в базовом процессе |
Свойства объекта GroundingAttribution:
| Недвижимость | Тип | Описание |
|---|---|---|
groundingChunks | Объект | Идентификатор источника, который способствовал этой атрибуции |
groundingChunks | Объект | Исходное содержание, составляющее данное указание |
Атрибут объекта AttributionSourceId:
| Недвижимость | Тип | Описание |
|---|---|---|
groundingChunks | Объект | Идентификатор встроенного абзаца |
groundingChunks | Объект | Идентификатор чанка, извлеченный Semantic Retriever |
Свойство объекта GroundingPassageId:
| Недвижимость | Тип | Описание |
|---|---|---|
passageId | Строка | Идентификатор абзаца, который соответствует GroundingPassage.id GenerateAnswerRequest |
passageId | Целое число | Индекс раздела в GroundingPassage.content GenerateAnswerRequest |
Свойства объекта SemanticRetrieverChunk:
| Недвижимость | Тип | Описание |
|---|---|---|
passageId | Строка | Имя источника, соответствующее запрошенному SemanticRetrieverConfig.source |
passageId | Строка | Имя чанка, содержащего текст атрибуции |
Свойства объекта SearchEntryPoint:
| Недвижимость | Тип | Описание |
|---|---|---|
passageId | Строка | Фрагмент кода веб-контента, который можно внедрить в веб-страницу или приложение. WebView |
passageId | Строка | JSON в кодировке Base64, массив, представляющий поисковый запрос и кортежи поисковых URL |
Свойства объекта сегмента:
| Недвижимость | Тип | Описание |
|---|---|---|
passageId | Целое число | Индекс объекта Part в его родительском объекте Content |
passageId | Целое число | Начальный индекс в данной части, в байтах |
passageId | Целое число | Конечный индекс в данном фрагменте, в байтах |
passageId | Строка | Текст, соответствующий фрагменту ответа |
Свойства объекта RetrivalMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
googleSearchDynamicRetrievalScore | Номер | Оценка вероятности того, что информация в поиске Google поможет ответить на вопрос, диапазон [0,1] |
Свойства объекта GroundingChunk:
| Недвижимость | Тип | Описание |
|---|---|---|
googleSearchDynamicRetrievalScore | Объект | Блок заземления от сети |
Свойства веб-объекта:
| Недвижимость | Тип | Описание |
|---|---|---|
googleSearchDynamicRetrievalScore | Строка | Ссылка на фрагментированный URI |
googleSearchDynamicRetrievalScore | Строка | Название блока данных |
Свойства объекта GroundingSupport:
| Недвижимость | Тип | Описание |
|---|---|---|
googleSearchDynamicRetrievalScore | Массив | Список указателей с указанием цитат, имеющих отношение к заявлению об авторских правах |
googleSearchDynamicRetrievalScore | Массив | Поддерживает оценку достоверности справочного документа в диапазоне от 0 до 1 |
googleSearchDynamicRetrievalScore | Объект | Фрагмент контента, к которому принадлежит этот запрос на поддержку |
Мультимодальная обработка
Gemini API поддерживает обработку ввода и вывода нескольких модальностей:
Поддерживаемые модальные окна ввода:
googleSearchDynamicRetrievalScore: обычный текстgoogleSearchDynamicRetrievalScore: изображения (JPEG, PNG, WebP, HEIC, HEIF)googleSearchDynamicRetrievalScore: аудио (WAV, MP3, AIFF, AAC, OGG, FLAC)googleSearchDynamicRetrievalScore: видео (MP4, MPEG, MOV, AVI, FLV, MPG, WEBM, WMV, 3GPP)googleSearchDynamicRetrievalScore: Документация (PDF)
Свойства объекта ModalityTokenCount:
| Недвижимость | Тип | Описание |
|---|---|---|
modality | Перечисление | Модальное окно, связанное с этим номером токена |
modality | Целое число | Количество жетонов |
Значение перечисления MediaResolution:
modality: низкое разрешение (64 токена)modality: среднее разрешение (256 токенов)modality: Высокое разрешение (256 жетонов для рефрейминга масштабирования)
Функция мышления
Свойства объекта ThinkingConfig:
| Недвижимость | Тип | Описание |
|---|---|---|
modality | Логическое значение | Включать ли в ответ размышления |
modality | Целое число | Количество токенов идей, которые должна сгенерировать модель |
Генерация речи
Свойства объекта SpeechConfig:
| Недвижимость | Тип | Описание |
|---|---|---|
modality | Объект | Конфигурация одного звукового выхода |
modality | Объект | Конфигурация системы с несколькими динамиками |
modality | Строка | Код языка, используемый для синтеза речи |
Свойства объекта VoiceConfig:
| Недвижимость | Тип | Описание |
|---|---|---|
modality | Объект | Конфигурация встроенного голоса для использования |
Свойства объекта PrebuiltVoiceConfig:
| Недвижимость | Тип | Описание |
|---|---|---|
modality | Строка | Имя предустановленного голоса, который будет использоваться |
| Свойства объекта MultiSpeakerVoiceConfig: |
| Недвижимость | Тип | Описание |
|---|---|---|
speakerVoiceConfigs | Массив | Все включенные голоса динамиков |
Свойства объекта SpeakerVoiceConfig:
| Недвижимость | Тип | Описание |
|---|---|---|
speakerVoiceConfigs | Строка | Имя говорящего |
speakerVoiceConfigs | Объект | Настройка используемого голоса |
Поддерживаемые коды языков:
speakerVoiceConfigs: китайский (упрощенный)speakerVoiceConfigs: английский (США)speakerVoiceConfigs: японскийspeakerVoiceConfigs: корейскийspeakerVoiceConfigs: французскийspeakerVoiceConfigs: немецкийspeakerVoiceConfigs: испанскийspeakerVoiceConfigs: португальский (Бразилия)speakerVoiceConfigs: хиндиspeakerVoiceConfigs: арабскийspeakerVoiceConfigs: итальянскийspeakerVoiceConfigs: турецкийspeakerVoiceConfigs: вьетнамскийspeakerVoiceConfigs: ТайскийspeakerVoiceConfigs: РусскийspeakerVoiceConfigs: польскийspeakerVoiceConfigs: голландский
Результаты журналов проб
Свойства объекта LogprobsResult:
| Недвижимость | Тип | Описание |
|---|---|---|
speakerVoiceConfigs | Массив | Длина равна общему количеству шагов декодирования |
speakerVoiceConfigs | Массив | Длина равна общему количеству шагов декодирования, выбранный кандидат не обязательно находится в topCandidates |
Свойства объекта TopCandidates:
| Недвижимость | Тип | Описание |
|---|---|---|
candidates | Массив | Кандидаты отсортированы в порядке убывания логарифмической вероятности |
Свойства объекта-кандидата (Logprobs):
| Недвижимость | Тип | Описание |
|---|---|---|
candidates | Строка | Строковое значение токена кандидата |
candidates | Целое число | Значение идентификатора токена кандидата |
candidates | Номер | Логарифм вероятности кандидата |
Функция поиска URL-адресов
Свойства объекта UrlRetrivalMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
candidates | Массив | Список ситуаций с получением URL-адресов |
Свойства объекта UrlRetrivalContext:
| Недвижимость | Тип | Описание |
|---|---|---|
candidates | Строка | URL-адрес, полученный инструментом |
Свойства объекта UrlContextMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
candidates | Массив | Список контекстов URL |
Свойства объекта UrlMetadata:
| Недвижимость | Тип | Описание |
|---|---|---|
candidates | Строка | URL-адрес, полученный инструментом |
candidates | Перечисление | Статус получения URL |
Значение перечисления UrlRetrivalStatus:
candidates: URL-адрес получен успешно.candidates: не удалось получить URL-адрес из-за ошибки.
Полная категория безопасности
Полное перечисление HarmCategory:
candidates: Категория не указана.HARM_CATEGORY_DEROGATORY: PaLM - Негативные или вредные комментарии об личности и/или защищенных свойствах.HARM_CATEGORY_DEROGATORY: PaLM - Грубый, неуважительный или оскорбительный контент.HARM_CATEGORY_DEROGATORY: PaLM - описывает сцены, изображающие насилие против отдельного человека или группы людей.HARM_CATEGORY_DEROGATORY: PaLM - Содержит ссылки на сексуальные действия или другой непристойный контент.HARM_CATEGORY_DEROGATORY: PaLM - Пропаганда непроверенных медицинских советов.HARM_CATEGORY_DEROGATORY: PaLM - Опасный контент пропагандирует, пропагандирует или поощряет вредное поведение.HARM_CATEGORY_DEROGATORY: Близнецы - Контент с оскорблениямиHARM_CATEGORY_DEROGATORY: Близнецы – разжигание ненависти и контентHARM_CATEGORY_DEROGATORY: Близнецы - Контент сексуального характераHARM_CATEGORY_DEROGATORY: Близнецы – Опасный контентHARM_CATEGORY_DEROGATORY: Gemini - Контент, который может быть использован для подрыва неприкосновенности граждан.
Полное перечисление HarmProbability:
HARM_CATEGORY_DEROGATORY: вероятность не указанаHARM_CATEGORY_DEROGATORY: вероятность того, что контент небезопасен, незначительна.HARM_CATEGORY_DEROGATORY: контент с меньшей вероятностью будет небезопасным.HARM_CATEGORY_DEROGATORY: существует средняя вероятность того, что контент небезопасен.HARM_CATEGORY_DEROGATORY: существует высокая вероятность того, что контент небезопасен.
Полное значение модальности:
HARM_CATEGORY_DEROGATORY: модальное окно не указано.HARM_CATEGORY_DEROGATORY: обычный текстHARM_CATEGORY_DEROGATORY: ИзображениеHARM_CATEGORY_DEROGATORY: ВидеоHARM_CATEGORY_DEROGATORY: АудиоHARM_CATEGORY_DEROGATORY: документ, например PDF.
Полное значение перечисления MediaResolution:
HARM_CATEGORY_DEROGATORY: разрешение носителя не установлено.HARM_CATEGORY_DEROGATORY: разрешение мультимедиа установлено на низкое (64 токена).HARM_CATEGORY_DEROGATORY: разрешение мультимедиа установлено на среднее (256 токенов).HARM_CATEGORY_DEROGATORY: высокое разрешение мультимедиа (используйте 256 токенов для изменения масштаба)
Полное значение перечисления UrlRetrivalStatus:
HARM_CATEGORY_DEROGATORY: значение по умолчанию, это значение не используется.HARM_CATEGORY_DEROGATORY: URL-адрес получен успешно.HARM_CATEGORY_DEROGATORY: не удалось получить URL-адрес из-за ошибки.
🔍 Обработка ошибок
Распространенные коды ошибок
| Код ошибки | Описание |
|---|---|
HARM_CATEGORY_DEROGATORY | Неправильный формат запроса или неверные параметры |
401 | Неверный или отсутствующий ключ API |
401 | Недостаточно разрешений или ограничений квот |
401 | Частота запросов слишком высока |
401 | Внутренняя ошибка сервера |
Подробное описание кода ошибки
| Код ошибки | Статус | Описание | Решение |
|---|---|---|---|
401 | INVALID_ARGUMENT | Параметр запроса недействителен или имеет неверный формат | Проверьте формат параметров запроса и обязательные поля |
401 | INVALID_ARGUMENT | Запрошенные предварительные условия не выполнены | Убедитесь, что предварительные условия для вызова API выполнены |
401 | INVALID_ARGUMENT | Ключ API недействителен, отсутствует или срок его действия истек | Проверка действительности и формата ключа API |
401 | INVALID_ARGUMENT | Недостаточно разрешений или квота исчерпана | Проверьте разрешения ключа API или обновите квоту |
401 | INVALID_ARGUMENT | Указанная модель или ресурс не существует | Проверьте имя модели и путь к ресурсу |
401 | INVALID_ARGUMENT | Тело запроса слишком велико | Уменьшите размер входного содержимого или обработайте его пакетно |
401 | INVALID_ARGUMENT | Частота запросов превышает лимит или квота недостаточна | Уменьшите частоту запросов или дождитесь сброса квоты |
401 | INVALID_ARGUMENT | Внутренняя ошибка сервера | Повторите запрос, если он не исчезнет, обратитесь в службу поддержки |
401 | INVALID_ARGUMENT | Услуга временно недоступна | Пожалуйста, подождите некоторое время и повторите попытку |
401 | INVALID_ARGUMENT | Запросить тайм-аут | Уменьшите размер ввода или повторите запрос |
Пример ответа об ошибке
{
"error": {
"code": 400,
"message": "Invalid argument: contents",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "contents",
"description": "contents is required"
}
]
}
]
}
}