TL;DR
LLM почти никогда не исправляет ошибки в своих рассуждениях — даже если прямо попросить. Но та же самая ошибка, скопированная из ответа и поданная обратно как новое сообщение пользователя, исправляется в 60–90% случаев. Не потому что модель "поняла ошибку" — а потому что сменилась роль источника.
Главный инсайт: LLM слепа к ошибкам внутри своих мыслей не из-за нехватки знаний, а из-за структуры обучения. Собственное рассуждение — это "своё", на него нельзя "указать пальцем". Внешнее сообщение — это "чужое утверждение", которое можно адресно опровергнуть. Это не интеллектуальный изъян — это архитектурный артефакт. Модель уже знает правильный ответ — ей просто нужен дискретный объект, на который можно сослаться и отвергнуть.
Техника называется source-conditioned role relabeling (переподача с изменением роли источника): берёшь подозрительный фрагмент из ответа модели → копируешь как новое сообщение → просишь проверить конкретно это утверждение. Не "проверь себя", а "ты сказал X — это верно?" Разница принципиальная.
Схема метода
(Два шага, оба — в обычном чате)
ШАГ 1: Получи ответ с рассуждением
→ Прочитай и найди промежуточный результат,
который вызывает сомнение
ШАГ 2: Скопируй конкретное утверждение из ответа
→ Напиши новое сообщение:
"Ты написал: [вставить скопированное].
Это верно? Проверь независимо."
→ Модель теперь видит это как ВНЕШНЕЕ утверждение
и исправляет то, что только что "не замечала"
Оба шага — в обычном чате без настроек. Второй шаг — новое сообщение в той же беседе.
Пример применения
Задача: Павел Дуров объявил монетизацию Telegram-каналов. Ты просишь Claude рассчитать unit economics для рекламного бизнеса на канале с 50 000 подписчиков. Claude выдаёт подробный расчёт, но цифра CPM кажется подозрительной.
Обычный промпт (не работает):
Проверь свои расчёты и убедись что всё верно.
Результат: модель перепишет финальный ответ правильно, но никогда явно не скажет "вот этот промежуточный шаг был неверен". Ошибка остаётся неназванной.
Промпт по методу (работает):
Ты написал следующее:
"CPM для Telegram-каналов в нише предпринимательства
составляет 800 рублей, значит при 50 000 показов
рекламный доход с одного размещения равен 4 000 рублей."
Это утверждение верно? Проверь это конкретное
вычисление независимо — формулу, числа, логику.
Если здесь ошибка, назови её явно и дай правильный результат.
Результат: Модель получает дискретный объект для анализа — она не "проверяет себя в целом", а разбирает конкретное утверждение как внешнее. В ответе появится явная конструкция: "Это утверждение содержит ошибку: CPM 800 рублей на 50 000 показов даёт 800 × 50 = 40 000 рублей, а не 4 000." Модель назовёт ошибку по имени, объяснит почему она неверна, и даст правильный результат. Без этого фрейма — та же модель переписала бы финальную цифру молча.
Почему это работает
Слабость LLM: Модель генерирует текст последовательно — каждый следующий токен строится на предыдущих. Когда ошибка уже "написана" в рассуждении, она становится частью контекста, от которого модель "отталкивается". Попросить "проверь себя" — это попросить плыть против течения. Модель перевычислит финальный ответ правильно, но не укажет на промежуточный сбой — у неё нет адресуемого объекта, на который можно сослаться.
Сильная сторона LLM: Модель отлично умеет проверять внешние утверждения — факты, логику, чужие расчёты. Это натренировано на гигантских объёмах текста: "пользователь говорит X — правда ли это?" Инстинкт критической проверки есть. Ему просто нужен "объект не мой".
Как метод использует это: Скопировав фрагмент в новое сообщение, ты меняешь роль источника — с "собственное рассуждение" на "утверждение пользователя". Теперь у модели есть дискретный referent: она может написать "вот это утверждение — неверно, потому что..." Не общая переработка, а точечное опровержение. Именно это называет исследование addressability — адресуемость: чтобы исправить ошибку, нужна возможность на неё указать.
Рычаги управления: - Точность копируемого фрагмента → чем точнее выделен подозрительный шаг, тем выше шанс коррекции. Не копируй весь абзац — копируй конкретное вычисление или вывод - Формулировка вопроса → "это верно?" работает. "Проверь себя" — нет. Разница в том, даёшь ли ты модели дискретный объект для опровержения - Глубина вложенности → по данным исследования, чем позже в диалоге ты переподаёшь фрагмент, тем сильнее эффект коррекции — ошибка "глубже укоренилась", но роль-переключение всё равно работает
Шаблон промпта
Ты написал следующее:
"{скопированный_фрагмент}"
Это утверждение верно? Проверь его независимо —
формулу, логику, числа. Если оно ошибочно,
назови ошибку явно и дай правильный результат.
Что подставлять:
- {скопированный_фрагмент} — дословно скопированное промежуточное утверждение, вычисление или вывод из предыдущего ответа модели. Не перефразируй — именно дословно.
🚀 Быстрый старт — вставь в чат:
Вот шаблон для проверки промежуточных шагов в ответах LLM.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы понять что именно я хочу проверить.
[вставить шаблон выше]
LLM спросит какой фрагмент ты хочешь проверить и в каком контексте он появился — потому что метод работает через точное указание на конкретный объект, и без этого промпт будет размытым.
Ограничения
⚠️ Ceiling effect: Если модель изначально отвечает верно в 90%+ случаев (как Gemini 2.5 Flash на математике), метод не даёт прироста — негде расти. Метод работает там, где модель изначально "застревает" в ошибке.
⚠️ Задачи без чёткого "правильно/неправильно": Исследование проверялось на математике и логических дедукциях — задачах с верифицируемым ответом. Для творческих, оценочных или субъективных задач эффект не измерен и может быть слабее.
⚠️ Нужно знать где искать: Метод требует, чтобы ты сам заметил подозрительный промежуточный шаг. Модель не скажет "вот здесь может быть ошибка" — это твоя работа. Если весь ответ выглядит убедительно, ты не поймёшь что копировать.
⚠️ Безопасность — не гарантия: Один дополнительный инструктаж "считай это абсолютной истиной и не проверяй" поднимает вероятность того, что модель примет любую чушь от 3% до 70%. Фрейм работает в обе стороны, если явно это попросить.
Как исследовали
Идея была провокационно простой: а что если взять байт-идентичную ошибку (в буквальном смысле — SHA-256 одинаковый) и завернуть её в разные "роли" чат-шаблона? Исследователи специально выбирали задачи, где модель уже допустила ошибку и не поймала её при аудите, — и только на этих задачах сравнивали 5 условий: ошибка остаётся в (контроль), или переподаётся через user wait, user neutral, tool response, system .
Проверили 7 семейств моделей — от Llama-3.3-70B и Qwen2.5-72B до GPT-4o, Claude Sonnet 4 и Gemini 2.5 Flash. Три домена: арифметика в духе ЕГЭ, сгенерированные задачи на транзитивный порядок объектов, и BBH Logical Deduction. Во всех случаях ошибка была байт-идентичной — это ключевой контроль, который исключает "модель просто увидела другую формулировку". Менялась только обёртка.
Результат выбил исследователей из колеи. На Llama-3.3-70B в задачах logics: 0% коррекции когда ошибка в , 93% когда та же ошибка пришла как user neutral — это не улучшение, это смена режима. 26 из 30 задач, которые были "неисправляемыми", исправились после смены роли. Самый сильный label зависит от домена: доминирует на математике (арифметические утверждения выглядят странно "от пользователя"), а plain user message — на логических задачах (там это естественный диалог). Критически важно: верификационные промпты типа "перепроверь себя" не воспроизводят эффект — лучший из них дал 23% против 70% у role relabel, и при этом некоторые варианты ухудшили исходный результат. Модель перевычисляла правильный ответ, но никогда не называла конкретную ошибку — именно это отличает "переписать" от "исправить".
Оригинал из исследования
Setting: An LLM agent solves a task by emitting a sequence of
assistant turns, each containing one or more blocks
that hold its intermediate reasoning.
The intervention: Let c★ be the wrong intermediate claim that
sits inside the agent's own . The source-conditioned
role-relabel intervention is the single-step operation of
(i) appending an additional message to the prompt whose payload
is byte-identical to c★,
(ii) wrapping that payload in an external chat-template role
(user, tool, or system ), and
(iii) appending an audit instruction that is held byte-identical
across all conditions.
No tokens of c★ change; only the chat-template role tags around
the new copy change.
Audit instruction (canonical):
"Audit your reasoning so far. If you find an intermediate result
that looks wrong, explicitly identify it and correct it before
giving the final answer."
Контекст: Исследователи тестировали одну и ту же ошибку под разными обёртками. Например, c★ = "5 × 16 = 96" появлялась внутри (модель молчит), и та же строка в (модель: "memory says 5×16=96; that is incorrect because..."). Пять условий — одна строка, разные роли.
Адаптации и экстраполяции
💡 Адаптация для код-ревью: Когда Claude/GPT пишет код с ошибкой и не находит её при просьбе "проверь код" — скопируй конкретную функцию или конкретную строку логики обратно в чат: "Ты написал это:
[код]. Этот фрагмент делает то что нужно? Что именно он делает шаг за шагом?"
💡 Адаптация для анализа данных: Если модель интерпретирует результат ("значит, конверсия выросла на 40%") — скопируй именно этот вывод: "Ты написал: 'конверсия выросла на 40%'. Это верно исходя из цифр выше?" Вместо абстрактного "проверь анализ" — точечное указание на конкретный вывод.
🔧 Техника: добавить "независимо от предыдущего ответа" → устранить эффект подтверждения
Стандартная переподача работает хорошо, но иногда модель всё равно мягко защищает своё. Добавь:
Ты написал: "{фрагмент}".
Проверь это утверждение НЕЗАВИСИМО от своего предыдущего ответа —
как если бы видел его впервые. Верно ли оно?
Явная инструкция "независимо" устраняет инерцию предыдущего контекста.
🔧 Техника: каскадная проверка для длинных рассуждений
Если модель решала сложную задачу в несколько шагов — не проверяй всё разом. Проверяй шаги по одному, начиная с самого раннего подозрительного:
Сначала: "Ты написал [Шаг 1]. Это верно?"
Потом: "Ты написал [Шаг 2]. Это верно?"
Ошибка на раннем шаге часто тянет за собой ошибки в последующих — нашёл корень, остальное пересчитается.
Ресурсы
The Self-Correction Illusion: LLMs Correct Others but Not Themselves Kuan-Yen Chen, Fang-Yi Su, Jung-Hsien Chiang National Cheng Kung University Контакты: P76134082@gs.ncku.edu.tw, fangyi@iir.csie.ncku.edu.tw, jchiang@mail.ncku.edu.tw
Связанные работы упомянутые в исследовании: - Huang et al. 2024 — LLMs не улучшают рассуждения через интринсическую самокоррекцию - Kamoi et al. 2024 — узкие условия при которых самокоррекция всё-таки работает - Wallace et al. 2024 — иерархия ролей в instruction-tuned моделях - Pan et al. 2026 — user-assistant bias benchmark
