Schema-guided reasoning и structured outputs для LLMs

Автоматический перевод Эта статья была автоматически переведена с оригинальной английской версии.

Используйте structured outputs, когда программе нужны поля с заданной структурой. Добавляйте schema-guided reasoning (SGR), когда программе или ревьюеру также нужны промежуточные записи — например, подтверждение из источника и предлагаемое решение. SGR использует structured output для представления этих шагов; это не отдельная гарантия корректности ответа.

Если потребителю нужны только категория и ID источника, оставьте только эти поля. Добавляйте поля анализа лишь в том случае, если можете объяснить, как их будут проверять или использовать.

Последняя проверка: 2026-09-08.

Что делает каждый слой

СлойЧто он предоставляетЧего он не может установить
Промпт для форматирования JSONИнструкции вернуть JSONЧто ответ соответствует схеме
Выходные данные с ограничениями схемыОтвет, соответствующий поддерживаемой схеме, если генерация успешно завершенаЧто значения истинны
SGR-схемаИменованные промежуточные поля и предлагаемое решениеЧто одно поле корректно выведено из другого
Проверки в приложенииПроверки подтверждения из источника, вычислений и разрешённых действийФакты, которые приложение никогда не проверяет

Описание SGR от Rinat Abdullin использует схемы как чеклист для возвращаемой моделью работы. В self-hosted-развёртывании structured outputs в vLLM могут enforce-ить JSON Schema через бэкенд декодирования, например XGrammar. Одного определения Pydantic-модели в Python недостаточно, чтобы включить constrained decoding на сервере.

Проверьте, какое подмножество схем поддерживает выбранный провайдер, а также статус завершения. Для отказа, усечённого ответа или неудачного запроса нужен отдельный error path. В руководстве по structured outputs в Gemini также обозначено ключевое ограничение: корректная структура JSON не гарантирует корректность значений полей.

Предложение скидки показывает разницу

Предположим, support-инструмент может предложить скидку не более 10%. Минимальный structured reply может содержать discount_percent и customer_message. Если внутреннему ревьюеру нужно подтверждение, SGR-ответ может также содержать policy_source_id и eligibility_evidence.

Эти дополнительные поля дают ревьюеру материал для проверки. Но они не делают предлагаемую скидку 15% допустимой. Даже схема, ограничивающая процент значением 10, не может доказать, что этот клиент соответствует условиям.

Перед использованием предложения код приложения должен загрузить применимую политику и данные клиента, проверить eligibility и вычислить разрешённую сумму. Считайте объяснение модели утверждением, которое нужно проверить. Если следующему шагу модели требуются подтверждённые факты, проверьте их до этого вызова. Порядок полей внутри одного JSON-объекта не создаёт этап проверки.

Когда дополнительные поля оправданы

SGR полезен, когда для точной диагностики ошибки нужен дополнительный контекст. Например, классификатор документов может вернуть фрагмент источника и категорию. Тогда ревьюеры смогут отличить неудачный выбор фрагмента от неверной категории при корректном подтверждении.

SGR менее полезен, когда каждый результат получает длинное объяснение, которое никто не читает и не оценивает. Дополнительный вывод расходует токены, а убедительное объяснение всё равно может быть ложным.

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

Дополнительные материалы

  • Schema-guided reasoning с vLLM объясняет схемы, XGrammar и проверки политик на стороне приложения.
  • Schema-guided agent memory применяет типизированные записи и историю источников к персистентному состоянию.
  • Выбор NER-моделей отделяет буквальные текстовые спаны от экстракции, требующей инференса.