TL;DR
Модели "понимают" твой текст примерно одинаково при разных формулировках инструкции — внутренние представления входного материала почти не меняются. Меняется другое: как модель формулирует вывод. Инструкция — это не линза восприятия, а фильтр выражения. Она говорит модели не "смотри вот на это", а "вот так оформи то, что уже понял".
Привычная боль: переписываешь промпт раз за разом, объясняешь задачу другими словами — результат скачет. Кажется, модель то понимает тебя, то нет. Но проблема не в понимании. Модель с большой вероятностью "знает" правильный ответ при любой разумной формулировке. Проблема — в том, что инструкция не задаёт нужный формат вывода, и модель выражает ответ не так, как тебе нужно.
Исследование вскрывает асимметрию: инструкция почти не затрагивает то, как модель обрабатывает входной текст, зато сильно влияет на то, что она выдаёт. Это переворачивает логику написания промптов — вместо детального объяснения задачи стоит детально описывать желаемый вывод.
Схема принципа
СТАНДАРТНЫЙ ПОДХОД (низкая эффективность):
Подробно описываешь задачу и контекст → слабо специфицируешь вывод
→ модель "понимает" ок, но выдаёт "что-то не то"
OUTPUT-FIRST ПОДХОД (высокая эффективность):
Минимально необходимый контекст → детально специфицируешь вывод
→ инструкция управляет тем, что умеет — формой ответа
Всё в одном промпте. Не требует отдельных запросов.
Пример применения
Задача: Получить инвестиционный анализ стартапа от Claude — чтобы было конкретно, а не общо
❌ Типичный промпт (инструкция объясняет задачу, а не вывод):
Ты опытный инвестор. Проанализируй мою бизнес-идею —
приложение для отслеживания расходов с AI-рекомендациями.
Рынок большой, конкуренты есть: Дзен-мани, CoinKeeper.
Мы делаем упор на персонализацию. Дай свой анализ.
✅ Output-first промпт (инструкция управляет формой вывода):
Проанализируй бизнес-идею: приложение для отслеживания расходов
с AI-рекомендациями, рынок РФ, конкуренты — Дзен-мани и CoinKeeper,
отличие — персонализация.
Дай ответ строго в таком формате:
1. ГЛАВНЫЙ РИСК — одно предложение, конкретная угроза
2. ГЛАВНОЕ ПРЕИМУЩЕСТВО — одно предложение, не "персонализация вообще",
а почему это сложно скопировать
3. ВОПРОС К ОСНОВАТЕЛЮ — самый неудобный вопрос, который задал бы
инвестор Алексей Баринский на питче
4. ВЕРДИКТ — "смотрю дальше" / "пас" / "нужно больше данных" + одна строка почему
Результат: Модель выдаст структурированный разбор именно в этом формате — конкретный, без общих слов. Вывод управляется не тем, как ты описал задачу, а тем, как задал форму ответа. Если переформулировать первую часть (контекст стартапа) — ответ изменится незначительно. Если изменить вторую часть (спецификацию вывода) — ответ изменится сильно.
Почему это работает
Слабость LLM: модель чувствительна к формулировкам промпта — маленькое изменение слова даёт другой результат. Интуитивно кажется: это значит, что модель по-разному "читает" задачу. Исследование показывает, что это неверное объяснение.
Что происходит на самом деле: модель обрабатывает входной текст (твою задачу, документ, вопрос) примерно одинаково при разных инструкциях. Внутренние представления того, "что здесь написано", почти не меняются. Меняется только то, как эта понятая информация выражается в вывод. Инструкция — это не линза, через которую смотришь на текст, а фильтр, который решает: что из понятого сказать и как.
Рычаги управления промптом — следствие этого принципа:
| Что менять | Эффект |
|---|---|
| Описание контекста и задачи | Слабый — модель и так "поняла" |
| Формат вывода (список, таблица, диалог) | Сильный |
| Перспектива ответа (скептик, оптимист, юрист) | Сильный |
| Ограничения на вывод (только риски, без рекомендаций) | Сильный |
| Порядок элементов ответа | Сильный |
Ещё один вывод — про "знает, но молчит". Модель может знать правильный ответ, но не выдавать его, если инструкция направляет производство ответа в другую сторону. Это объясняет странный эффект: иногда модель "почти права" — поменяй не объяснение задачи, а спецификацию вывода, и получишь то, что нужно.
Шаблон промпта
{контекст} — [минимально необходимые данные: текст, вопрос, материал]
Ответь в таком формате:
{элемент_1}: {что именно, какой объём, какой угол}
{элемент_2}: {что именно, какой объём, какой угол}
{элемент_3}: {что именно, какой объём, какой угол}
Ограничения на вывод: {что исключить / какой тон / на кого ориентирован ответ}
Что подставлять:
- {контекст} — минимально: о чём материал, что нужно сделать. Не переусердствуй с объяснениями
- {элемент_N} — конкретные разделы ответа. Чем точнее — тем лучше: не "анализ", а "главный риск — одно предложение"
- {ограничения на вывод} — кому адресован, что не включать, какой стиль
Ограничения
⚠️ Принцип, не гарантия: Более точная спецификация вывода улучшает результат, но не устраняет галлюцинации и фактические ошибки — это другой механизм.
⚠️ Не всегда задача — описать вывод: Для сложных рассуждений и Chain-of-Thought иногда важно дать модели свободу в процессе. Жёсткий формат вывода может обрезать нужные шаги мышления.
⚠️ Поверхностные задачи — особый случай: Для задач на синтаксис, грамматику, поверхностные паттерны асимметрия слабее — там инструкция чуть больше влияет на "понимание". Но для смысловых задач, рассуждений, знаний — принцип работает в полную силу.
⚠️ Теоретический вывод, не промпт-инженерия: Исследование объясняет механику, не даёт готовую технику. Практические выводы — это интерпретация, а не прямой результат экспериментов.
Как исследовали
Идея была простой: разделить два момента в работе модели — когда она читает входной текст и когда она генерирует вывод — и посмотреть, на что именно влияет инструкция.
Команда взяла три семейства моделей (Llama-3.1, Qwen-2.5, OLMo-2) и пять задач на суждение: грамматическая корректность, наличие стереотипов, логическая связность, здравый смысл, теория разума. Для каждой задачи использовали три варианта промпта: инструкция до текста, инструкция после текста, без инструкции (только примеры с ответами). Затем "заглядывали внутрь" модели через зондирование (probing) — обучали простой классификатор предсказывать правильный ответ по внутренним представлениям токенов на каждом слое.
Ключевой результат оказался неожиданным: представления входного текста были почти одинаковыми во всех трёх вариантах промпта — разброс не превышал ±0,7 процентных пунктов. Зато представления выходных токенов гуляли значительно сильнее — ±2,2 пп. И именно вариация в выходных токенах коррелировала с реальным поведением модели (τ = 0,62), тогда как вариация во входных — нет (τ = −0,15).
Для проверки причинности провели аттеншн-интервенции — буквально блокировали поток информации между инструкцией и разными частями промпта. Когда заблокировали связь инструкции со всем последующим (включая вывод) — точность упала на 58 пунктов. Когда заблокировали только связь инструкции с входным текстом — точность упала лишь на 4 пункта. Это подтвердило: инструкция влияет на вывод, а не на обработку ввода.
Дополнительно выяснилось, что instruction-tuning (дообучение на следование инструкциям) и размер модели усиливают именно производственную стадию — не обработку. Это согласуется с Гипотезой поверхностного выравнивания (Superficial Alignment Hypothesis): постобучение учит модель выражать то, что она знает, а не знать больше.
Оригинал из исследования
[Оригинальный промпт для задачи BLiMP]
Instruction: "Is the given text linguistically acceptable? This means that
it contains no grammatical errors in morphology, syntax, or semantics.
Answer only with "yes" or "no": choose "yes" if the text meets these
criteria or "no" if it violates them."
Sample: "The [patients/patient] care for Adam."
Контекст: Так выглядели задачи в исследовании — инструкция плюс образец. Исследователи меняли порядок (инструкция до / после образца) и убирали инструкцию совсем (заменяя на 4 примера с ответами). Это позволяло отследить, что меняется внутри модели при разных форматах промпта.
Адаптации и экстраполяции
💡 Адаптация: диагностика "сломанного" промпта
Если модель даёт непоследовательные ответы на одно и то же — используй это как диагностический принцип. Проблема почти наверняка в производственной части, а не в том, что модель "не понимает" задачу.
🔧 Техника: переформулируй вывод, не ввод
Когда промпт не работает: 1. Оставь описание задачи как есть 2. Перепиши только спецификацию ответа: добавь формат, ограничения, точку зрения, примеры вывода
[Текст/задача остаётся без изменений]
Перепиши свой ответ так:
— первое предложение: главный вывод
— второе предложение: главное ограничение вывода
— третье предложение: конкретный следующий шаг
Без вводных слов. Без "следует отметить".
💡 Экстраполяция: few-shot как альтернатива инструкции
Исследование показало: implicit instruction (примеры с ответами вместо явной инструкции) работает сопоставимо с явной инструкцией — а на некоторых моделях лучше. Если явная инструкция даёт непоследовательный результат, попробуй заменить её на 2-3 примера в формате "вопрос → ответ нужного вида":
Пример 1:
Текст: [пример_1]
Ответ: [нужный_формат_1]
Пример 2:
Текст: [пример_2]
Ответ: [нужный_формат_2]
Теперь:
Текст: {твой_текст}
Ответ:
Модель "считывает" паттерн вывода из примеров — это тоже управление продукционной стадией, только без явной инструкции.
Ресурсы
Название работы: Instructions shape Production of Language, not Processing
Сайт проекта: instruction-probing.github.io
Авторы: Andreas Waldis (University of Tübingen), Leshem Choshen (IBM Research, MIT, MIT-IBM Watson AI Lab), Yufang Hou (Interdisciplinary Transformation University of Austria), Yotam Perlitz (IBM Research)
Связанные концепции: Superficial Alignment Hypothesis (Zhou et al., 2023), probing classifiers, attention intervention
