3,583 papers
arXiv:2603.16475 76 17 мар. 2026 г. FREE

LLM игнорирует собственный чеклист: промежуточные шаги не управляют финальным ответом

КЛЮЧЕВАЯ СУТЬ
Когда просишь LLM сначала составить критерии оценки, а потом сразу применить их — модель не использует эти критерии как основу для решения. Она идёт к ответу напрямую от исходного текста, а чеклист лишь оформляет то, что уже решено "под капотом".
Адаптировать под запрос

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


Проблемы LLM

ПроблемаСутьКак обойти
Чеклист в одном запросе не управляет финальным выводомПросишь модель: "Составь рубрику оцени по ней". Выглядит логично. Но рубрика и итог оба пришли из одного источника — исходного текста. Один не вытекает из другого. Это как судья сначала решил "виновен", потом написал аргументы. Аргументы выглядят логично, но они не причина решения. В почти половине случаев оценка не меняется, даже если рубрику изменитьРаздели на два отдельных сообщения. Сначала получи заполненный чеклист. Потом передай его обратно и попроси подсчитать итог. Исходного текста уже нет в фокусе — модель опирается на рубрику, а не на общее впечатление

Методы

МетодСуть
Два сообщения для оценки по рубрикеСообщение 1: "Составь чеклист из {N} пунктов. Каждый — вопрос с ответом Да/Нет. Вот материал: [текст]. Заполни чеклист с обоснованием". Сообщение 2 (отдельно): "Вот заполненный чеклист: [вставить]. Подсчитай Да, выведи оценку 0–{N}. Для каждого Нет — одно конкретное исправление". Почему работает: В сообщении 2 исходного текста уже нет в фокусе. Есть только рубрика. Модель условлена именно на неё. Разрыв между сообщениями — это изоляция переменных. Оптимально: 5–8 пунктов в рубрике. При большем числе модель путается при подсчёте. Не работает: размытые критерии ("насколько текст убедительный") — граница между рубрикой и интуицией стирается
📖 Простыми словами

Breaking the Chain: A Causal Analysis ofLLMFaithfulness to Intermediate Structures

arXiv: 2603.16475

Суть проблемы в том, что хваленый метод Chain-of-Thought (цепочка рассуждений) часто оказывается обычной декорацией. Когда ты просишь нейронку сначала составить критерии оценки, а потом выдать вердикт, она не использует эти критерии как реальный фильтр. Модель просто пролетает насквозь от исходного текста к финалу, а промежуточный «чек-лист» дописывает просто для вида, чтобы угодить твоему промпту. Это не логический вывод, а иллюзия обоснованности, где решение принимается мгновенно «под капотом», а аргументация подтягивается за уши уже постфактум.

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

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

Тестировали это на задачах оценки текстов, но принцип универсален для любого сложного промптинга. Будь то проверка кода, аудит питч-дека или юридический анализ — если ты просишь «сначала проанализируй, а потом реши» в одном окне, ты получаешь имитацию бурной деятельности. Единый контекст убивает объективность, превращая нейронку в предвзятого эксперта, который сначала ставит диагноз, а потом ищет симптомы.

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

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

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

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