Стоит добавить в промпт хотя бы один уровень вложенности требований — например, «сделай отчёт в Markdown, где раздел "Итоги" должен содержать два подраздела, а один из подразделов — ровно одно предложение с упоминанием роста» — и точность модели рушится. Исследователи создали бенчмарк IFHierBench: 600 промптов с требованиями, «вложенными» друг в друга на 4 уровня (как матрёшка), и для каждого промпта — программу-проверку, которая сверяет соблюдение правил на каждом отдельном уровне, а не только по всему ответу целиком.
Главная находка: даже сильнейшие модели проходят проверку лишь чуть больше чем в половине случаев, и переход от «плоского» списка требований («ответ короче 100 слов и на английском») к всего одному уровню вложенности («то же самое, но внутри конкретного раздела документа») отрезает 37–53 процентных пункта точности — у всех моделей без исключения. Хуже всего дела с точными числами: «ровно 80 слов», «ровно 5 предложений», «первый абзац начинается с такого-то слова» — эти требования проваливаются чаще всего, а вложенность их только усугубляет. Причина проста: обучающие промпты в основном содержат один уровень требований, а не «требование внутри требования внутри требования», поэтому модель не привыкла удерживать в голове несколько вложенных слоёв сразу.
Прямого решения в статье нет — это диагностика, а не техника. Но из находки напрямую вытекает практический вывод: не доверяй одному промпту со сложной вложенной структурой. Разбивай задачу по уровням, проси модель явно проверить каждый уровень требований перед финальным ответом, включай режим глубокого рассуждения для таких задач и избегай точных числовых значений там, где можно обойтись диапазоном.
Анатомия проблемы
УРОВЕНЬ 0 (плоский список требований, без вложенности):
"Ответь в JSON с полями X и Y" → точность ~80-87%
УРОВЕНЬ 1 (один слой вложенности):
"Ответь в JSON, где поле Y — список из 3 пунктов" → падение на 37-53 п.п.
УРОВЕНЬ 2-3 (глубокая вложенность):
требование внутри требования внутри требования →
у большинства моделей точность падает до 1-6%,
у самых сильных моделей (с включённым глубоким рассуждением) — держится на уровне 22-35%
Пример применения
Задача: Основатель стартапа просит нейросеть подготовить недельный отчёт для инвесторов.
Промпт (типичный, который скорее всего провалится частично):
Подготовь недельный отчёт для инвесторов в формате Markdown с тремя разделами:
"Итоги", "Метрики", "Риски".
В разделе "Итоги" сделай два подраздела: "Главное" и "Что дальше".
Подраздел "Главное" должен быть ровно одним предложением
и обязательно упоминать рост "месяц к месяцу".
Результат: Модель почти наверняка сделает три раздела верхнего уровня — это она выполняет надёжно. Но чем глубже забирается требование, тем выше шанс, что оно потеряется: подраздел "Главное" может оказаться не одним предложением, а абзацем, или упоминание "месяц к месяцу" появится где-то в другом месте текста, а не именно в этом подразделе. Исследование показывает: вероятность того, что ВСЕ требования на ВСЕХ уровнях выполнятся одновременно, падает лавинообразно с каждым новым уровнем вложенности.
Почему это работает (точнее — почему ломается)
Модели обучены хорошо соблюдать отдельные, независимые требования — их тренировочные данные в основном содержат простые плоские инструкции типа «ответь короче 100 слов» или «используй JSON». Но требование, спрятанное на третьем уровне вложенности («внутри поля, внутри раздела, внутри документа, ровно одно предложение с определённым словом»), редко встречается в такой форме при обучении.
Модель хорошо держит в фокусе один слой контекста, но с ростом глубины ей нужно одновременно помнить требования и внешнего контейнера, и внутренней структуры, и конкретного текстового ограничения — это похоже на жонглирование несколькими мячами сразу.
Интересная деталь: у GPT-5.5 и Claude Opus 4.6 (оба тестировались с включённым глубоким рассуждением, то есть режимом расширенного обдумывания перед ответом) точность на глубоких уровнях падает намного мягче, чем у остальных. Это говорит о рычаге управления: если задача требует сложной вложенной структуры — включай режим расширенного рассуждения, если он доступен в модели.
Практическая рекомендация (не из статьи — логичный вывод из находки)
🔧 Техника: явная самопроверка по уровням
Раз модель теряет вложенные требования, можно попросить её явно пройтись по каждому уровню отдельно, начиная с самого глубокого, и подтвердить выполнение — прежде чем выдавать финальный текст.
Задача: {задача}
Структура ответа по уровням (от внешнего к внутреннему):
Уровень 1 (весь ответ): {требование к структуре целиком}
Уровень 2 (внутри {название раздела}): {требование к разделу}
Уровень 3 (внутри {название подраздела}): {требование к подразделу}
Прежде чем дать финальный ответ:
1. Составь черновик.
2. Пройдись по черновику от самого глубокого уровня к внешнему.
По каждому уровню явно напиши: выполнено требование или нет.
3. Если что-то не выполнено — перепиши черновик именно в этом месте и проверь снова.
4. Выведи только финальный ответ, прошедший проверку по всем уровням.
🚀 Быстрый старт — вставь в чат:
Вот шаблон проверки вложенных требований к структуре ответа.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить уровни требований.
[вставить шаблон выше]
LLM спросит, сколько уровней вложенности в твоей задаче и какое требование на каждом — потому что без этого невозможно построить проверочный список для самоконтроля.
Дополнительно: если можно — замени точные числа («ровно 80 слов») на диапазоны («60-100 слов»). Числовые точные ограничения — самое слабое место моделей, а внутри вложенной структуры это слабое место становится критичным.
Ограничения
⚠️ Диагностика, не решение: статья не предлагает и не тестирует способ исправить проблему — только показывает масштаб. Мой шаблон самопроверки выше — логичное следствие, но не проверено авторами.
⚠️ Точные числа особенно хрупкие: ограничения «ровно N слов/символов/предложений» проваливаются чаще всего, вложенность только усугубляет ситуацию.
⚠️ Модели ломаются по-разному: одни теряют отдельные детали, разбросанные по тексту, но структуру в целом держат. Другие — если не справились с внешним уровнем, рушат всю вложенную структуру целиком. Значит и стратегия подстраховки может зависеть от того, с какой моделью работаешь.
Как исследовали
Команда сначала посмотрела на 1232 реальных промпта из открытых GitHub-проектов, чтобы понять, как на самом деле выглядят вложенные требования к формату — оказалось, что почти 68% промптов с явным форматом содержат хотя бы один уровень вложенности, а почти треть смешивает разные форматы (JSON внутри Markdown и так далее). На основе этого построили синтетический конвейер: брали простую задачу, «выращивали» вокруг неё дерево требований на 4 уровня, для каждого узла дерева писали отдельную программу-проверку — так итоговый чекер способен проверить соблюдение правил именно в той секции текста, к которой они относятся, а не по всему ответу целиком.
Получилось 600 промптов (по 150 на каждый уровень глубины), 35 типов требований, протестировали на семи моделях — от GPT-5.5 и Claude Opus 4.6 до открытых моделей вроде Qwen и Gemma. Результат совпал с ожиданием, но масштаб удивил: даже переход с уровня 0 на уровень 1 (всего один слой вложенности!) обрушивает точность на 37-53 процентных пункта у всех моделей без исключения — значит, проблема не в конкретной модели, а в самом способе, которым модели учили следовать инструкциям.
Ресурсы
IFHierBench: Hierarchical Instruction Following for Large Language Models, Yuetian Mao, Chunyang Chen — Technical University of Munich. Код и данные: anonymous.4open.science/r/IFHierBench-0087.
