Описание сервисов
На этой странице вы найдете описание сервисов gRPC API GigaChat и примеры ответов.
Получить список моделей
Возвращает массив объектов с данными доступных моделей. Выполняется с пустым телом запроса.
Ответ:
{
"data": [
{
"id": "GigaChat",
"object": "model",
"owned_by": "salutedevices",
"type": "chat"
}
],
"object": "list"
}
data object[]
Название модели. Описание доступных моделей смотрите в разделе Модели GigaChat.
Модели в раннем доступе отмечены постфиксом -preview.
Например, GigaChat-Pro-preview.
Тип сущности в ответе, например, модель.
Владелец модели.
Возможные значения: [chat, aicheck, embedder]
Тип модели. Возможные значения:
chat— модель для генерации;aicheck— модель для проверки, создан ли текст с помощью ИИ;embedder— модель для создания эмбеддингов.
Тип сущности в ответе, например, список.
Получить модель
Возвращает объект с описанием указанной модели.
Парам етры запроса:
Название модели. Описание доступных моделей смотрите в разделе Модели GigaChat.
Модели в раннем доступе отмечены постфиксом -preview.
Например, GigaChat-Pro-preview.
Ответ:
{
"id": "GigaChat",
"object": "model",
"owned_by": "salutedevices",
"type": "chat"
}
Название модели. Описание доступных моделей смотрите в разделе Модели GigaChat.
Модели в раннем доступе отмечены постфиксом -preview.
Например, GigaChat-Pro-preview.
Тип сущности в ответе, например, модель.
Владелец модели.
Возможные значения: [chat, aicheck, embedder]
Тип модели. Возможные значения:
chat— модель для генерации;aicheck— модель для проверки, создан ли текст с помощью ИИ;embedder— модель для создания эмбеддингов.
Получить ответ модели
Возвращает ответ модели с учетом переданных сообщений.
Параметры запроса:
Название модели, котора должна обработать запрос. Описание доступных моделей смотрите в разделе Модели GigaChat.
При обращении к моделям в раннем доступе к названию модели нужно добавлять постфикс -preview.
messages object[]required
Массив с историей сообщений. Для сохранения контекста диалога передавайте несколько сообщений.
В запросе можно передать только один системный промпт (сообщение с ролью system).
Системный промпт должен быть первым сообщением в массиве.
Наличие в массиве нескольких системных промптов или передача системного промпта не в первом сообщении приведет к ошибке с кодом 422 и сообщением Invalid params: system message must be the first message.
Роль автора сообщения:
system— системный промпт, который задает роль модели, например, должна модель отвечать как академик или как школьник;assistant— ответ модели;user— сообщение пользователя;function— сообщение с результатом работы пользовательской функции. Передается обязательно если в истории сообщений есть ответ модели с аргументами для собственной функции (полеfunction_callи идентификаторfunctions_state_id).
Системный промпт, который задает поведение модели.
В массиве messages системный промпт передается в первом сообщении.
Массив может содержать только один системный промпт.
Передавайте текст в кодировке UTF8. Это позволит снизить расход токенов при обработке сообщения.
function_call object
Явно задает режим работы с функциями.
Возможные значения:
- строка
none; - строка
auto; - объект
{"name": "название_функции"}.
Отключение работы с функциями.
Если передать none, модель не будет вызывать встроенные функции или генерировать аргументы для пользовательских функций, а просто сгенерирует ответ в соответствии с полученными сообщениями.
Автоматический режим работы с функциями.
В этом режиме модель, основываясь на тексте сообщений, решает нужно ли использовать одну из встроенных функций или сгенерировать аргументы для пользовательских функций, описанных в массиве functions.
При этом, если массив содержит описание хотя бы одной пользовательской функции, модель сможет вызвать встроенную функцию, только если ее название передано в массиве functions:
{
,,,
"function_call": "auto",
"functions": [
{
"name": "text2image"
},
{
"name": "weather_forecast",
"description": "Возвращает температуру на заданный период",
"parameters": {}
}
]
...
}
Работа с функциями в принудительном режиме.
В поле можно передать как название собственной функции, описание которой содержится в массиве functions, так и название одной из встроенных функций:
{
...
"function_call": {
"name": "weather_forecast"
},
"functions": [
{
"name": "weather_forecast",
...
}
]
...
}
functions object[]nullable
Массив с описанием пользовательских функций.
Название пользовательской функции, для которой будут сгенерированы аргументы.
Название функции должно содержать только латинские буквы. Название функции не должно начинаться с цифры.
Текстовое описание функции.
parameters objectrequired
Валидный JSON-объект с набором пар ключ-значение, которые описывают аргументы функции.
few_shot_examples object[]
Объекты с парами запрос_пользователя-параметры_функции, которые будут служить модели примерами ожидаемого результата.
Запрос пользователя.
params objectrequired
Пример заполнения параметров пользовательской функции.
return_parameters object
JSON-объект с описанием параметров, которые может вернуть ваша функция.
Возможные значения: >= 0 and > 0
Температура выборки регулирует степень случайности ответов модели. Высокое значение делает ответы разнообразными и неожиданными, низкое — предсказуемыми и стабильными. Когда температура меньше 0.001, включается режим строгого контроля, дающий одинаковые ответы. А при температуре больше 2 реакция становится чрезмерно беспорядочной.
Базовое значение температуры зависит от модели, которая генерирует ответ, и меняется вместе с улучшениями модели.
Возможные значения: >= 0 и >= 0 and <= 1
Параметр используется как альтернатива температуре (поле temperature). Задает вероятностную массу токенов, которые должна учитывать модель.
Так, если передать значение 0.1, модель будет учитывать только токены, чья вероятностная масса входит в верхние 10%.
Значение по умолчанию зависит от выбранной модели (поле model) и может изменяться с обновлениями модели.
Значение изменяется в диапазоне от 0 до 1 включительно.
По умолчанию: false
Указывает, что сообщения надо передавать по частям в потоке.
Сообщения передаются по протоколу SSE .
Поток завершается событием data: [DONE].
Подробнее читайте в разделе Потоковая генерация токенов.
Возможные значения: > 0
Максимальное количество токенов, которые будут использованы для создания ответов.
Количество повторений слов:
- Значение 1.0 — нейтральное значение.
- При значении больше 1 модель будет стараться не повторять слова.
Значение по умолчанию зависит от выбранной модели (поле model) и может изменяться с обновлениями модели.
По умолчанию: 0
Параметр потокового режима ("stream": "true").
Задает минимальный интервал в секундах, который проходит между отправкой токенов.
Например, если указать 1, сообщения будут приходить каждую секунду, но размер каждого из них будет больше, так как за секунду накапливается много токенов.
Ответ:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Здравствуйте! К сожалению, я не могу дать точный ответ на этот вопрос, так как это зависит от многих факторов. Однако обычно релиз новых функций и обновлений в GigaChat происходит постепенно и незаметно для пользователей. Реко мендую следить за новостями и обновлениями проекта в официальном сообществе GigaChat или на сайте разработчиков.",
"created": 1625284800,
"name": "text2image",
"functions_state_id": "77d3fb14-457a-46ba-937e-8d856156d003",
"function_call": {
"name": "string",
"arguments": {}
}
},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1678878333,
"model": "GigaChat",
"usage": {
"prompt_tokens": 18,
"completion_tokens": 68,
"total_tokens": 86
},
"object": "chat.completion"
}
choices object[]
Массив ответов модели.
message object
Сгенерированное сообщение.
Возможные значения: [assistant, function_in_progress]
Роль автора сообщения.
Роль function_in_progress используется при работе встроенных функций в режиме потоковой передачи токенов.
Содержимое сообщения, например, результат генерации.
При передаче в режиме потоковой генерации передается частями. В предпосленем сообщении передаеся пустая строка "".
В сообщениях с ролью function_in_progress содержит информацию о том, сколько времени осталось до завершения работы встроенной функции.
Передается в сообщениях с рольюfunction_in_progress. Содержит информацию о том, когда был создан фрагмент сообщения.
Название вызванной встроенной функции.
Передается в сообщениях с рольюfunction_in_progress.
Возможные значения:
text2image- генерация изображения на основе описания;text2model3d— генерация 3D-модели на основе описания.
Идентификатор, который объединяет массив функций, переданных в запросе.
Возвращается в ответе модели (сообщение с "role": "assistant") при вызове встроенных или собственных функций.
Позволяет сохранить контекст вызова функции и повысить качество работы модели.
Для этого нужно передать идентификатор в запросе на генерацию в сообщении с ролью assistant.
Сейчас поле работает только при обращении к моделям в раннем доступе.
function_call object
Данные для вызова собственной функции.
Присутствует в сообщениях с ролью assistant, когда модель вместо обычного ответа генерирует аргументы для вызова функции.
Если поле передается в запросе на генерацию (в сообщении с ролью assistant), то в истории сообщений так же нужно передать результат вызова функции в сообщении с ролью function.
В противном случае вернется ошибка: «Invalid params: every assistant function call must have a result in history».
Название функции, которую нужно вызвать.
Аргументы для вызова функции в формате JSON, обернутые в строку. Модель генерирует эти аргументы в соответствии со схемой, описанной в функции.
Индекс сообщения в массиве, начиная с ноля.
Возможные значения: [stop, length, function_call, blacklist, error]
Причина завершения гипотезы. Возможные значения:
stop— модель закончила формировать гипотезу и вернула полный ответ;length— достигнут лимит токенов в сообщении;function_call— указывает, что при запросе была вызвана встроенная функция или сгенерированы аргументы для пользовательской функции;blacklist— запрос попадает под тематические ограничения.error— ответ модели содержит невалидные аргументы пользовательской функции.
При работе в режиме потоковой генерации передается в предпоследнем событии со значением.
Дата и время создания ответа в формате unix timestamp.
Название и версия модели, которая обработала запрос.
usage object
Данные об использовании модели. При запуске потоковой генерации, объект приходит в предпоследнем событии.
Количество токенов во входящем сообщении (роль user).
Количество токенов, сгенерированных моделью (роль assistant).
Количество ранее закэшированных токенов, которые были использованы при обработке запроса.
Кэшированные токены вычитаются из общего числа оплачиваемых токенов (поле total_tokens).
Модели GigaChat в течение некоторого времени сохраняют контекст запроса (историю сообщений массива messages, описание функций) с помощью кэширования токенов. Это позволяет повысить скорость ответа моделей и снизить стоимость работы с GigaChat API.
Для повышения вероятности использования сохраненных токенов используйте кэширование запросов.
Общее число токенов, подлежащих тарификации, после вычитания кэшированных токенов (поле precached_prompt_tokens).
Название вызываемого метода.