88API88API
AI-приложенияAPIПомощь и поддержка

Формат разговора 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Внутренняя ошибка сервера

Подробное описание кода ошибки

Код ошибкиСтатусОписаниеРешение
401INVALID_ARGUMENTПараметр запроса недействителен или имеет неверный форматПроверьте формат параметров запроса и обязательные поля
401INVALID_ARGUMENTЗапрошенные предварительные условия не выполненыУбедитесь, что предварительные условия для вызова API выполнены
401INVALID_ARGUMENTКлюч API недействителен, отсутствует или срок его действия истекПроверка действительности и формата ключа API
401INVALID_ARGUMENTНедостаточно разрешений или квота исчерпанаПроверьте разрешения ключа API или обновите квоту
401INVALID_ARGUMENTУказанная модель или ресурс не существуетПроверьте имя модели и путь к ресурсу
401INVALID_ARGUMENTТело запроса слишком великоУменьшите размер входного содержимого или обработайте его пакетно
401INVALID_ARGUMENTЧастота запросов превышает лимит или квота недостаточнаУменьшите частоту запросов или дождитесь сброса квоты
401INVALID_ARGUMENTВнутренняя ошибка сервераПовторите запрос, если он не исчезнет, ​​обратитесь в службу поддержки
401INVALID_ARGUMENTУслуга временно недоступнаПожалуйста, подождите некоторое время и повторите попытку
401INVALID_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"
          }
        ]
      }
    ]
  }
}

Содержание

📝 Введение
💡 Пример запроса
Базовый текстовый разговор ✅
Диалог анализа изображения ✅
Вызов функции ✅
Ответ схемы JSON ✅
Обработка звука 🟡
Обработка PDF 🟡
Разговор в чате ✅
Ответ в потоковом режиме ✅
Выполнение кода ✅
Генерация конфигурации ✅
Настройки безопасности ✅
Системные команды ✅
📮 Запрос
Конечная точка
Генерация контента
Потоковая передача сгенерированного контента
Метод аутентификации
Параметры пути
$API_KEY
Параметры тела запроса
$API_KEY
mimeType
name
mode
mode
generationConfig
OUTCOME_OK
📥 Ответ
ГенерироватьКонтентОтвет
OUTCOME_OK
STOP
STOP
cachedContentTokenCount
cachedContentTokenCount
Полный пример ответа
🔧 Расширенные функции
Рейтинг безопасности
Справочные метаданные
Выполнение кода
Функция заземления (Заземление)
Мультимодальная обработка
Функция мышления
Генерация речи
Результаты журналов проб
Функция поиска URL-адресов
Полная категория безопасности
🔍 Обработка ошибок
Распространенные коды ошибок
Подробное описание кода ошибки
Пример ответа об ошибке