3,583 papers
arXiv:2605.29463 74 28 мая 2026 г. FREE

Memory Confabulation: почему LLM изобретает причины ошибок — и как это исправить

КЛЮЧЕВАЯ СУТЬ
Обнаружено: когда модель итерирует и слышит в ответ 'неправильно, переделай' — она не ищет реальную причину провала. Она её придумывает. Уверенно. В одном эксперименте агент 14 раз подряд искал не тот объект, потому что сам себе написал неверный 'урок' после первой попытки — и неукоснительно ему следовал. Заземлённая рефлексия (Grounded Reflection) позволяет вырвать модель из петли — когда она раз за разом переделывает одно и то же, не приближаясь к результату. Три блока вместо 'переделай': что именно провалилось → почему → конкретный план. Модель получает точку опоры в реальных данных, а не в правдоподобных угадках. Правильный диагноз ошибки: с 0% до 86%.
Адаптировать под запрос

TL;DR

Когда LLM несколько раз пробует улучшить результат и после каждой неудачи сама пишет себе "урок" — она часто записывает уверенные, но полностью ложные диагнозы. В следующих попытках опирается на эти ложные выводы и ходит по кругу, игнорируя реальные данные. Это называется memory confabulation (конфабуляция памяти) — и это не разовая галлюцинация, а самовоспроизводящийся цикл ошибки.

Корень проблемы: когда обратная связь бинарная — "неправильно, переделай" — у модели нет данных о том, что именно пошло не так. Она заполняет этот пробел правдоподобно звучащим, но выдуманным объяснением. В одном эксперименте агент 14 попыток подряд искал томат и микроволновку — хотя задача была про кружку и кофемашину. Он сам себе написал неправильный "урок" после первой попытки и неукоснительно ему следовал.

Решение — Grounded Reflection (заземлённая рефлексия): вместо того чтобы просить LLM самостоятельно угадать причину ошибки, ты даёшь ей конкретный сигнал провала — ровно что не сработало и где. Это снизило долю правильных диагнозов с 0% до 86%.


🔬

Схема метода

ВХОДНЫЕ ДАННЫЕ: не "неправильно", а КОНКРЕТНО — что именно и где не так

ШАГ 1: ПРОВАЛЬНЫЙ ШАГ → точное место + что произошло в ответ
ШАГ 2: ПРИЧИНА       → одно предложение — почему это не сработало
ШАГ 3: НОВЫЙ ПЛАН    → конкретные шаги с точными деталями

Всё — в одном запросе. Три явных блока подряд.

🚀

Пример применения

Задача: Попросил Клода написать коммерческое предложение для B2B-клиента. В начале диалога указал бюджет — до 500 000 рублей. Он прислал текст с пакетом за 780 000. Написал "переделай раздел с ценами" — получил тот же результат другими словами.

Промпт:

Примени Grounded Reflection к своему предыдущему ответу:

ПРОВАЛЬНЫЙ ШАГ: В разделе "Стоимость" ты предложил пакет за 780 000 рублей,
хотя в начале диалога я указал: бюджет клиента — не более 500 000 рублей.

ПРИЧИНА: Ограничение бюджета не попало в раздел с ценами —
ты опирался на стандартное наполнение пакета, а не на условия клиента.

НОВЫЙ ПЛАН:
1. Переработай раздел "Стоимость"
2. Предложи три пакета — каждый строго до 500 000 рублей
3. Для каждого пакета: конкретный состав услуг + итоговая сумма

Результат: Модель получит точный якорь вместо размытого "переделай". Она точно знает: какой элемент не сработал, почему, и что именно делать. В ответе — три конкретных ценовых пакета в рамках заданного бюджета. Вероятность снова проигнорировать ограничение — резко падает.


🧠

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

LLM не "помнит ошибки" — она генерирует текст на основе того, что есть в контексте. Когда ты пишешь "это неправильно" — в контексте появляется сигнал "что-то не так", но нет данных о чём именно. Модель заполняет пробел тем, что звучит правдоподобно. Именно поэтому она так уверенно объясняет несуществующую причину ошибки.

