ym88659208ym87991671
Работа с OpenAI-запросами | Документация для разработчиков

Работа с OpenAI-запросами

Обновлено 30 октября 2026

Вы можете передавать в open source модели и GigaChat запросы в формате OpenAI. Такая возможность помогает проверять и адаптировать работу различных решений, использующих формат, к работе с моделями GigaChat.

Для работы с OpenAI-запросами используйте метод POST /openai/v1/chat/completions. Метод возвращает ответ в формате OpenAI chat.completion.

Описание формата запросов и ответов — в официальной документации OpenAI . Официальный формат ответа может отличаться от реализации в GigaChat API B2Bank.

Для работы с методом нужно получить доступ .

В этом разделе вы найдете примеры запросов, демонстрирующих основные сценарии работы с моделями. Поддерживаемые поля и ограничения метода — в разделе Ограничения метода.

Генерация текста

Наряду с обычной поддерживается генерация в режиме потоковой передачи токенов.

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

curl -X POST 'https://gigachat-ift.sberdevices.delta.sbrf.ru/openai/v1/chat/completions' \
--cert <сертификат>.pem \
--key <ключ>.key \
-H 'Content-Type: application/json' \
-d '{
"model": "GigaChat-3-Ultra",
"messages": [
{"role": "system", "content": "Ты — краткий помощник."},
{"role": "user", "content": "Объясни, что такое OAuth, двумя предложениями."}
],
"stream": false,
"max_completion_tokens": 256,
"top_p": 0.9
}'
Пример ответа
{
"id": "ce6f7200-efe9-4e09-ac2c-718b446568a0",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "OAuth — это открытый стандарт авторизации, который позволяет одному приложению получить ограниченный доступ к данным пользователя на другом сервисе без передачи его пароля. Вместо учетных данных пользователь предоставляет приложению специальный временный токен, который подтверждает его согласие на доступ к определенной информации."
}
}
],
"created": 1793288585,
"model": "GigaChat-3-Ultra:32.9.16.9",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 32,
"completion_tokens": 56,
"total_tokens": 88
}
}

Работа с файлами

Файл можно передать двумя способами: содержимым запроса в base64 или идентификатором файла из хранилища. Для загрузки файла в хранилище используйте метод POST /files. Изображения можно передавать теми же способами, а также в поле content.image_url.url.

Содержимое файла, закодированное в base64, передается в поле content.file.file_data без префикса data:<mime>;base64,, имя файла — в поле content.file.filename.

Если передать запрос без filename, метод вернет ошибку 400: converting messages: converting content blocks: file should contain filename.

curl -X POST 'https://gigachat-ift.sberdevices.delta.sbrf.ru/openai/v1/chat/completions' \
--cert <сертификат>.pem \
--key <ключ>.key \
-H 'Content-Type: application/json' \
-d '{
"model": "GigaChat-3-Ultra",
"messages": [
{"role": "user", "content": [
{"type": "text", "text": "Что на картинке?"},
{"type": "file", "file": {"file_data": "<содержимое_в_base64>", "filename": "image.jpg"}}
]}
],
"stream": false
}'

Работа с функциями

С помощью метода можно генерировать аргументы для собственных функций или использовать их в контексте истории сообщений. Параллельный вызов функций не поддерживается, для этого используйте POST /v2/chat/completions.

Генерация параметров для собственных функций

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

curl -X POST 'https://gigachat-ift.sberdevices.delta.sbrf.ru/openai/v1/chat/completions' \
--cert <сертификат>.pem \
--key <ключ>.key \
-H 'Content-Type: application/json' \
-d '{
"model": "GigaChat-3-Ultra",
"messages": [
{"role": "user", "content": "Какая погода в Москве?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду в городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Название города"}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto",
"stream": false
}'
Пример ответа
{
"id": "04c2269c-e0d0-439f-8732-79952c7d9477",
"choices": [
{
"index": 0,
"finish_reason": "tool_calls",
"message": {
"role": "assistant",
"content": null,
"tool_state_id": "01a187f5-c02c-7659-8715-4077abbc1397",
"tool_calls": [
{
"index": 0,
"type": "function",
"id": "d5369c9f-6f30-4def-bf5f-9e718c539ede",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Москва\"}"
}
}
]
}
}
],
"created": 1793282392,
"model": "GigaChat-3-Ultra:32.9.16.9",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 63,
"completion_tokens": 39,
"total_tokens": 102
}
}

Вызов встроенных функций

Встроенные функции, например, создание изображений, можно вызывать в отдельном сообщении или в контексте истории сообщений. Поддерживаются встроенные функции, которые можно использовать в запросе POST /v2/chat/completions.

