Если попросить модель назвать любое дерево, в обычном чате она выберет из десятков вариантов. Стоит добавить "ответь в формате JSON" — и модель резко чаще выбирает один и тот же вариант, будто у всех моделей включился один и тот же шаблон мышления.
Причина проста: когда модель отвечает в JSON или XML, она переключается в "режим для программ" — режим, в котором её натренировали быть предсказуемой и однотипной для тулов и API. В обычном чате модель может ответить "секвойя" или "баобаб", а в JSON — почти всегда "дуб". Разброс ответов падает почти на треть, а число уникальных вариантов сокращается почти вдвое.
Метод исследования простой: у модели просят один и тот же ответ два раза — сначала прозой, потом в JSON. Разница показывает, что формат JSON не просто меняет обёртку ответа — он реально меняет, ЧТО модель выберет как ответ, делая её более "усреднённой" и предсказуемой, чем она есть в обычном диалоге.
Схема метода (это не техника, а диагностика — как её применять)
ШАГ 1: Задай модели вопрос с широким пространством ответов в обычном чате → получи "истинный" разброс мнений
ШАГ 2: Задай тот же вопрос, попросив ответ в JSON/XML → сравни, сузился ли выбор
ШАГ 3: Если задача требует разнообразия (мозгоштурм, рекомендации, опрос) — не проси JSON на этом шаге
Пример применения
Задача: Вы используете ChatGPT/Claude, чтобы сгенерировать 20 вариантов названий для нового бренда одежды, и хотите потом обработать список автоматически (например, вставить в таблицу).
Промпт (плохой вариант — теряет разнообразие):
Придумай 20 названий для бренда уличной одежды.
Ответь в формате JSON: {"names": ["...", "..."]}
Промпт (хороший вариант — сохраняет разнообразие):
Придумай 20 названий для бренда уличной одежды.
Пиши просто список, без форматирования, каждое название с новой строки.
(если нужен JSON для таблицы — попросите его ПОСЛЕ, вторым отдельным запросом: "Теперь оформи этот список в JSON")
Результат: В первом случае модель выдаст более шаблонные, "усреднённые" названия — те, что чаще встречаются у всех моделей (типа Urban, Street, Nomad). Во втором случае разброс идей будет шире и оригинальнее, а формат можно навести отдельным шагом без потери креатива.
Почему это работает
Модели обучены отвечать в JSON/XML особым образом — это их "рабочий" регистр для тулов, функций и интеграций. Обучение через RLHF и тюнинг под tool-use закрепило в этом регистре узкий набор "правильных", ожидаемых ответов — как будто модель переключается в режим "для машин", где сюрпризы нежелательны.
Ключевое наблюдение исследования: это не техническое ограничение декодера, а поведенческая реакция модели на регистр. Даже без принудительной схемы (без response_format), просто попросив ответ в JSON текстом, вы уже сужаете выбор модели почти так же сильно, как если бы включили жёсткую валидацию. Значит, дело не в том, что "JSON заставляет модель быть точной" — дело в том, что модель воспринимает слово "JSON" как сигнал: веди себя как для программы, а не как в живом разговоре.
Рычаг управления: если вам важно разнообразие ответов (мозгоштурм, подбор идей, оценка вариантов) — просите обычный текст сначала, JSON добавляйте только как финальную обёртку уже готового результата, отдельным запросом.
Ограничения
⚠️ Не для задач с одним правильным ответом: если вы просите классифицировать текст, извлечь дату или выбрать категорию из фиксированного списка — сужение разнообразия не вредит, там и не нужен разброс.
⚠️ Эффект неравномерный: сильнее всего страдают самые "оригинальные" модели (те, что в обычном чате давали нестандартные ответы) — они теряют до половины своей "непохожести" при переходе на JSON. Модели, которые и так отвечают шаблонно, почти не меняются.
⚠️ Не любой формат сужает выбор: YAML и CSV не дают такого эффекта — сужение специфично именно для JSON и XML, регистров, в которых модели чаще всего общаются с внешними программами (tool calls, function calling).
⚠️ Один снимок с одного канала: данные собраны через один сервис (OpenRouter) в одну единицу времени — поведение конкретных моделей может измениться в будущих версиях.
Как исследовали
Исследователи взяли готовый инструмент "перепись одного слова" — 31 вопрос вида "Назови дерево одним словом" — и прогнали его через 44 разные модели, сравнивая обычный чат-ответ с ответом в JSON, XML, YAML, CSV и просто в квадратных скобках. Разброс ответов измеряли через "сюрприз выбора" — метрику в битах, которая показывает, насколько ответ модели не похож на ответы остальных 43 моделей.
Самое неожиданное: сужение произошло именно в JSON и XML — форматах, которые модели используют для вызова функций и тулов, а вот в YAML и CSV, которые модели читают, но редко "говорят" сами, эффекта почти не было. А в квадратных скобках — формате без явной "программной" семантики — разброс ответов даже увеличился. Это намекает, что причина не в самой структурированности текста, а именно в тренировке моделей "разговаривать" в определённом регистре с программами.
Ещё интереснее: включение жёсткой схемы на уровне API (response_format) почти ничего не добавило к эффекту от простой просьбы "ответь в JSON" — значит, дело не в технической валидации, а в том, как модель реагирует на само слово "JSON" в запросе.
Ресурсы
Tapan Parikh, Cornell Tech. Structured Output Collapses Answer Diversity Across 44 Language Models (июль 2026). Основано на инструменте "One-Word Census" [7].
