3,583 papers
arXiv:2606.05976 88 4 июня 2026 г. FREE

Source-Conditioned Role Relabeling: скопируй ошибку обратно — и модель её исправит

КЛЮЧЕВАЯ СУТЬ
LLM знает правильный ответ — но не находит собственную ошибку, даже если прямо попросить. Фишка: скопируй сомнительный фрагмент из ответа и верни как новое сообщение — исправление происходит в 60–90% случаев вместо почти нуля. Берёшь конкретное утверждение, вставляешь в новое сообщение, пишешь «ты написал это — верно?» — и смена роли источника делает остальное. Модель не стала умнее. Просто получила объект, на который можно указать пальцем.
Адаптировать под запрос

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" появлялась внутри (модель молчит), и та же строка в 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


📋 Дайджест исследования

Ключевая суть

LLM знает правильный ответ — но не находит собственную ошибку, даже если прямо попросить. Фишка: скопируй сомнительный фрагмент из ответа и верни как новое сообщение — исправление происходит в 60–90% случаев вместо почти нуля. Берёшь конкретное утверждение, вставляешь в новое сообщение, пишешь «ты написал это — верно?» — и смена роли источника делает остальное. Модель не стала умнее. Просто получила объект, на который можно указать пальцем.

Принцип работы

Не «проверь себя» — а «ты написал X, это верно?». Разница огромная. Когда ошибка написана в рассуждении, она стала частью контекста, от которого модель отталкивается при следующем шаге. Попросить «проверь себя» — значит попросить плыть против течения, которое сам и создал. Но модель отлично умеет проверять внешние утверждения — это натренировано на миллиардах текстов: «пользователь говорит X — правда ли это?» Инстинкт критической проверки есть. Ему просто нужен конкретный объект с чёткими границами. Как только фрагмент становится «словами пользователя» — инстинкт включается. Без переподачи — молчит.

Почему работает

Проблема не в знаниях — в архитектуре. LLM пишет токен за токеном. Каждый следующий строится на предыдущих. Ошибка в шаге 3 «заражает» шаги 4, 5, 6 — и становится основанием для финала. Модель не «не видит» ошибку. Она встроила её в фундамент и теперь защищает как данность. Исследователи называют это «адресуемостью» (addressability): чтобы исправить ошибку, нужна возможность указать на неё как на отдельный объект. Переподача создаёт этот объект. Модель наконец может написать: «вот это утверждение неверно, потому что...» — и назвать сбой по имени. Без переподачи такой конструкции нет и быть не может.

Когда применять

Многошаговые расчёты → если промежуточный результат выглядит подозрительно. Логические цепочки → когда вывод следует из допущения, которое ты сам не проверял. Технические рассуждения (код, математика, физика) → особенно когда финальный ответ звучит уверенно, но что-то не сходится. НЕ подходит для: задач без однозначного правильного ответа (творческие, оценочные), и когда модель изначально права в 90%+ случаев — там просто некуда расти.

Мини-рецепт

1. Получи ответ с рассуждением: задай задачу и попроси показать шаги. Прочитай не финал — а промежуточные вычисления. Найди шаг, который вызывает сомнение.
2. Вычлени конкретный объект: скопируй дословно одно утверждение, одно вычисление, один вывод. Не абзац — именно конкретный шаг с цифрами или формулой. Чем точнее вырезал, тем сильнее эффект.
3. Переподай как внешнее: напиши новое сообщение в той же беседе: Ты написал следующее: "[вставить скопированное дословно]". Это утверждение верно? Проверь его независимо — формулу, логику, числа. Если оно ошибочно, назови ошибку явно и дай правильный результат.
4. Читай на явное указание: правильная коррекция выглядит так: «Это утверждение содержит ошибку: [объяснение].» Если модель просто переписала финал без явного указания на сбой — шаг 2 был слишком широким. Сузь фрагмент и повтори.

Примеры

