TL;DR
Исследователи протестировали как модели следуют сложным наборам инструкций (до 20 ограничений в одном промпте) и обнаружили три ключевых паттерна: позиция инструкции в списке влияет на выполнение, типы ограничений различаются по сложности, и инструкции могут конфликтовать друг с другом. Создали бенчмарк MOSAIC с 21 типом реалистичных ограничений (форматирование, тон, структура, бизнес-правила) на задачах генерации контента.
Главная проблема: чем больше инструкций в промпте, тем ниже точность выполнения каждой. Но не все инструкции страдают одинаково — позиция в списке создаёт bias. Первые и последние инструкции выполняются лучше (эффекты primacy и recency), средние — проваливаются чаще. Плюс разные типы ограничений имеют разную природную сложность: форматирование ( токен, JSON) модели выполняют почти идеально, а численные метрики (индекс читаемости Flesch 70-80) или структурные требования (списки только с дефисами) — провал у большинства моделей.
Ключевые находки: Семантические инструкции высокого уровня ("избегай противоречий", "используй позитивный язык") выполняются почти всегда (>99%), независимо от модели. Сложные форматные требования ("структурируй в списки только с дефисами") — катастрофа для некоторых моделей (7% у Deepseek-R1, 34% у Qwen3). Инструкции взаимодействуют: некоторые пары усиливают друг друга, другие конфликтуют и снижают общий compliance.
Ключевые находки
Эффект позиции: первые и последние выигрывают
Primacy effect (эффект первенства): Инструкции в начале списка выполняются точнее. Модель "видит" их первыми и уделяет больше внимания.
Recency effect (эффект недавности): Последние инструкции тоже в привилегированной позиции — свежи в контексте генерации.
Средние инструкции проваливаются: В длинных списках (10+ требований) инструкции в середине теряются — модель их "забывает" между началом и концом.
Иерархия сложности ограничений
Почти всегда работают (>95% compliance):
- Семантика высокого уровня: "избегай противоречий", "ясная цель", "позитивный язык"
- Простое форматирование: спецтокены , , JSON-формат
- Синтаксис: "предложения до 25 слов"
Средняя зона (70-90%): - Лексика: "используй ключевые слова", "избегай слов X, Y, Z" - Структура: "короткие параграфы 2-4 предложения"
Проблемная зона (<70% у многих моделей): - Численные метрики: индекс читаемости Flesch точно 70-80 (42-80% в зависимости от модели) - Жёсткое форматирование: "списки только с дефисами" (7% у Deepseek-R1) - Конкретные структурные паттерны: "тело текста ровно 2-3 параграфа"
Взаимодействие инструкций
Некоторые пары ограничений конфликтуют: "структурируй в списки" + "короткие параграфы" создают напряжение — список это не параграф.
Другие усиливаются: "используй позитивный язык" + "конкретный тон (дружелюбный)" работают синергично.
Чем больше инструкций, тем выше шанс скрытого конфликта. При 15+ требованиях compliance падает у всех моделей.
Применение для промптинга
Принцип 1: Размещай критичные инструкции стратегически
Самые важные требования — в начало или конец списка инструкций. Середина — слепая зона.
Задача: Пишешь продающий текст для лендинга нового продукта. Нужно соблюсти юридические требования и бизнес-стиль.
Плохо:
Напиши описание продукта для лендинга.
Требования:
1. Используй ключевые слова: инновация, эффективность
2. Тон дружелюбный
3. Без непроверенных превосходных степеней (важно!)
4. Упоминай variable {{ProductName}}
5. Все цифры должны быть точными (критично!)
6. Структурируй в списки
7. Короткие параграфы
Критичные требования (3 и 5) затерялись в середине.
Хорошо:
Напиши описание продукта для лендинга.
Требования:
1. Все цифры должны быть точными — проверяй каждое число (критично!)
2. Без непроверенных превосходных степеней — только факты (важно!)
3. Используй ключевые слова: инновация, эффективность
4. Тон дружелюбный
5. Упоминай variable {{ProductName}}
6. Структурируй в списки
7. Короткие параграфы
Критичные бизнес/легал требования — первыми. Стилистика — потом.
Принцип 2: Разделяй сложные и простые требования
Не смешивай в один список 15 разнородных инструкций. Группируй по типу и отправляй в несколько итераций или явно структурируй.
Сложный промпт с 12 требованиями:
Напиши статью. Требования: 1) тон экспертный 2) индекс Flesch 70-80
3) используй слова X, Y 4) избегай слов A, B 5) структура: введение,
тело, вывод 6) списки только с дефисами 7) короткие предложения
8) без противоречий 9) каждое утверждение обосновано 10) ясная цель
11) без превосходных степеней 12) точные данные
Результат: Модель выполнит 8-9 из 12, пропустит mid-list инструкции.
Лучше — двухшаговый подход:
Шаг 1 — генерация с семантикой и тоном:
Напиши черновик статьи на тему [X].
Требования к содержанию:
- Тон экспертный, но доступный
- Без противоречий
- Каждое утверждение обосновано примером или фактом
- Ясная цель текста — объяснить [Y]
- Без превосходных степеней без доказательств
- Точные данные
Шаг 2 — форматирование и стиль:
Отредактируй текст выше. Приведи к формату:
- Структура: введение, тело (2-3 параграфа), вывод
- Индекс читаемости Flesch 70-80
- Списки только с дефисами (не цифры, не буллиты)
- Предложения до 25 слов
- Добавь ключевые слова: [X], [Y], [Z]
- Убери слова: [A], [B]
Два коротких списка вместо одного длинного = выше compliance по каждому пункту.
Принцип 3: Численные метрики — отдельным проходом
Индексы читаемости, точный word count, специфичное форматирование — слабое место моделей в режиме "заодно с генерацией контента".
Не работает:
Напиши пост на 150 слов, индекс Flesch 70-80, тон лёгкий, без жаргона.
Результат: 180 слов, Flesch 64, тон ок.
Работает:
Шаг 1: Напиши пост на тему [X]. Тон лёгкий, без жаргона.
Шаг 2: Сократи до ровно 150 слов. Считай пословно после генерации.
Шаг 3: Проверь индекс Flesch. Если ниже 70 или выше 80 —
упрости предложения или разбей длинные.
Явные шаги с фокусом на одной численной метрике за раз.
Принцип 4: Проверяй конфликтующие требования
Перед отправкой длинного списка инструкций — проверь на скрытые конфликты:
Конфликт: - "Структурируй в списки с дефисами" + "Короткие параграфы 2-4 предложения"
Список — это не параграф. Модель выберет одно из двух.
Конфликт: - "Индекс Flesch 70-80 (простой язык)" + "Тон академический, экспертный"
Академический стиль = сложные слова = низкий Flesch. Модель не дотянет до 70.
Решение: Убери конфликтующее требование или переформулируй: - "Тон экспертный, но доступный — используй простые слова для сложных концепций"
Шаблон: структурирование сложных промптов
Если нужно дать модели 10+ требований — используй блочную структуру вместо плоского списка:
Напиши {тип контента} на тему {тема}.
КРИТИЧНЫЕ ТРЕБОВАНИЯ (проверяй обязательно):
1. {бизнес/легал требование 1}
2. {бизнес/легал требование 2}
СОДЕРЖАНИЕ:
- {семантическое требование 1}
- {семантическое требование 2}
- {семантическое требование 3}
СТИЛЬ И ТОН:
- {тон}
- {лексика: используй / избегай слова}
ФОРМАТ:
- {структура}
- {форматирование специфичное}
ПРОВЕРКА ПЕРЕД ОТВЕТОМ:
- Перечитай и убедись что выполнены ВСЕ критичные требования
- Если численные метрики (word count, Flesch) — посчитай явно
Что подставлять:
- {тип контента} — email, статья, описание продукта
- {тема} — конкретная тема
- Блоки наполняй конкретными требованиями, группируя по смыслу
- Критичные — всегда первый блок
- Проверка — последний блок (recency effect)
Почему это работает
LLM генерирует текст последовательно — токен за токеном. При генерации модель держит в "рабочей памяти" контекст промпта, но внимание не равномерно. Инструкции в начале формируют "план" генерации (primacy), инструкции в конце — свежи при финальной проверке (recency). Середина списка теряет вес — информация размывается между началом и концом.
Типы ограничений требуют разных механизмов:
- Семантика высокого уровня ("без противоречий", "ясная цель") — это то, на чём модель обучалась массово. RLHF (обучение с подкреплением на человеческих оценках) шлифовало именно это. Выполняется автоматически.
- Простое форматирование ( токен, JSON) — паттерны часто встречались в обучающих данных, модель "видела" это миллионы раз.
- Численные метрики (word count, Flesch index) — модель не умеет считать во время генерации. Она генерирует, не ведя явного счётчика. "Ровно 150 слов" или "Flesch 70-80" требуют пост-проверки, которую модель не делает автоматически.
- Жёсткие форматные паттерны ("списки только с дефисами") — если в обучающих данных были вариации (дефисы, буллиты, цифры), модель не закрепила жёсткое правило "только дефисы". Вариативность в данных = нестрогое следование спецификации.
Множественные инструкции конкурируют за attention weights внутри модели. Каждая инструкция "тянет одеяло" при генерации. Когда инструкций 15+, некоторые получают низкий вес и игнорируются. Конфликтующие инструкции усиливают эффект — модель вынуждена выбирать.
Стратегическое размещение использует bias модели в свою пользу: критичные требования — туда, где attention выше (начало, конец). Группировка инструкций снижает когнитивную нагрузку — модель обрабатывает блоками, а не длинным плоским списком. Пошаговое выполнение с фокусом на подмножестве требований — обходит проблему конкуренции attention.
Ограничения
⚠️ Не техника, а диагностика: Это исследование показывает КАК модели справляются с инструкциями, не даёт готовый метод улучшения. Принципы нужно адаптировать под свои задачи.
⚠️ Численные метрики остаются слабым местом: Даже с хорошей структурой промпта, точный word count или индекс читаемости требуют явной проверки — модели не умеют считать "на лету". Для критичных метрик нужен пост-процессинг или отдельный валидационный шаг.
⚠️ Сложные форматные требования модель-специфичны: "Списки только с дефисами" работают у одних моделей (Claude, GPT), проваливаются у других (Deepseek, Qwen). Если формат критичен — тестируй на своей модели.
⚠️ Эффект позиции ≠ гарантия: Размещение инструкции первой повышает шансы, но не гарантирует 100% выполнения при очень длинных списках (15+ требований). Лучшая стратегия — сократить список или разбить на этапы.
Как исследовали
Исследователи из Capital One создали синтетический бенчмарк MOSAIC — генератор промптов с модульными ограничениями. Взяли 4 типа задач генерации контента (маркетинговый email, обзор продукта, FAQ-запись, внутренний memo) × 8 продуктов/сервисов (смартфон, наушники, кредитная карта, приложение для медитации) × 21 тип ограничений из 5 категорий: форматирование, лексика, синтаксис, семантика, бизнес/легал.
Динамически составляли промпты с от 1 до 20 ограничений в списке, перемешивая их позиции — чтобы каждое ограничение появлялось на разных позициях примерно одинаково часто. Итого 4000 промптов — сбалансированный датасет для анализа позиционных эффектов.
Прогнали 7 моделей разных размеров и семейств: Llama 3.1 8B, Llama 3.3 70B, Qwen3 8B, Deepseek-R1 8B, Mixtral-8x-7B, Claude 3.7 Sonnet, Gemini Flash 2.5. Для форматирования и лексики писали rule-based проверки (Python + NLTK), для семантики и бизнес-правил использовали LLM-as-a-judge (GPT-4o-mini). Судья оценивал каждое ограничение по шкале 1-10, потом бинаризовали (≥5 = выполнено).
Валидация судьи: два эксперта-человека проверили 250 случайных примеров. Agreement судьи с людьми 82-83%, между людьми 94% — высокая надёжность.
Ключевое открытие: Compliance не монолитен — зависит от типа ограничения, его позиции в списке, и взаимодействия с другими. Semantics высокого уровня ("избегай противоречий") — почти 100% у всех моделей. Численные метрики (Flesch reading ease) — 42-80% в зависимости от модели. Позиция имеет значение: первые и последние инструкции в длинных списках выполняются точнее, средние проваливаются.
Удивительное: Простые на вид требования ("структурируй в списки только с дефисами") оказались катастрофически сложными для некоторых моделей (Deepseek-R1: 7%). Модели "понимают" семантику, но жёсткие форматные паттерны — не их сильная сторона. Инсайт для практики: не полагайся на модель в точном форматировании — лучше пост-обработка кодом или явная проверка.
Ресурсы
Deconstructing Instruction-Following: A New Benchmark for Granular Evaluation of Large Language Model Instruction Compliance Abilities
Код и датасет: https://github.com/CapitalOne-Research/llm-instruction-following-compliance
Alberto Purpura, Li Wang, Sahil Badyal, Eugenio Beaufrand, Adam Faulkner Card Intelligence, Capital One
Связанные работы, упомянутые в исследовании: - IFEval (Zhou et al., 2023) — ранний бенчмарк с простыми лексическими правилами - InfoBench (Qin et al., 2024) — декомпозиция сложных инструкций - ComplexBench (Wen et al., 2024) — композиция ограничений с логическими операторами - FollowBench (Jiang et al., 2024b) — инкрементальное добавление constraints
