ИИНовость

Как получать от GigaChat API JSON по заданной схеме

Параметр response_format позволяет заранее описать поля и типы ответа. Показываем, где разместить схему в API v1 и v2 и почему нужны required и strict.

Редакция life2 мин чтения
Обсудить
•••
Иллюстрация к материалу «Как получать от GigaChat API JSON по заданной схеме»
Редакционная иллюстрация life

GigaChat API умеет возвращать не свободный текст, а JSON по заранее заданной схеме. Это пригодится, когда из писем, анкет или документов нужно стабильно получать одинаковые поля для таблицы, базы или следующего шага автоматизации.

Инструкция основана на официальной документации, обновлённой 20 июля 2026 года и проверенной 23 октября. Редакция не запускала приведённые запросы самостоятельно.

  1. Сначала перечислите нужные поля и их типы в JSON Schema. Например, для события это могут быть строковые поля date и event. Чем точнее описания полей, тем понятнее модели ожидаемый результат.
  2. Укажите response_format.type со значением json_schema и передайте схему в response_format.schema.
  3. Добавьте действительно обязательные поля в массив required. Если его не задать, по документации модель может вернуть произвольный JSON-объект.
  4. Включите strict: true, если ответ должен соответствовать схеме. Без строгого режима модель может добавить поля, которых в схеме нет.
  5. Учтите различие версий API. В POST /v1/chat/completions response_format передаётся на верхнем уровне запроса. В POST /v2/chat/completions тот же блок находится внутри model_options.
  6. После ответа извлеките JSON из текстового содержимого и проверьте его своим валидатором. Пользователи Python SDK могут описать поля моделью Pydantic и применить chat_parse(): метод возвращает разобранные данные вместе с исходным объектом ответа.

Схема задаёт форму результата, но не подтверждает истинность значений. Даты, суммы и имена всё равно нужно сверять с исходным документом, а ошибки разбора — обрабатывать отдельно. Не передавайте в запрос персональные или внутренние данные, если правила вашей организации и условия сервиса этого не допускают.

Для потоковой выдачи структурированный ответ тоже доступен, однако события v1 и v2 имеют разный формат. Если поток не нужен, обычный запрос проще проверить целиком до записи результата в рабочую систему.

Обсудить
•••

Давайте обсудим

Пока никто не ответил. Начните обсуждение.