TL;DR
Исследование проверяет популярную схему «агент улучшается по ходу работы». Он делает попытку, получает оценку, кладёт пару «попытка + оценка» в контекст и пробует снова. Выяснилось, что улучшение даёт сам факт показа прошлых попыток, а не оценки к ним. Модель подражает тому, что видит в контексте. Это поведение знакомо по обычным примерам в промпте (ICL, in-context learning), а не по обучению с подкреплением.
Если в оценках поставить всё наоборот, подставить случайные числа или убрать их совсем, кривая улучшения почти не меняется. Модель оценку читает, но влияет она слабо: примерно на 14% от эффекта самих попыток. Хуже того, показанная неудачная попытка повторяется чаще, чем без показа. Явная инструкция «не повторяй это» и пометка «всё провал» повтор почти не снижают. Так выглядит ситуация, когда агент в третий раз подряд делает то же самое и «исправляет» то же место теми же словами.
Что реально меняет поведение: позиция (попытка в конце контекста повторяется в разы чаще), релевантность задаче (попытки из чужой задачи хуже), форма (краткие выводы вместо сырых попыток убирают тягу к повтору). Содержание попытки (правильная она или испорчена) почти не важно.
Схема находок
ПОКАЗАЛИ попытку в контексте → модель её повторяет (даже провальную)
ИЗМЕНИЛИ оценку (верная / перевёрнутая / случайная / нет) → почти без разницы
ДОБАВИЛИ «не повторяй» или «всё провал» → повтор почти не падает
ПЕРЕСТАВИЛИ попытку в конец → повтор вырос в разы
ЗАМЕНИЛИ сырые попытки выводами (Reflexion) или чужими задачами → повтор исчез
Это находка, а не пошаговый метод. Практические выводы — в разделе «Шаблон промпта».
Пример применения
Задача: Вы просите Claude Code починить интеграцию с ЮKassa: вебхук приходит, а статус заказа не обновляется. Три патча подряд не сработали. Обычно мы оставляем всю переписку в чате, и каждая новая попытка получается вариацией предыдущей. Лучше открыть чистую сессию и дать краткий разбор, а не лог неудач.
Промпт:
Новая сессия. Задача: после вебхука ЮKassa (payment.succeeded) статус заказа
в нашей БД остаётся "pending". Стек: Django, Celery, PostgreSQL.
Уже проверено, это НЕ причина (выводы, без кода патчей):
- Подпись вебхука проходит валидацию: проверено логами.
- Эндпоинт отвечает 200 за <1 сек.
- Задача Celery ставится в очередь: видна в Flower.
Не доказано, но не проверялось:
- Что происходит внутри Celery-задачи после постановки.
- Нет ли гонки между созданием заказа и приходом вебхука.
Предложи 3 принципиально разные гипотезы (разные слои системы),
для каждой — как проверить за 5 минут. Код не пиши, пока я не выберу гипотезу.
Результат: Модель выдаст три гипотезы из разных слоёв (очередь, база, порядок событий) и способ быстрой проверки каждой. Старые неудачные патчи в контексте отсутствуют, поэтому заходов «в то же место» должно быть меньше. Код она не пишет, пока вы не выберете гипотезу.
Почему это работает
Слабость. Модель в контексте не «извлекает урок» из оценки, а продолжает паттерн. Всё, что лежит перед ней, она воспринимает как образец: форму, структуру, ход решения. Провальная попытка тоже образец. Пометка «0 баллов» или фраза «не повторяй» перебивает силу образца слабо.
Сильная сторона. Модель хорошо работает с краткими выводами на естественном языке и с релевантными примерами. Сводка вроде «вот что не причина» не даёт ей готового текста для копирования, но сохраняет информацию. В эксперименте именно такая форма (Reflexion) убрала повтор.
Рычаги управления: - Что кладёте в контекст. Сырые неудачные попытки → копирование. Выводы без кода → свобода для нового решения. - Порядок. Самое важное и лучшее ставьте в конец: оно воспроизводится заметно чаще. Образец, который не хотите видеть повторённым, держите подальше от конца или уберите. - Релевантность. Примеры из той же задачи сильнее влияют на результат. Чужая задача дала худший результат. - Оценки и ярлыки. Не рассчитывайте, что «оценка 3/10» заставит модель избегать этой попытки.
Шаблон промпта
Авторы не предлагают готовый промпт. Ниже прикладная сборка по условию Reflexion из статьи: сводка вместо сырых попыток. Сама формулировка шаблона не проверялась.
Задача: {задача}
Что уже пробовали и к чему это привело (кратко, без кода/текста попыток):
- {попытка_1}: {результат_и_вывод}
- {попытка_2}: {результат_и_вывод}
Что мы теперь знаем (факты, не гипотезы):
- {факт_1}
- {факт_2}
Лучший образец результата (если есть — одна штука, ставим последним):
{лучший_образец}
Предложи {число} принципиально разных подходов.
Подходы должны отличаться по {ось_различия}, а не формулировками одного и того же.
Что подставлять:
- {попытка_N} — одно предложение: что сделали и что получилось.
- {факт_N} — проверенные ограничения и причины неудач.
- {лучший_образец} — только если хотите, чтобы модель двигалась в его сторону.
- {ось_различия} — слой системы, аудитория, структура, тон и так далее.
Ограничения
⚠️ Только прямая схема: проверена простая схема «сырые попытки + оценки подряд в контексте». Агенты со своей памятью, отбором и сводками изучены косвенно (через Reflexion).
⚠️ Малые и средние модели: основной эксперимент на одной модели среднего размера (9B). Другие модели тестировались на части опытов. Как ведут себя крупные флагманы, не показано.
⚠️ Задачи узкого типа: код и текстовая игра с научными заданиями. Тексты, дизайн, креатив не проверялись.
⚠️ Повтор не всегда плох: если нужно воспроизвести удачный образец (формат отчёта, стиль), тяга к копированию помогает. Вывод про вред относится к ситуации, когда нужен поиск нового решения.
⚠️ Оценка не нулевая: модель оценку читает и слегка двигается в «правильную» сторону. Эффект маленький, но он есть. Утверждать «оценки бесполезны» неверно.
⚠️ Нет проверенных формул: шаблон выше собран из условий эксперимента, а не взят из статьи. Одна формулировка «не повторяй» провалилась, но другие формулировки могут сработать лучше.
⚠️ Текст обрезан: в предоставленном фрагменте нет конца раздела 6 и обсуждения. Выводы опираются на аннотацию, введение, таблицы 1–5 и начало раздела 6.
Как исследовали
Исследователи взяли простейшую версию «обучения в контексте»: модель делает попытку, получает оценку, пара добавляется в контекст. Задачи брали из кода (HumanEval+, MBPP+) и из текстового мира ScienceWorld, где агент по шагам решает научные задания. Модели — шесть, от открытых 4–9B до GPT-5-mini и Gemini Flash-Lite. Основные опыты шли на Qwen-3.5-9B, 40 задач, 3 запуска.
Сначала меняли только оценки: настоящие, перевёрнутые, случайные, без них. Кривая улучшения почти не менялась. Из 360 пар «модель + задача» только 14 (3,9%) реагировали на настоящую оценку. В 213 парах (59%) улучшения не было вообще. Потом измерили, насколько оценка меняет вероятность повтора попытки. Вышло ~14% от эффекта самого показа. Неожиданность: когда показали попытки вообще без оценок, худшая повторялась чаще лучшей. Модель копирует, а не выбирает.
Дальше проверяли, что действительно влияет. Позиция сильнее всего: перенос лучшей попытки в конец поднял её повтор с 3,0% до 13,2%. Попытка «всё провал» и явное «не повторяй» повтор не убрали (около 27–30% против 16% без памяти). Сводки Reflexion и чужие задачи убрали (около 12–13%, ниже исходного уровня). Из таблицы 5: перемешанные и испорченные попытки дали такой же результат, как настоящие, а чужие задачи заметно хуже. Работает не смысл попытки, а похожесть на задачу и форма.
Адаптации и экстраполяции
💡 Адаптация для итераций с текстом: вы просите ИИ переписать лендинг, а он показывает вариации одного и того же. Не вставляйте в чат все прошлые версии с «не нравится». Вставьте выводы.
Версии, которые не подошли, и почему (выводы, без текста): - Версия про «экономию времени»: слишком общая, не про наш ЦА. - Версия с цифрами: не вызывает доверия без источников. Нужна версия с другой структурой: начни с кейса клиента, а не с обещания.
🔧 Техника: образец в конец → управляемое копирование. Нужен определённый формат? Поставьте лучший образец последним в контексте, после всех инструкций. Нужен новый подход? Уберите образцы из конца и дайте только описание требований.
🔧 Техника: новая сессия вместо длинной переписки. Если чат уже содержит четыре неудачные попытки, перенесите краткие выводы в чистую сессию. Это следует из вывода статьи про повтор и помощь сводок, а сам приём авторы не проверяли.
Ресурсы
- Do LLMs Learn from Rewards in Context? Rethinking the role of reward in In-Context Reinforcement Learning — Minchan Kwon, Seunghee Koh, Sunghyun Baek, Minsung Bae, Junmo Kim, KAIST (NeurIPS 2026).
- Отсылки: Min et al. — роль меток в ICL; Reflexion (Shinn et al.); ExpeL; бенчмарки HumanEval+, MBPP+, ScienceWorld.