[ПЛОХО] : Проверь свои расчёты и убедись, что всё верно.
[ХОРОШО] : Ты написал следующее: "CPM 800 рублей на 50 000 показов даёт рекламный доход 4 000 рублей за размещение." Это утверждение верно? Проверь конкретно это вычисление — формулу и числа. Если здесь ошибка, назови её явно и дай правильный результат.
Источник: The Self-Correction Illusion: LLMs Correct Others but Not Themselves
ArXiv ID: 2606.05976 | Сгенерировано: 2026-06-05 09:55

Проблемы LLM

ПроблемаСутьКак обойти
Запрос "проверь себя" почти не работаетПросишь модель перепроверить рассуждения. Она переписывает финальный ответ — но не называет конкретную ошибку. Промежуточный шаг с ошибкой остаётся в тексте молча. Дело не в знаниях: модель знает правильный ответ. Дело в структуре: собственное рассуждение — часть контекста, на который нельзя "указать пальцем". Нет объекта — нет опроверженияСкопируй подозрительный фрагмент дословно. Вставь в новое сообщение: "Ты написал: [фрагмент]. Это верно? Проверь независимо." Теперь у модели есть конкретный объект — она его разберёт и назовёт ошибку явно

Методы

МетодСуть
Переподача фрагмента — точечная проверка шагаНайди промежуточный результат, который вызывает сомнение. Скопируй дословно — не перефразируй. Напиши новое сообщение: Ты написал: "{скопированный_фрагмент}". Это верно? Проверь независимо — формулу, логику, числа. Если ошибка — назови её явно. Почему работает: модель отлично проверяет чужие утверждения. Это натренировано на огромных объёмах текста. Копируя фрагмент, ты меняешь роль источника: "своё рассуждение" становится "утверждением пользователя". Появляется адресуемый объект — его можно явно опровергнуть. Когда да: математика, логика, расчёты, любые задачи с проверяемым ответом. Когда слабее: творческие и субъективные задачи. Когда бесполезен: модель и так отвечает правильно в 90%+ случаев — расти некуда

Тезисы

ТезисКомментарий
Модели нужен дискретный объект чтобы исправить ошибкуЭто не про знания. Модель уже знает правильный ответ. Проблема в другом: чтобы опровергнуть ошибку, нужна возможность на неё сослаться. Собственное рассуждение такой возможности не даёт — это поток текста, а не набор адресуемых утверждений. Внешнее сообщение — даёт. Применяй: "проверь себя в целом" не работает. "Ты написал X — это верно?" работает. Разница в том, есть ли у модели конкретный объект для разбора
📖 Простыми словами

The Self-Correction Illusion:LLMsCorrect Others but Not Themselves

arXiv: 2606.05976

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

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

Самое дикое в этом исследовании — метод, который реально лечит этот баг. Оказывается, те же самые модели, которые тупят над своими ошибками, исправляют их в 60–90% случаев, если подать им их же текст как чужой. Секрет в смене роли источника. Если ты копируешь кривой расчет CPM от Павла Дурова и присылаешь его модели в новом чате с вопросом «что тут не так?», она мгновенно находит лажу. Модель не «понимает» ошибку в глубоком смысле, она просто перестает быть заложницей собственного контекста и начинает оценивать текст как внешний объект.

Этот принцип универсален и применим к любой сложной задаче, будь то написание кода, расчет юнит-экономики или юридический аудит. Неважно, используешь ты ChatGPT, Claude или Gemini — эффект эхо-камеры работает везде одинаково паршиво. Если ты чувствуешь, что нейронка начала «галлюцинировать» или выдавать подозрительные цифры, бесполезно тыкать её носом в ошибку в том же окне. Нужно выносить сомнительный кусок в чистый контекст, выдавая его за чужой контент.

Короче: забудь про кнопку «Regenerate» или уточняющие вопросы в духе «ты уверен?». Это путь в никуда, где модель будет просто вежливо подтверждать свою некомпетентность. Хочешь правды — делай копипаст в новый чат и проси критику. Либо ты сам выступаешь в роли цензора, либо заставляешь одну модель проверять другую. Самокоррекция — это миф, и пока мы не научимся выбивать LLM из их собственного контекста, они будут уверенно врать нам в лицо.

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

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

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