Работа с OpenAI-запросами
Вы можете передавать в 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
}
}
В последнем фрагменте приходят "finish_reason":"stop" и usage.
Сообщение data: [DONE] в потоке не передается.
curl -N -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": "Напиши короткий стих про прокси-сервер."}
],
"stream": true
}'
data: {"id":"f7a6d5d2-b790-42f5-8c66-fe66602c051c","choices":[{"index":0,"delta":{"role":"assistant","content":"Я"}}],"created":1793283567,"model":"GigaChat-3-Ultra:32.9.16.9","object":"chat.completion.chunk","system_fingerprint":"","usage":null}
data: {"id":"f7a6d5d2-b790-42f5-8c66-fe66602c051c","choices":[{"index":0,"delta":{"content":" — невидимый посредник, ваш доверенный агент.\nСкрываю "}}],"created":1793283567,"model":"GigaChat-3-Ultra:32.9.16.9","object":"chat.completion.chunk","system_fingerprint":"","usage":null}
data: {"id":"f7a6d5d2-b790-42f5-8c66-fe66602c051c","choices":[{"index":0,"delta":{"content":"IP-адрес я, храня любой момент.\nЯ — щит и"}}],"created":1793283567,"model":"GigaChat-3-Ultra:32.9.16.9","object":"chat.completion.chunk","system_fingerprint":"","usage":null}
data: {"id":"f7a6d5d2-b790-42f5-8c66-fe66602c051c","choices":[{"index":0,"delta":{"content":" завеса, ваш цифровой посредник."}}],"created":1793283567,"model":"GigaChat-3-Ultra:32.9.16.9","object":"chat.completion.chunk","system_fingerprint":"","usage":null}
data: {"id":"f7a6d5d2-b790-42f5-8c66-fe66602c051c","choices":[{"index":0,"finish_reason":"stop","delta":{"tool_state_id":"01a18807-b020-7b8a-9a5a-946ced2aec9c"}}],"created":1793283567,"model":"GigaChat-3-Ultra:32.9.16.9","object":"chat.completion.chunk","system_fingerprint":"","usage":{"prompt_tokens":1148,"completion_tokens":38,"total_tokens":1186}}
Работа с файлами
Файл можно передать двумя способами: содержимым запроса в 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
}'
Идентификатор загруженного файла передается в поле content.file.file_id.
Заголовок X-Client-ID должен совпадать с тем, который использовался при загрузке файла.
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_id": "<идентификатор_из_хранилища>"}}
]}
],
"stream": false
}'
{
"id": "4b337bfc-beef-4ecc-91df-77de9f75acc5",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "На фотографии изображен милый котенок с большими глазами, который смотрит прямо в камеру. У него пушистая шерсть серо-белого окраса и розовый носик. Котенок сидит на темной ткани или поверхности."
}
}
],
"created": 1793288627,
"model": "GigaChat-3-Ultra:32.4.30.6",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 1915,
"prompt_tokens_details": {
"cached_tokens": 10
},
"completion_tokens": 48,
"total_tokens": 1963
}
}
Отдельно для обработки изображений есть поле content.image_url.url.
В него передается веб-адрес изображения или data URI: MIME-тип файла и его содержимое в base64.
Для передачи веб-адреса вам должна быть доступна встроенная функция web_search.
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,
"max_completion_tokens": 512,
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Что изображено на картинке?" },
{ "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,<изображение_в_base64>" } }
]
}
]
}'
{
"id": "c1fb66f3-2a59-48c9-bbad-ee1fda499141",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "На картинке изображен милый котенок с большими глазами, который смотрит прямо в камеру. У него светлая шерсть и розовый носик. Котенок выглядит немного удивленным или задумчивым."
}
}
],
"created": 1793288624,
"model": "GigaChat-3-Ultra:32.4.30.6",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 1904,
"prompt_tokens_details": {
"cached_tokens": 11
},
"completion_tokens": 43,
"total_tokens": 1947
}
}
Работа с функциями
С помощью метода можно генерировать аргументы для собственных функций или использовать их в контексте истории сообщений. Параллельный вызов функций не поддерживается, для этого используйте 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
}
}
Передайте описание функции вместе с запросом:
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
}'
В ответ модель вернет параметры для вызова функции и идентификатор состояния функции в поле message.tool_state_id, которого нет в формате OpenAI:
{
"id": "a73b9d03-c334-4288-8816-2fe5f8bbf4fc",
"choices": [
{
"index": 0,
"finish_reason": "tool_calls",
"message": {
"role": "assistant",
"content": null,
"tool_state_id": "01a18854-e99e-7ada-b79e-6cac1798b97a",
"tool_calls": [
{
"index": 0,
"type": "function",
"id": "70087c74-028b-4ad8-8696-607de39a9b3a",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Москва\"}"
}
}
]
}
}
],
"created": 1793288628,
"model": "GigaChat-3-Ultra:32.9.16.9",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 63,
"completion_tokens": 39,
"total_tokens": 102
}
}
Передайте этот идентификатор и результат работы функции вместе с предыдущими сообщениями:
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": "Какая погода в Москве?"},
{
"role": "assistant",
"content": null,
"tool_state_id": "01a18854-e99e-7ada-b79e-6cac1798b97a",
"tool_calls": [
{
"index": 0,
"type": "function",
"id": "70087c74-028b-4ad8-8696-607de39a9b3a",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Москва\"}"
}
}
]
},
{"role": "tool", "tool_call_id": "70087c74-028b-4ad8-8696-607de39a9b3a", "content": "+18, ясно, ветер 3 м/с"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду в городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Название города"}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto",
"stream": false
}'
Модель сгенерирует ответ на основе полученных сообщений:
{
"id": "e70266c1-de0d-4fe3-9475-3f2b3a7f74f3",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "В Москве сейчас +18, ясно, ветер 3 м/с.",
"tool_state_id": "01a18854-ed42-75ce-b5c4-449995b1a92e"
}
}
],
"created": 1793288629,
"model": "GigaChat-3-Ultra:32.9.16.9",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"prompt_tokens": 150,
"completion_tokens": 16,
"total_tokens": 166
}
}
Вызов встроенных функций
Встроенные функции, например, с оздание изображений, можно вызывать в отдельном сообщении или в контексте истории сообщений. Поддерживаются встроенные функции, которые можно использовать в запросе 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.
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": "Как нынче погода?" },
{
"role": "assistant",
"tool_state_id": "019f6567-18c9-74f0-8739-5a1793bf5c77",
"content": "Сегодня, 17 июля 2026 года, погода в России сильно различается в зависимости от региона.\n\n- **В Москве и Подмосковье** ожидается ясная или малооблачная погода без осадков. Температура воздуха днем прогреется до +20…+25 °C, а ночью опустится до +8…+14 °C. Ветер будет северным со скоростью 4–11 м/с. [sources=[1, 3, 5]]\n- **В Санкт-Петербурге** прогнозируется переменная облачность и более теплая погода: утром около +14,5 °C, а днем воздух может прогреться до +23…+25 °C. [sources=[4]]\n- **В Кировской области** день будет холоднее и дождливее: ожидаются грозы, сильный северный ветер и температура днем от +17 до +22 °C. [sources=[2]]",
"annotations": [
{
"type": "url_citation",
"url_citation": {
"start_index": 0,
"end_index": 0,
"title": "Погода в Москве 17 июля 2026 года",
"url": "https://vm.ru/news/1343144-sinoptiki-poobeshali-moskvicham-yasnuyu-pogodu-bez-osadkov-17-iyulya"
}
},
{
"type": "url_citation",
"url_citation": {
"start_index": 0,
"end_index": 0,
"title": "Стал известен прогноз погоды в Кировской области на 17 июля 2026 года",
"url": "https://prochepetsk.ru/news/80446"
}
},
{
"type": "url_citation",
"url_citation": {
"start_index": 0,
"end_index": 0,
"title": "Гидрометцентр: 17 июля в Москве до +22 градусов, без осадков — EADaily, 17 июля 2026 — Общество. Новости, Новости России",
"url": "https://eadaily.com/ru/news/2026/07/17/gidrometcentr-17-iyulya-v-moskve-do-22-gradusov-bez-osadkov"
}
},
{
"type": "url_citation",
"url_citation": {
"start_index": 0,
"end_index": 0,
"title": "Прогноз погоды в Петербурге на 17 июля: жара и переменная облачность - 17 июля 2026 | ФОНТАНКА.ру",
"url": "https://www.fontanka.ru/2026/07/17/76538388/"
}
},
{
"type": "url_citation",
"url_citation": {
"start_index": 0,
"end_index": 0,
"title": "Погода в Москве и Подмосковье 17 июля 2026",
"url": "https://www.5-tv.ru/news/5078846/solnecnye-intervaly-isvezij-veter-kakaa-pogoda-zdet-moskvu-17iula-aii/"
}
}
]
},
{ "role": "user", "content": "Так какое число говоришь?" }
],
"tools": [
{ "type": "web_search" }
],
"tool_choice": "auto"
}'
Структурированный вывод
Чтобы получить ответ по 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
}
}