Это особенно опасно в итерационных задачах. Каждое "запомни и учтись" без конкретики закрепляет неправильный диагноз. Следующая попытка строится на ложном фундаменте, который звучит уверенно — и ты не замечаешь подмены.

Grounded Reflection работает потому что убирает необходимость угадывать. Три блока — провал, причина, план — дают модели точку опоры в реальных данных, а не в том, что ей кажется правдоподобным. Для кода это работает ровно так же: вставь конкретное сообщение об ошибке или упавший тест — модель перестаёт изобретать объяснение и работает с фактом.

Рычаги управления: - Детализация провального шага → чем точнее ("в абзаце 3, строка про условия возврата"), тем точнее коррекция - Пункты в новом плане → больше конкретики = меньше интерпретации = меньше дрейфа - Твоя версия причины — даже приблизительная лучше, чем ничего: даёт модели рамку для ответа


📋

Шаблон промпта

Примени Grounded Reflection к своему предыдущему ответу:

ПРОВАЛЬНЫЙ ШАГ: {точное место или элемент} — {что произошло / что не так}

ПРИЧИНА: {одно предложение — почему именно это не сработало}

НОВЫЙ ПЛАН:
{конкретные шаги с точными деталями — названия, числа, условия}

Что подставлять: - {точное место} — конкретная часть ответа: "абзац про риски", "функция validate_email", "раздел с выводами" - {что не так} — конкретное нарушение: "содержит сумму выше бюджета", "не учитывает условие X", "противоречит требованию из начала диалога" - {одно предложение} — твоя версия причины, хотя бы приблизительная: "ограничение не было перенесено в этот раздел" - {конкретные шаги} — список с названиями, числами, конкретными объектами — без абстракций


🚀 Быстрый старт — вставь в чат:

Вот структура Grounded Reflection для точной обратной связи.
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит что именно пошло не так и в каком конкретном месте — потому что без заполненного "ПРОВАЛЬНОГО ШАГА" структура не работает, а именно он является ключом к точной коррекции.


⚠️

Ограничения

⚠️ Не помогает при пробеле в знаниях: Если модель просто не умеет выполнить задачу — никакое структурирование не поможет. Grounded Reflection исправляет ошибки ориентации ("что делать"), а не ошибки способностей ("как делать").

⚠️ Требует твоей конкретики: Если ты сам не знаешь, что именно не так — метод не работает. Ты должен знать провальный шаг. На расплывчатое "улучши" модель по-прежнему будет угадывать.

⚠️ Риск при рабочей стратегии: Структурированная обратная связь иногда нарушает стратегию, которая и так работала. Если модель идёт правильно — не вмешивайся без нужды.

⚠️ Сильные модели конфабулируют иначе: Модели уровня GPT-4 реже путают объект задачи, но начинают путать формат вывода — вставляют планирование вместо действий, генерируют структуру вместо текста. Конфабуляция не исчезает — она меняет форму.


🔍

Как исследовали

Исследователи взяли готовые логи Reflexion-агентов — системы, где после каждой неудачи агент сам пишет себе "урок" и опирается на него в следующей попытке. Никаких новых экспериментов: просто проанализировали, что агент писал в память и как это влияло на результат. Из 50 сред ALFWorld в 16 (32%) агент намертво застрял — одни и те же неправильные рефлексии раз за разом.

Самый яркий случай: задача "положи кружку в кофемашину". После первой неудачи агент написал себе, что задача про томат и микроволновку. Следующие 14 попыток искал томат — несмотря на то что каждый раз в начале ему заново давали правильное задание. Правильный объект не упоминался ни разу в 121 рефлексии.

Чтобы доказать что память вредит, а не просто задача сложная — убрали память совсем. Два окружения, которые с памятью требовали 7–8 попыток, без памяти решились с первого раза. Это прямое доказательство: уверенная конфабуляция хуже, чем её отсутствие.

