TL;DR
Когда просишь LLM сначала составить критерии оценки, а потом сразу применить их — модель не использует эти критерии как основу для решения. Она идёт к ответу напрямую от исходного текста, а чеклист лишь оформляет то, что уже решено "под капотом".
Главная боль: ты просишь оценить лендинг по рубрике из 7 пунктов — модель создаёт рубрику, заполняет её, выдаёт "85 из 100". Выглядит логично. Но если изменить рубрику и спросить снова — оценка часто не меняется. В 48% случаев (на задачах fact-checking) модель держится за первоначальный вывод, даже когда созданный ею же чеклист теперь явно указывает на другое. Проблема не в том, что модель "неправильно считает" — она просто обходит собственные промежуточные шаги и идёт напрямую от входа к выходу.
Решение — разорвать это в два отдельных запроса: сначала получить чеклист, затем вернуть его обратно в новом сообщении и попросить оценить. Когда вычисление итога вынесено отдельно и явно опирается на заполненный чеклист — разрыв между "кажущейся последовательностью" и реальным следованием правилам почти исчезает. Более сильные инструкции в духе "строго следуй рубрике, не своей интуиции" — не помогают: прирост минимальный.
Схема метода
Проблемный вариант (один промпт):
ОДИН ЗАПРОС: "Составь рубрику → оцени по ней" → LLM может проигнорировать рубрику
Рабочий вариант (два отдельных запроса):
ЗАПРОС 1: Составь чеклист → получи заполненный список критериев
↓ (копируешь результат)
ЗАПРОС 2: Вот чеклист [вставить]. Подсчитай по каждому пункту → финальная оценка
Оба запроса выполняются в одном чате, но в разных сообщениях. Именно перерыв и явная передача чеклиста назад заставляют модель на него опираться.
Пример применения
Задача: Ты готовишь питч-дек для инвесторов — нужно оценить текст "проблемы и решения" перед финальным показом. Хочешь структурированную оценку, а не просто "выглядит хорошо".
Промпт — Шаг 1:
Ты — опытный венчурный аналитик из фонда уровня Flashpoint.
Составь чеклист для оценки блока «Проблема и Решение» в питч-деке.
7 пунктов. Каждый пункт — конкретный вопрос с ответом Да/Нет.
Вот текст блока:
[вставляешь свой текст]
Заполни чеклист: для каждого пункта — Да или Нет, одно предложение обоснования.
Промпт — Шаг 2 (отдельное сообщение):
Вот заполненный чеклист:
[вставляешь результат из шага 1]
Подсчитай количество Да. Выведи итоговую оценку по шкале 0–7.
Для каждого «Нет» — одна конкретная правка, которую нужно внести в текст.
Результат: Шаг 1 даст заполненную рубрику — с конкретными ответами по каждому пункту и коротким обоснованием. Шаг 2 — числовую оценку и список точечных правок. Главное: оценка в шаге 2 реально будет вытекать из рубрики, а не из общего впечатления модели от текста.
Почему это работает
LLM генерирует текст последовательно, слово за словом. К моменту когда она пишет финальный вывод ("итоговая оценка: 7/10"), у неё уже есть сильный сигнал от исходного текста. Рубрика создавалась раньше — и тоже под влиянием этого же исходника. В итоге рубрика и вывод совпадают, но не потому что одно вычислено из другого, а потому что оба пришли из одного источника.
Это как если бы судья сначала решил "виновен", а потом написал аргументы. Аргументы будут выглядеть логично, но они не причина решения.
Когда ты передаёшь чеклист отдельным сообщением, ситуация меняется. Исходного текста уже нет в фокусе — есть только заполненная рубрика. Модель условлена именно на неё, а не на то, что читала раньше. Разрыв контекста работает как изоляция переменных в эксперименте.
Рычаги управления: - Количество пунктов в рубрике → 5–8 пунктов оптимально: меньше — слишком грубо, больше — модель начинает путаться при подсчёте в одном контексте - Детальность шага 2 → Можно попросить не просто подсчитать, а объяснить каждый вывод — это добавляет прозрачности - Роль в шаге 1 → Конкретизируй эксперта ("аналитик фонда Flashpoint" vs "опытный аналитик") — острее заполняет роль - Замена "Да/Нет" на шкалу → Можно использовать 1–3 вместо бинарного ответа, но тогда в шаге 2 обязательно укажи формулу подсчёта
Шаблон промпта
Шаг 1 — Создание и заполнение рубрики:
Ты — {роль эксперта}.
Составь чеклист для оценки {что оцениваем}.
{число_пунктов} вопросов. Каждый — с ответом Да/Нет.
Вот материал для оценки:
{текст или описание}
Заполни чеклист: для каждого пункта — Да или Нет, одно предложение обоснования.
Шаг 2 — Подсчёт (отдельное сообщение):
Вот заполненный чеклист:
{вставляешь результат шага 1}
Подсчитай количество «Да». Выведи итоговую оценку по шкале 0–{число_пунктов}.
Для каждого «Нет» — одно конкретное действие, которое исправит этот пункт.
Что подставлять:
- {роль эксперта} — конкретная роль с контекстом: "венчурный аналитик из фонда уровня a16z", "редактор Т—Ж", "опытный HR из tech-компании"
- {что оцениваем} — точная формулировка: "блок «Проблема» в питч-деке", "оффер вакансии", "структура лендинга"
- {число_пунктов} — от 5 до 8; больше 10 — ненадёжно даже в два шага
- {текст или описание} — сам материал целиком
🚀 Быстрый старт — вставь в чат:
Вот двухшаговый шаблон для структурированной оценки по чеклисту.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, если что-то нужно уточнить.
[вставить шаблон выше]
LLM спросит что именно оценивать, в какой роли выступать, и сколько пунктов нужно — потому что без этого она не может настроить рубрику под конкретный контекст.
Ограничения
⚠️ Сильные инструкции не работают: Фраза "строго следуй рубрике, игнорируй своё первоначальное суждение" почти не меняет поведение. Разрыв между кажущейся последовательностью и реальным следованием рубрике сокращается незначительно — с 0.27 до 0.32 на задачах fact-checking. Не трать время на мета-инструкции — лучше разбей на два сообщения.
⚠️ Рубрика с нечёткими критериями работает хуже: Эффект проявляется на задачах с детерминированным подсчётом (сумма баллов, да/нет). Если критерии размытые ("оцени насколько текст убедительный") — граница между следованием рубрике и интуицией модели стирается. Делай пункты конкретными и однозначными.
⚠️ Маленькие модели хуже следуют чеклисту даже в два шага: Модели меньшего размера чаще ошибаются при формировании структурированного аргумента. На Claude/GPT-4 эффект значительно стабильнее.
⚠️ Не работает для задач без чёткой логики подсчёта: Исследование тестировало ситуации, где ответ детерминированно вытекает из рубрики. Субъективные оценки ("насколько текст вызывает доверие") сложнее изолировать таким образом.
Как исследовали
Команда AIRI, МФТИ и Сколтеха задала простой вопрос: если изменить рубрику, которую только что заполнила сама модель — изменит ли она финальный ответ? Они взяли три набора задач с детерминированным подсчётом результата: задачи по химии с рубриками из 6–8 пунктов, верификация фактических утверждений через цепочки подвопросов, и проверка табличных утверждений через SQL-подобные запросы.
Схема эксперимента была элегантной: модель сама заполняла чеклист — а потом исследователи вручную меняли несколько пунктов и снова спрашивали финальный ответ. Поскольку подсчёт детерминированный (сумма баллов, большинство да/нет), правильный ответ после правки был известен заранее. Любое расхождение = модель проигнорировала изменения.
Протестировали восемь моделей: Qwen 3 (1.7B, 4B, 8B), Falcon 3 (3B, 7B), LLaMA 3 (3.2 3B, 3.1 8B) и Gemma 2 (2B). Самый неожиданный результат — на задачах fact-checking средняя "кажущаяся последовательность" была почти 74%, но реальная причинная зависимость — лишь 27%. То есть в 47% случаев рубрика и ответ "совпадали по виду", но при изменении рубрики ответ не менялся. Эффект не связан с размером модели линейно — Gemma 2B в некоторых задачах оказалась надёжнее более крупных моделей. Это говорит о том, что склонность игнорировать промежуточные шаги — не баг масштаба, а особенность архитектуры и обучения каждой модели.
Оригинал из исследования
Intervention algorithm:
Require: Dataset D = {xi, mi, yi}^N_{i=1}, instruction iD,
model pθ, intervention function I(·), deterministic evaluator C(·)
for each x ∈ D do:
1. Construct prompt from x = [iD; xi] to predict mediator m̂i and decision ŷi
2. Query pθ and parse completion into (m̂i, ŷi)
3. Apply intervention scenario I(m̂i) → m*i
4. Compute the decision implied by the intervened mediator ỹi ← C(m*i)
5. Form prompt (xi, m*i) and query pθ for decision ŷ*i
6. Evaluate faithfulness metrics using (yi, ŷi, ŷ*i, ỹi)
end for
return Faithfulness metrics
Контекст: Исследователи разрабатывали протокол измерения "каузальной верности" — проверяли, действительно ли изменение промежуточного шага меняет итоговый ответ, или модель его игнорирует. C(·) — детерминированная функция подсчёта (например, сумматор баллов рубрики), m*i — изменённая рубрика, ŷ*i — ответ модели после изменения.
Адаптации и экстраполяции
💡 Адаптация: Отладка ненадёжных оценок
Если подозреваешь, что модель выдаёт оценку "от головы", а не по критериям — проверь это:
🔧 Техника: тест на следование рубрике
После того как модель заполнила чеклист и дала оценку — вручную измени один пункт и попроси пересчитать:
Вот заполненный чеклист из предыдущего ответа,
но я изменил пункт 3 с «Да» на «Нет»:
[вставляешь изменённую рубрику]
Пересчитай итоговую оценку с учётом этого изменения.
Если оценка не изменилась — модель игнорировала рубрику с самого начала. Это сигнал: либо критерии слишком размытые, либо нужна более сильная изоляция шагов.
💡 Адаптация: Итерационная рубрика
Вместо "создай рубрику → оцени" используй трёхшаговый процесс для высоких ставок:
ШАГ 1: "Создай рубрику для оценки {задача}. Только структура критериев, без заполнения."
↓ (получаешь пустую рубрику)
ШАГ 2: "Вот рубрика. Заполни её по тексту {текст}. Только Да/Нет + одно предложение."
↓ (получаешь заполненную рубрику)
ШАГ 3: "Вот заполненная рубрика. Подсчитай результат и дай рекомендации."
Три отдельных сообщения вместо одного. Максимальная изоляция каждого шага — максимальная верность рубрике.
Ресурсы
Работа: "Breaking the Chain: A Causal Analysis of LLM Faithfulness to Intermediate Structures"
Авторы: Oleg Somov, Mikhail Chaichuk, Mikhail Seleznyov, Alexander Panchenko, Elena Tutubalina
Организации: AIRI, МФТИ, ISP RAS Research Center for Trusted AI, НИУ ВШЭ, Сколтех, Sber AI
Контакт: somov@airi.net, tutubalina@airi.net
Связанные работы: Pearl (1995) — front-door causal principle; Turpin et al. (2023) — unfaithfulness in Chain-of-Thought; Lanham et al. (2023) — faithfulness of reasoning traces; Shojaee et al. (2025) — controlled reasoning environments
