3,583 papers
arXiv:2607.18476 78 20 июля 2026 г. FREE

Формат-ловушка: почему "Ответь в JSON" делает все LLM одинаковыми

КЛЮЧЕВАЯ СУТЬ
Одно слово «JSON» в промпте — и модель резко сужает выбор, будто её подменили. Спроси про любое дерево в обычном чате — услышишь секвойю, баобаб, тис. Попроси то же в JSON — почти всегда «дуб». Метод позволяет заранее понять, когда формат ответа убивает разнообразие идей — и не наступить на эти грабли при мозгоштурме или подборе вариантов. Модель воспринимает слово JSON как команду «веди себя как для программы» — и переключается в предсказуемый, усреднённый режим, даже без жёсткой схемы.
Адаптировать под запрос

Если попросить модель назвать любое дерево, в обычном чате она выберет из десятков вариантов. Стоит добавить "ответь в формате 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].


📋 Дайджест исследования

Ключевая суть

Одно слово «JSON» в промпте — и модель резко сужает выбор, будто её подменили. Спроси про любое дерево в обычном чате — услышишь секвойю, баобаб, тис. Попроси то же в JSON — почти всегда «дуб». Метод позволяет заранее понять, когда формат ответа убивает разнообразие идей — и не наступить на эти грабли при мозгоштурме или подборе вариантов. Модель воспринимает слово JSON как команду «веди себя как для программы» — и переключается в предсказуемый, усреднённый режим, даже без жёсткой схемы.

Принцип работы

Правило простое: формат ответа — это не просто обёртка, а сигнал модели, как себя вести. Текст — режим живого диалога, где нормально выдать неожиданный ответ. JSON и XML — режим для тулов и API, где модель натренирована быть скучной и стабильной. Хочешь разброс идей — проси текст. Хочешь готовую структуру — проси JSON, но потом, отдельным шагом.

Почему работает

Дело не в декодере и не в технических ограничениях формата — это чисто поведенческая реакция. Даже без принудительной схемы, просто увидев слово «JSON» в тексте промпта, модель режет разброс ответов почти на треть, а число уникальных вариантов — почти вдвое. Причина в обучении: через RLHF и тюнинг под function calling модель заучила, что JSON-регистр — это зона для машин, где сюрпризы нежелательны. Самые оригинальные модели теряют до половины своей непохожести именно в JSON — а шаблонные модели почти не меняются, потому что у них и так нечего терять.

Когда применять

Генерация идей, названий, мозгоштурм, подбор рекомендаций → особенно когда нужно много разных вариантов, а не один правильный. Не подходит как ограничение для классификации, извлечения дат или выбора из фиксированного списка категорий — там сужение выбора не мешает, а даже помогает.

Мини-рецепт

1. Сгенерируй сначала текстом: попроси список идей без всякого форматирования, просто с новой строки.
2. Проверь разброс: если видишь однотипные ответы уже в тексте — дело не в формате, ищи проблему в самом промпте.
3. Добавь JSON отдельным шагом: когда список готов, отправь второй запрос — «оформи это в JSON» — структура появится без потери оригинальности идей.

Примеры

[ПЛОХО] : Придумай 20 названий для бренда уличной одежды. Ответь в формате JSON: {"names": ["...", "..."]}
[ХОРОШО] : Придумай 20 названий для бренда уличной одежды. Пиши просто список, каждое название с новой строки, без форматирования. — а потом отдельным запросом: Теперь оформи этот список в JSON
Источник: Structured Output Collapses Answer Diversity Across 44 Language Models
ArXiv ID: 2607.18476 | Сгенерировано: 2026-07-22 04:21

Проблемы LLM

ПроблемаСутьКак обойти
Формат JSON/XML схлопывает разнообразие ответовПросишь модель ответить в JSON или XML вместо обычного текста. Модель резко сужает выбор — почти все начинают отвечать одинаково, "типично". Разброс падает почти на треть, число уникальных вариантов — почти вдвое. Плохо для мозгоштурма, генерации идей, подбора вариантов, где нужна разнородностьСначала получи ответ в свободном тексте (список, прозой). Формат в JSON проси ОТДЕЛЬНЫМ вторым запросом — "оформи этот список в JSON". Так сохраняешь разброс и получаешь удобный формат