Сравнение доменов дало любопытный контраст: на HumanEval (генерация кода с unit-тестами) "замороженных" оказалось только 17% — против 32–82% на задачах с бинарным результатом. Почему? Unit-тест говорит точно: какой assert упал, на каком вводе, с каким типом ошибки. Бинарное "неправильно" этого не даёт — и агент изобретает объяснение из воздуха.


💡

Адаптации и экстраполяции

🔧 Техника: конкретная цитата вместо оценки → убрать конфабуляцию без структуры

Принцип работает даже без трёх блоков. Любая итерация выиграет, если ты: - Цитируешь конкретное место: "в строке 'Стоимость доставки: 0 рублей' ты..." - Называешь нарушенное условие: "условие про бюджет из первого сообщения" - Вставляешь конкретный кейс: "если ввести пустую строку — вот что происходит: ..."


🔧 Техника: анти-конфабуляционная пауза перед итерацией

Прежде чем просить переделать — попроси воспроизвести условия:

Прежде чем переделывать — перечисли все ограничения и требования,
которые я задал в этом диалоге.

Это проверяет, не "заморозила" ли модель неправильный образ задачи. Если список неполный или неточный — ты видишь конфабуляцию до того, как она попала в результат. Особенно ценно в длинных диалогах, где требования накапливались постепенно.


🔗

Ресурсы

Название работы: Honest Lying: Understanding Memory Confabulation in Reflexive Agents

Авторы: Prakhar Dixit, Sadia Kamal, Tim Oates

Университет: University of Maryland Baltimore County (UMBC)

Preprint: май 2026

Связанные работы: Reflexion (Shinn et al., 2023), ExpeL (Zhao et al., 2024)


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

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

Обнаружено: когда модель итерирует и слышит в ответ 'неправильно, переделай' — она не ищет реальную причину провала. Она её придумывает. Уверенно. В одном эксперименте агент 14 раз подряд искал не тот объект, потому что сам себе написал неверный 'урок' после первой попытки — и неукоснительно ему следовал. Заземлённая рефлексия (Grounded Reflection) позволяет вырвать модель из петли — когда она раз за разом переделывает одно и то же, не приближаясь к результату. Три блока вместо 'переделай': что именно провалилось → почему → конкретный план. Модель получает точку опоры в реальных данных, а не в правдоподобных угадках. Правильный диагноз ошибки: с 0% до 86%.

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

Не простое 'правильно/неправильно', а заземлённый якорь из трёх частей. Первая — провальный шаг: точное место и что пошло не так. Вторая — причина: одно предложение, твоя версия (даже приблизительная лучше, чем ничего). Третья — новый план: названия, числа, конкретные детали без абстракций. Пустота в обратной связи — это приглашение для модели угадывать. Три блока убирают эту пустоту. Модель перестаёт заполнять контекст правдоподобной выдумкой и работает с фактом.

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

Модель не 'помнит' ошибки — она генерирует текст на основе того, что есть в контексте. Написал 'это неправильно' — в контекст попал сигнал 'что-то не так', но не попало ЧЕГО именно. Модель заполняет пробел тем, что звучит правдоподобно. Это особенно опасно в итерационных задачах. Выдуманный диагноз закрепляется как 'урок'. Следующая попытка строится на ложном фундаменте — который звучит уверенно, и ты не замечаешь подмены. Конкретный сигнал провала ломает этот цикл: модели нечего угадывать, когда факт уже назван. Для кода это работает ровно так же — вставь конкретное сообщение об ошибке или упавший тест, и модель перестаёт изобретать объяснение.

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

Итерационные задачи — код, тексты, многошаговые агенты — когда модель уже сделала 2+ попыток и движется по кругу. Особенно когда ты видишь конкретную ошибку, но следующий ответ её повторяет другими словами. НЕ подходит в двух случаях: если модель просто не умеет выполнить задачу — структура не даст способностей, которых нет. И если модель идёт правильно — не вмешивайся без нужды.