curl -X POST 'https://gigachat-ift.sberdevices.delta.sbrf.ru/openai/v1/chat/completions' \
--cert <сертификат>.pem \
--key <ключ>.key \
-H 'Content-Type: application/json' \
-d '{
"model": "GigaChat-3-Ultra",
"stream": false,
"messages": [
{ "role": "user", "content": "Нарисуй красного дракона на скале на закате" }
],
"tools": [
{ "type": "image_generate" }
],
"tool_choice": "auto"
}'
Пример ответа
{
"id": "391e5295-5ec7-44fd-be25-67a4cfcee521",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"type": "text",
"text": "<img src=\"2fd91f96-54c4-4fe6-8001-c11678fbd119\" fuse=\"true\"/>"
},
{
"type": "text",
"text": "вот такой красный дракон на скале на закате у меня получился."
}
],
"tool_state_id": "01a18854-90bb-7c61-a261-5492919eea15"
}
}
],
"created": 1793288605,
"model": "GigaChat-3-Ultra:32.9.16.9",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 1862,
"completion_tokens": 65,
"total_tokens": 1927
}
}

Сгенерированное изображение возвращается тегом <img src="<идентификатор_файла>" fuse="true"/> в первой части content. Чтобы скачать файл, используйте метод GET /files/{file_id}/content.

Структурированный вывод

Чтобы получить ответ по JSON-схеме, передайте схему в поле response_format.json_schema. Модель вернет в content строку с JSON, которая соответствует схеме.

Метод поддерживает только формат OpenAI, в котором схема передается в поле response_format.json_schema. При описании схемы в формате GigaChat API вернется ошибка 400: Empty schema with json format type is not supported.

curl -X POST 'https://gigachat-ift.sberdevices.delta.sbrf.ru/openai/v1/chat/completions' \
--cert <сертификат>.pem \
--key <ключ>.key \
-H 'Content-Type: application/json' \
-d '{
"model": "GigaChat-3-Ultra",
"messages": [
{"role": "system", "content": "Ты извлекаешь данные из текста и отвечаешь только JSON."},
{"role": "user", "content": "Заполни поля по тексту: Анна Смирнова, 29 лет, отдел продаж."}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "employee",
"strict": true,
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
"department": {"type": "string"}
},
"required": ["name", "age", "department"],
"additionalProperties": false
}
}
},
"stream": false
}'
Пример ответа
{
"id": "fb43235e-ff96-42cf-b290-06705a10fcc8",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "{\n \"age\": 29,\n \"department\": \"отдел продаж\",\n \"name\": \"Анна Смирнова\"\n}",
"tool_state_id": "01a18854-d1a8-76f8-ab59-e751f6ad8f49"
}
}
],
"created": 1793288622,
"model": "GigaChat-3-Ultra:32.9.16.9",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 1036,
"completion_tokens": 35,
"total_tokens": 1071
}
}

Режим рассуждений

Режим рассуждений запускается автоматически при обращении к модели с поддержкой рассуждений, например, GigaChat-3.5-Reasoning. Поле reasoning_effort глубину рассуждений не меняет: работает только значение medium.

Ответ на рассуждения соответствует формату OpenAI.

При ограничении длины ответа с помощью max_completion_tokens токены расходуются сначала на рассуждения. Если токенов не хватит, finish_reason будет равен length, а content — null.

curl -X POST 'https://gigachat-ift.sberdevices.delta.sbrf.ru/openai/v1/chat/completions' \
--cert <сертификат>.pem \
--key <ключ>.key \
-H 'Content-Type: application/json' \
-d '{
"model": "GigaChat-3.5-Reasoning",
"messages": [
{"role": "user", "content": "Придумай одно короткое название для кофейни рядом с вокзалом."}
],
"reasoning_effort": "medium",
"max_completion_tokens": 8192,
"stream": false
}'
Пример ответа

Длина полей content и reasoning в примере сокращена.

{
"id": "3984ef58-74b3-4075-b876-08c073131bcb",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "**«Перрон»**\n\nКоротко (6 букв), сразу рисует в голове вокзал, стук чемоданов, объявление посадки и кофе в бумажном стаканчике перед отправлением. Легко читается на вывеске, не требует перевода, дает безграничный простор для меню: «Отправление» — эспрессо, «Прибытие» — капучино, «По расписанию» — фильтр-кофе. ...",
"reasoning": "Мы должны придумать одно короткое название для кофейни рядом с вокзалом. Учитываем, что GigaChat — ИИ-ассистент Сбера, отвечает корректно, полезно, по делу, понимает русский язык и российский контекст. Нужно предложить одно короткое название. Возможно, с учетом привязки к вокзалу (путешествия, поезд..."
}
}
],
"created": 1793365270,
"model": "GigaChat-3.5-Reasoning:03.005.026.08",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 23,
"completion_tokens": 2325,
"total_tokens": 2348
}
}
Заметили ошибку?
Выделите текст и нажмите
Ctrl
+
Enter
, чтобы сообщить нам об ошибке