Structured Outputs без иллюзий: как OpenAI, Gemini и xAI соблюдают JSON»-схемы
Mentalitet 29 минут назад Structured Outputs без иллюзий: как OpenAI, Gemini и xAI соблюдают JSON»-схемы Средний 8 мин 625 Искусственный интеллект Structured Outputs, или structured decoding, это способ заставить LLM...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Mentalitet 29 минут назад Structured Outputs без иллюзий: как OpenAI, Gemini и xAI соблюдают JSON»-схемы Средний 8 мин 625 Искусственный интеллект Structured Outputs, или structured decoding, это способ заставить LLM возвращать ответ в заранее заданном формате: валидный JSON, соответствующий JSON Schema. На уровне генерации это обычно означает constrained decoding: на каждом шаге модели запрещаются токены, которые привели бы к нарушению схемы. Хорошее техническое объяснение есть в статье vLLM: .
Для продакшн-систем это важно, потому что ответ модели часто становится входом для следующего шага: API-вызова, записи в базу, бизнес-правила или другого LLM-запроса. Промпт в стиле «ответь строго валидным JSON» помогает, но не даёт инженерной гарантии. Модель может поменять имя ключа, добавить пояснение перед JSON или выбрать значение вне допустимого enum.
Технические детали
Structured Outputs должен решать именно эту задачу: провайдер принимает схему и ограничивает вывод так, чтобы ответ соответствовал формату. К Structured Outputs можно относиться по-разному. Жёсткая схема иногда ухудшает качество ответа: модель может хуже рассуждать или зациклиться в длинном строковом поле до лимита токенов.
Но в корпоративных системах это всё равно востребованная функция: формат ответа часто важен не меньше, чем сам текст ответа. С деградацией качества приходится работать отдельно — через evals, подбор схемы, разбиение задачи на шаги и проверку поведения конкретной модели. Важно: Structured Outputs не снимает все проверки на стороне приложения.
В документации OpenAI отдельно описаны случаи, когда ответ может не быть обычным успешным JSON по вашей схеме: safety refusal, incomplete response / truncation и другие edge cases. Их всё равно нужно обрабатывать в коде, а результат валидировать после получения. На практике остаётся вопрос: какие ограничения схемы провайдер действительно применяет, а какие только принимает в JSON Schema.
Отраслевые последствия
Это особенно важно для , где структура Pydantic-модели используется не только для парсинга, но и для управления ходом ответа. Чтобы проверить это, мы прошлись по трём провайдерам (OpenAI, Gemini, xAI) с конфликтными промптами: просили модель нарушить конкретное ограничение и смотрели, сможет ли провайдер удержать ответ в рамках схемы. Как тестировалиИдея проверки простая: если провайдер действительно применяет ограничение из схемы, модель не сможет вернуть значение, которое это ограничение нарушает.
Даже если в промпте прямо попросить её так сделать. Для каждого ограничения мы делали минимальную JSON Schema и отдельный промпт, который просит вернуть некорректное значение.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





