Structured Outputs или JSON mode: как получать данные и не ломать обработчик на отказе

cybercobra

Administrator
Команда форума
Регистрация
6 Авг 2025
Сообщения
912
Реакции
1
Баллы
777
Веб-сайт
cybercobra.ru
structured-outputs-json-mode-oshibki.jpg


Если приложению нужны определённые поля, одного 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 года. Собственные замеры надёжности не проводились.
 
Последнее редактирование:
Назад
Сверху Снизу

Экосистема проектов TeleCobra

CyberCobra.ru — форум TeleCobra.com — софт для Telegram TeleCobra.ru — экосистема CyberMindBot — нейрокомментинг Spellbook Academy — AI обучение