Методы

МетодСуть
Двухшаговый запрос: текст потом форматРазделяй генерацию контента и обёртку в формат на два отдельных запроса. Шаг 1: "придумай 20 вариантов, пиши списком". Шаг 2 (новый запрос): "оформи в JSON". Почему работает: слово "JSON" в запросе включает у модели "режим для программ" — узкий, предсказуемый набор ответов. Если формат просишь после того как контент уже сгенерирован, этот режим не успевает сузить сам выбор идей. Работает: мозгоштурм, генерация названий/идей/рекомендаций с последующей обработкой в таблице. Не работает (и не нужно): классификация, извлечение даты, выбор из фиксированного списка — там разброс и не требуется

Тезисы

ТезисКомментарий
Слово "JSON" в запросе — сигнал модели "веди себя как для программы"Модель не просто меняет обёртку ответа при переходе на JSON — она реально выбирает другой, более "усреднённый" вариант ответа. Это не техническое ограничение декодера (схема не обязательна), а поведенческая реакция на формат — тренировка на tool-use и API закрепила в этом режиме узкий набор "ожидаемых" ответов. Применяй: если важен разброс идей — избегай слова "JSON" в запросе, где генерируется сам контент, добавляй формат позже
Эффект сужения специфичен для JSON и XML — YAML и CSV его не даютНе любой структурированный формат ломает разнообразие. YAML и CSV не воспринимаются моделью как "режим для программ" так же сильно, как JSON/XML — вероятно потому что они реже используются в tool calls и function calling. Применяй: если нужен и структурированный вывод, и разнообразие — попробуй CSV или YAML вместо JSON как компромисс
📖 Простыми словами

Structured Output Collapses Answer Diversity Across 44LanguageModels

arXiv: 2607.18476

Когда ты просишь нейронку выдать ответ в строгом формате, например в JSON или XML, ты буквально включаешь у неё режим «робота-исполнителя». На уровне архитектуры это работает как жесткий ограничитель: модель перестает искать креативные связи в своих нейронных дебрях и переключается на максимально предсказуемые паттерны. Проблема в том, что вместе со структурой схлопывается разнообразие — модель начинает выдавать самые банальные и серые варианты из возможных, потому что её так научили во время дообучения для работы с кодом и инструментами.

Это как если бы ты попросил профессионального тамаду составить список тостов, но строго в виде бухгалтерской ведомости с колонками «повод» и «длительность». Формально он задачу выполнит, но вместо душевных историй ты получишь сухой набор фраз вроде «за здоровье» и «за успех». Как только появляется рамка в виде таблицы, мозг (или веса модели) переходит из режима творчества в режим заполнения ячеек, где главное — не ошибиться в синтаксисе, а не удивить содержанием.

Исследователи прогнали 44 языковые модели и выяснили, что принуждение к структуре убивает вариативность ответов в разы. Если тебе нужно 20 названий для бренда и ты просишь их сразу в JSON, ты получишь список из слов «Стиль», «Мода» и «Тренд» в разных комбинациях. Модели натасканы через RLHF так, что структурированный вывод для них — это зона «безопасных» и стандартных ответов. Они настолько боятся сломать скобку в коде, что выбирают самые заезженные токены, лишь бы не рисковать структурой.

Этот эффект — коллапс разнообразия — работает везде: от генерации идей для стартапов до написания кода или стихов. Тестировали это на огромной выборке, и результат везде один: хочешь порядка — готовься к скуке. Принцип универсален для любой задачи, где требуется хоть капля креатива. Если ты загоняешь LLM в рамки схемы, ты добровольно отрезаешь ей 80% «фантазии», превращая мощный интеллект в продвинутый Т9.

Короче: никогда не проси модель выдавать креатив сразу в структурированном виде. Сначала дай ей пофантазировать в свободном текстовом формате, а уже вторым шагом проси упаковать этот результат в нужный JSON или таблицу. Иначе ты получишь стерильный и предсказуемый мусор, который идеально парсится кодом, но абсолютно бесполезен для жизни. Структура убивает хаос, а вместе с ним и смысл.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с