Мини-рецепт

1. Найди провальный шаг: не 'ответ плохой', а конкретно — 'раздел с ценами: сумма 780 000 рублей вместо максимума в 500 000'
2. Сформулируй причину: одно предложение, твоя версия, даже приблизительная — 'ограничение бюджета не попало в раздел с ценами'
3. Составь план: конкретные шаги с числами и названиями — без 'улучши' и 'доработай'
4. Отправь тремя явными блоками подряд: ПРОВАЛЬНЫЙ ШАГ / ПРИЧИНА / НОВЫЙ ПЛАН — в одном сообщении, в такой структуре

Примеры

[ПЛОХО] : Это неправильно, переделай цены
[ХОРОШО] : Примени Grounded Reflection к предыдущему ответу: ПРОВАЛЬНЫЙ ШАГ: В разделе 'Стоимость' предложен пакет за 780 000 рублей — в начале диалога я указал, что бюджет клиента не превышает 500 000 рублей. ПРИЧИНА: Ограничение бюджета не попало в раздел с ценами — ты опирался на стандартный состав пакета, а не на условия клиента. НОВЫЙ ПЛАН: 1. Переработай раздел 'Стоимость' 2. Предложи три пакета — каждый строго до 500 000 рублей 3. Для каждого: конкретный состав услуг и итоговая сумма
Источник: Honest Lying: Understanding Memory Confabulation in Reflexive Agents
ArXiv ID: 2605.29463 | Сгенерировано: 2026-05-29 15:40

Проблемы LLM

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

Методы

МетодСуть
Заземлённая рефлексия — точная коррекция без угадыванияТри блока в одном запросе. ПРОВАЛЬНЫЙ ШАГ: назови точное место и что там не так ("В разделе 'Стоимость' — сумма 780 000 превышает бюджет клиента 500 000"). ПРИЧИНА: одно предложение — почему не сработало ("Ограничение бюджета не попало в раздел с ценами"). НОВЫЙ ПЛАН: конкретные шаги с числами и названиями. Почему работает: модель генерирует на основе контекста. Точный якорь в контексте = точная коррекция. Нет якоря = модель угадывает. Когда не работает: ты сам не знаешь что именно сломалось; модель не умеет выполнить задачу в принципе

Тезисы

ТезисКомментарий
Ложный диагноз усиливается с каждой итерациейМодель не помнит ошибки — она строит каждый ответ из того, что есть в контексте. Написала себе неверную причину после первой попытки — теперь эта причина в контексте. Следующая попытка строится на ней. Цикл замыкается. Чем больше итераций без конкретной обратной связи, тем глубже уходит в ложную ветку. Применяй: в многошаговых задачах точная обратная связь важнее на ранних итерациях — пробел заполняется быстро
📖 Простыми словами

Honest Lying: Understanding Memory Confabulation in ReflexiveAgents

arXiv: 2605.29463

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

Это как если бы ты попросил пьяного друга объяснить, почему он уронил торт, а тот на ходу выдумал историю про внезапное землетрясение. Формально объяснение есть, но оно не имеет ничего общего с реальностью. Самое паршивое, что в следующий раз друг будет обходить «сейсмически опасные зоны» в квартире, хотя проблема была в его координации. Модель попадает в самовоспроизводящийся цикл ошибки: она лечит несуществующую болезнь, игнорируя реальный провал, и в итоге просто ходит по кругу.

В исследовании это разобрали на методе reflexive agents — когда бот после каждой попытки пишет себе «урок на будущее». Выяснилось, что в 10 из 15 случаев эти уроки — полная чушь. Например, если ты просишь пересчитать смету, а модель снова выдает оверпрайс, она может заявить: «Я поняла, проблема в шрифте заголовка». Она искренне считает, что исправила ситуацию, поменяв шрифт, хотя цифры остались теми же. Это не разовая галлюцинация, а системный сбой логики, где ложный вывод становится фундаментом для всех последующих действий.

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

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

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

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

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