Если приложению нужны определённые поля, одного JSON mode недостаточно. Он отвечает за корректный JSON, но не за вашу схему. Structured Outputs ограничивает структуру результата заданной JSON Schema, схемой полей и их типов.
Для поддерживаемого сценария OpenAI рекомендует именно его: официальное руководство.
Как задать поля и типы
Опишите необходимые поля, их типы и допустимые значения. В Responses API схема задаётся через text.format с type: "json_schema" и strict: true. В Chat Completions используется response_format. Не переносите название параметра из чужого примера без проверки API.
У Structured Outputs есть поддерживаемое подмножество JSON Schema. Проверьте ограничения вашей схемы по руководству, особенно если она автоматически собрана библиотекой. Ошибка запроса из-за неподдерживаемой конструкции требует исправления схемы, а не ещё десяти идентичных попыток.
Как обработать результат, отказ и обрыв
- Завершённый результат: разберите объект и проверьте содержательные правила приложения, а не только типы полей.
- Отказ модели: обработайте refusal, признак отказа, отдельной веткой, а не пытайтесь разобрать объяснение отказа как заказ или карточку товара.
- Незавершённая генерация: проверьте статус ответа и причину остановки, например достижение лимита токенов. Не сохраняйте обрезанный объект как готовую запись.
Отказ может не соответствовать пользовательской схеме. OpenAI показывает отдельную обработку такого ответа в практическом руководстве Structured Outputs. Поэтому корректная схема не отменяет обработчик исключительных исходов.
Смысловая проверка нужна отдельно: число может иметь верный тип, но неверное значение; строка с названием компании не подтверждает существование компании.
Перед записью в базу сопоставьте результат с исходным документом и допустимыми действиями приложения.
Что делать, если доступен только JSON mode
Явно потребуйте JSON в инструкции и проверяйте полученный объект. Для повторов задайте небольшой предел и сохраняйте причину ошибки.
Не дописывайте скобку за модель: синтаксис оборванного ответа можно восстановить, но пропущенные данные от этого не появятся.
Проверено 10 ноября 2026 года. Собственные замеры надёжности не проводились.
Последнее редактирование: