3,583 papers
arXiv:2610.15738 79 11 окт. 2026 г. FREE

Status Sentence: одно предложение о статусе отклонённых вариантов вместо молчаливого показа истории

КЛЮЧЕВАЯ СУТЬ
28–63% итераций в цикле «модель предлагает, мы проверяем» уходят на варианты, которые уже пробовали и отклонили. Метод Status Sentence позволяет убрать большую часть таких повторов одним предложением перед вопросом. Фишка: отклонённое — это собственные любимцы модели, и сам провал не меняет её мнения. Поэтому мало просто показать историю. Нужно прямо назвать статус вариантов списком ID: «эти уже в работе или уже отклонены: A3, A7, A12». Результат: повторы снижаются у всех трёх протестированных моделей, без дообучения и сложной обвязки.
Адаптировать под запрос
⚡

TL;DR

Status Sentence — приём для циклов «модель предлагает → проверяем → записываем результат → просим предложить следующее». Перед вопросом добавляется одно предложение, которое прямо называет статус вариантов: «эти уже в работе или уже пробовались и отклонены». Список таких вариантов не просто лежит в истории, он назван отдельной строкой с их ID.

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

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

🔬

Схема метода

ШАГ 1: Предложить вариант → модель называет один вариант из каталога
ШАГ 2: Проверить → результат записан в историю (как обычно)
ШАГ 3: Собрать ID уже принятых и отклонённых вариантов → один список
ШАГ 4: Перед вопросом вставить предложение статуса со списком ID
        → «Эти варианты уже в текущей версии или уже пробовались и отклонены: {ID}.
           Эта заметка фиксирует их статус.»
ШАГ 5: Задать вопрос «что дальше?» → модель выбирает из оставшихся

Всё это работает в одном промпте, на каждой итерации заново.

🚀

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

Задача: Продавец на Ozon улучшает карточку товара (беспроводные наушники). Он составил пронумерованный каталог из 15 правок (A/B-тесты): первое фото на белом фоне, цена с «зачёркнутой», видео в слайдере, инфографика с шумоподавлением и так далее. Уже проверили три правки: A3, A7 и A12 не дали роста конверсии. Он просит ИИ выбирать следующую правку. Раньше ИИ снова советовал A7 («инфографика — это же главное!»).

Промпт:

Ты помогаешь улучшать конверсию карточки товара «Беспроводные наушники Sonic X» на Ozon.

КАТАЛОГ ПРАВОК (выбираем строго из него):
A1 — первое фото на белом фоне
A2 — фото в использовании (человек на пробежке)
A3 — зачёркнутая «старая» цена
A4 — видео 15 сек в слайдере
A5 — блок «Сравнение с AirPods» в описании
A6 — заголовок с ключом «шумоподавление»
A7 — инфографика с характеристиками на 2-м фото
A8 — отзывы с фото вынесены в начало
A9 — бейдж «Хит продаж»
A10 — набор «наушники + чехол»
A11 — размерная сетка вкладышей
A12 — гарантия 2 года в заголовке
A13 — акция «второй товар −20%»
A14 — Rich-контент: история бренда
A15 — упаковка в кадре

ИСТОРИЯ (последние попытки):
- A3 → конверсия 3.1% → 3.0%, не оставлена
- A7 → 3.1% → 3.1%, не оставлена
- A12 → 3.1% → 2.9%, не оставлена
- A9 → 3.1% → 3.4%, оставлена
Текущая версия карточки: базовая + A9. Конверсия: 3.4%.

Следующие правки уже в текущей версии или уже пробовались с ней и были отклонены: A9, A3, A7, A12. Эта заметка фиксирует их статус.

Назови ОДНУ следующую правку из каталога (только ID и название) и в одном предложении объясни, почему она может сработать.

Результат: Модель назовёт одну правку из оставшихся (A1, A2, A4–A6, A8, A10, A11, A13–A15) с коротким обоснованием. Повтор A3, A7 или A12 становится заметно реже, чем при том же промпте, где отклонённое лишь упомянуто в истории.

🧠

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

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

Сильная сторона: Модель хорошо реагирует на прямое утверждение статуса: «это уже в работе или отклонено». Это не команда, а факт о состоянии мира, и модель обновляет по нему выбор. Авторы сравнили предложение статуса с нейтральным списком тех же ID («для справки, в промпте есть такие ID…»). Разница получилась заметной, а добавка слов «не предлагай» дала малое. Значит, работает не грозный тон, а ясное сообщение статуса.

Как метод использует это: Он превращает «показать историю и надеяться» в «назвать статус прямо». Рычаги управления:

  • Список ID в самом предложении. Не полагайся, что модель сама вытащит отклонённое из истории.
  • Позиция — прямо перед вопросом. Так проверяли авторы.
  • «Не предлагай» — добавляй по желанию. Эффект малый, но вреда не показал.
  • Длина записей о провалах. Удаление описаний ошибок из истории снижало повторы, но эффект сильно зависит от модели. Если повторы всё равно идут, проверь на своей модели версию с короткими записями.
  • Каталог с ID — чем точнее идентификатор варианта, тем проще проверять повторы и тем яснее статус-предложение.
📋

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

{описание_задачи}

КАТАЛОГ ВАРИАНТОВ (выбираем строго из него):
{каталог_с_ID}

ИСТОРИЯ ПОПЫТОК:
{история: вариант → результат → оставлен/не оставлен}

Текущая версия: {текущая_версия}. Результат: {текущая_метрика}.

Следующие варианты уже в текущей версии или уже пробовались с ней и были отклонены: {список_ID}. Эта заметка фиксирует их статус.

Назови ОДИН следующий вариант из каталога (ID и название) и в одном предложении объясни, почему он может сработать.

Что подставлять: - {каталог_с_ID} — закрытый список вариантов с короткими кодами: правки, гипотезы, шаги. - {история} — одна строка на попытку, без длинных разборов. - {список_ID} — все варианты, которые уже в версии или уже отклонены именно для текущей версии.

Варианты формулировок из статьи (проверялись отдельно):

  • Со запретом (P): то же предложение + «Не предлагай ни один из них».
  • Исходная (E): «НЕ ПРЕДЛАГАЙ ни одну из следующих правок. Они уже в текущей версии или уже пробовались с ней и были отклонены: …»

Обе сильнее нейтрального списка ID. Прирост запрета над чистым статусом небольшой и статистически не подтвердился.

⚠️

Ограничения

⚠️ Проверено на узкой задаче: Один закрытый каталог из 40 правок для GUI-агента и точное сопоставление по названию правки. Как это работает со свободным текстом («придумай новый заголовок»), статья не проверяла.

⚠️ Не панацея: Статус-предложение снижает повторы, но не убирает их. Если важна нулевая доля повторов, нужна внешняя проверка, например фильтр, который отбрасывает уже испробованные ID.

⚠️ Эффект истории зависит от модели: Обычная история у двух моделей снижала повторы, а у третьей повышала. Не считай, что «история в контексте» всегда помогает. Проверяй на своей модели.

⚠️ Эффект удаления описаний провалов зависит от модели: Удаление текста ошибок снижало повторы в среднем, но у одной модели это связано с содержанием ошибок, у другой — в основном с объёмом текста. Универсального совета «сокращай записи» нет.

⚠️ Модели не фронтирные: Тестировали открытые модели среднего размера (Gemma-4, Mistral-Small-3.2, Qwen3-VL-32B). На ChatGPT, Claude и Gemini результат может отличаться.

⚠️ Часть деталей недоступна: Текст статьи в материале обрезан. Выводы о фразе со статусом и добавке-запрете взяты из резюме и введения, а разделы с подробными таблицами по ним не были доступны.

🔍

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

Идея была простой: проверить, избегает ли модель отклонённого не в лабораторном тесте, а в состояниях, которые создаёт её собственный цикл. Три открытые модели по 30 итераций улучшали GUI-агента: каждый раз называли одну правку из каталога в 40 пунктов. Всего прогнали 36 циклов (3 модели × 2 варианта оформления каталога × 2 вида истории × 3 повтора). Правка принималась, если точность росла больше чем на 2 пункта. Так как у каждой правки есть точное имя, повтор определяется без догадок.

Сначала сделали «чистый» тест: показали модели список отклонённых правок, подобранный случайно, и её фаворит в нём был всего один. Две модели вообще не повторили ни одной из показанных, а третья повторила лишь изредка. В своих циклах те же модели повторяли отклонённое заметно чаще: разрыв в среднем 0,32. Доля итераций, потраченных на уже проверенные пары «версия + правка», составила 28–63%.

Дальше авторы разбирали причину. Они пересобирали состояния цикла и убирали историю целиком. Модели всё равно давали отклонённым правкам больше вероятности, чем при равномерном выборе. Эти правки — собственные прошлые выборы модели, и она к ним тянется. Затем на свежих состояниях меняли отдельно «доказательства провала» и «сам факт отклонения». Первое дало модельно-зависимые эффекты. Второе — предложение статуса — снизило повторы у всех моделей на 0,16 относительно нейтрального списка тех же ID. Всё это стоило $4,88 за платные вызовы, эксперименты зарегистрировали заранее.

Что удивило: история иногда вредит — у Mistral повторы с ней выросли. И ещё: прямой запрет добавил немногим больше, чем простое сообщение статуса.

💡

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

🔧 Техника: убрать «ожидание» из промпта → проверить на своём цикле

Прежде чем внедрять, посмотри свой журнал итераций и посчитай, как часто модель предлагает уже отклонённое. Если повторов нет, статус-предложение не нужно. Если есть, вставь его и сравни доли на 10–20 итерациях.

Экстраполяция (достройка, в статье не проверялась): агент с журналом отклонённых гипотез

Для агента, который чинит баг (Claude Code, Cursor), заведи в файле инструкций раздел «Уже пробовали». Перед каждой новой попыткой агент перечитывает его и говорит статус:

Перед каждой новой гипотезой:
1. Выпиши ID всех гипотез из раздела «Уже пробовали».
2. Напиши: «Следующие гипотезы уже проверены и отклонены: {ID}. Эта заметка фиксирует их статус.»
3. Предложи гипотезу, которой нет в этом списке.

Работает ли это на агентах так же, как на каталоге из 40 правок, нужно проверять самому.

🔗

Ресурсы

  • Работа: Visible but Not Avoided: State-Dependent Re-Proposal of Rejected Candidates in Catalog-Based LLM Optimization Loops
  • Авторы: Jianlin Chen, Wenhui Chen, Chi Man Vong (университеты в тексте не указаны)
  • Упомянутые работы: OPRO (Yang et al., 2024), Meta-Harness (Lee et al., 2026), Gumaan (2026) о «do not repeat»
  • Связанная тема: табу-списки в классическом поиске (Glover, 1986)

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

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

28–63% итераций в цикле «модель предлагает, мы проверяем» уходят на варианты, которые уже пробовали и отклонили. Метод Status Sentence позволяет убрать большую часть таких повторов одним предложением перед вопросом. Фишка: отклонённое — это собственные любимцы модели, и сам провал не меняет её мнения. Поэтому мало просто показать историю. Нужно прямо назвать статус вариантов списком ID: «эти уже в работе или уже отклонены: A3, A7, A12». Результат: повторы снижаются у всех трёх протестированных моделей, без дообучения и сложной обвязки.

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

Процесс на каждой итерации: собери ID принятых и отклонённых вариантов в один список и назови их статус отдельным предложением прямо перед вопросом. Шаги такие: модель предлагает вариант, ты проверяешь, результат идёт в историю. Потом ты собираешь все ID, которые уже в версии или уже отклонены. Эти ID ты называешь статусом. Только после этого спрашиваешь «что дальше?». Это не приказ, а сообщение о состоянии дел. Как табличка «Столик занят» вместо длинного объяснения, кто там сидел и чем всё кончилось. Вся процедура идёт в одном промпте и повторяется заново на каждом шаге.

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

Модель читает провал как строку в контексте, а не как повод передумать. Она сама выбрала этот вариант раньше, и он всё ещё кажется ей хорошим. В «чистом» тесте всё гладко: там отклонённое подобрано случайно, и оно модели безразлично. В реальном цикле отклонённое — её собственные фавориты. Поэтому нужен не больший объём истории, а прямое утверждение статуса: «это уже отклонено». Жесть: обычная история у двух моделей снижала повторы, а у третьей даже увеличила их. Авторы сравнили статус-предложение с нейтральной фразой «для справки, в промпте есть такие ID». Разница получилась заметной. Добавка «Не предлагай ни один из них» дала лишь небольшой прирост, и он статистически не подтвердился. Значит, работает не грозный тон, а ясное сообщение статуса.

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

Циклы улучшения с закрытым каталогом вариантов → правки карточек товара, гипотезы для проверки, шаги в настройке системы, особенно когда модель упорно возвращается к одному и тому же отклонённому варианту. НЕ подходит, если нужен нулевой процент повторов: метод снижает их, но не убирает. Тогда добавь внешний фильтр, который отбрасывает уже испробованные ID. Для свободного текста («придумай новый заголовок») метод не проверяли: тестировали только каталог из 40 правок с точным сопоставлением по названию.

Мини-рецепт

1. Заведи каталог с кодами: закрытый список вариантов, у каждого короткий ID (A1, A2, ...).
2. Веди историю коротко: одна строка на попытку: вариант, результат, оставлен или нет. Без длинных разборов ошибок.
3. Собери чёрный список: все ID, которые уже в текущей версии или отклонены именно для неё.
4. Скажи статус прямо: <статус>Эти варианты уже в текущей версии или уже пробовались с ней и были отклонены: {ID}. Эта заметка фиксирует их статус.
5. Поставь это прямо перед вопросом: именно такую позицию проверяли авторы.
6. По желанию добавь «Не предлагай ни один из них»: вреда не показало, пользы немного.
7. Не доверяй слепо: если повторы всё равно лезут, проверь версию с короткими записями о провалах. Эффект сильно зависит от модели. И поставь фильтр по ID, если повторы недопустимы.

Примеры

[ПЛОХО] : Вот каталог правок A1-A15 и история: A3, A7 и A12 не сработали. Какую правку попробовать следующей?
[ХОРОШО] : Каталог правок A1-A15: ... История: A3 → конверсия (доля посетителей, купивших товар) 3.1% → 3.0%, не оставлена; A7 → 3.1% → 3.1%, не оставлена; A12 → 3.1% → 2.9%, не оставлена; A9 → 3.1% → 3.4%, оставлена. Текущая версия: базовая + A9, конверсия 3.4%. Следующие правки уже в текущей версии или уже пробовались с ней и были отклонены: A9, A3, A7, A12. Эта заметка фиксирует их статус. Назови ОДНУ следующую правку из каталога (ID и название) и в одном предложении объясни, почему она может сработать. В первом случае модель снова предложит инфографику A7: «это же главное!». Во втором выбор сузится до оставшихся 11 правок. Фишка в одном: отклонённые ID названы отдельной строкой со статусом, а не лежат где-то в истории.
Источник: Visible but Not Avoided: State-Dependent Re-Proposal of Rejected Candidates in Catalog-Based LLM Optimization Loops
ArXiv ID: 2610.15738 | Сгенерировано: 2026-10-14 06:00

Проблемы LLM

ПроблемаСутьКак обойти
Модель возвращается к своим же отклонённым вариантам, хотя история перед глазамиЦикл: модель предлагает вариант, ты проверяешь, записываешь итог в историю, просишь следующий. Вариант не сработал, и ты это записал. На следующем шаге модель снова предлагает его. Причина: отклонённый вариант — её собственный прошлый выбор, и он всё ещё кажется ей удачным. Запись о провале для неё просто строка в контексте, а не повод передумать. Заметная доля шагов уходит на уже проверенное. Бывает, что от добавления истории повторов становится даже больше. Это касается любых циклов: гипотезы, правки, шаги планаНе полагайся на историю как на запрет. Перед вопросом добавь одно предложение со статусом и списком ID отклонённых вариантов (см. метод ниже). Если нужен ноль повторов, добавь проверку вне модели. Например, отбрасывай ответ, если ID уже есть в списке испробованных, и проси ответ заново

Методы

МетодСуть
Предложение со статусом — меньше повторов в циклах предложенийПеред вопросом «что дальше?» вставь одно предложение. В нём назови все варианты, которые уже приняты или уже отклонены, списком ID. Затем пусть модель выбирает из остального. Эти варианты уже в текущей версии или уже пробовались и были отклонены: A3, A7, A9, A12. Эта заметка фиксирует их статус. Пересобирай список на каждой итерации. Почему работает: Это не команда, а факт о состоянии мира. Модель обновляет по нему выбор. Нейтральный список тех же ID («для справки, есть такие ID») помогает заметно слабее. Значит, важна ясная формулировка статуса, а не строгий тон. Добавка «Не предлагай ни один из них» даёт лишь малый прирост, но и вреда от неё нет. Список ID должен быть прямо в предложении, а не только в истории. Предложение ставь сразу перед вопросом. Когда применять: закрытый каталог вариантов с короткими ID, много итераций, повторы мешают. Когда не работает: повторы снижаются, но не исчезают. Для свободного текста («придумай новый заголовок») приём не проверен, там сложно сверять повторы по ID. Эффект проверен на моделях среднего размера. На своей модели проверь отдельно. Если повторы остаются, попробуй сократить записи о провалах в истории до одной короткой строки. Эффект от этого зависит от модели
📖 Простыми словами

Visible but Not Avoided: State-Dependent Re-Proposal of Rejected Candidates in Catalog-BasedLLMOptimization Loops

arXiv: 2610.15738

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

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

Лечится этот маразм элементарно: приём называется Status Sentence. Вместо того чтобы надеяться, что модель сама сделает выводы из простыни переписки, ты перед финальным вопросом вбиваешь одну жёсткую строку со статусом. Буквально: «Варианты A3, A7 и A12 уже проверены и отклонены, трогать их нельзя». Когда забракованные гипотезы названы прямо и вынесены отдельным списком с конкретными ID, модель перестаёт романтизировать свой старый выбор и наконец переключает мозги.

Исследовали это на товарных карточках маркетплейсов, но принцип универсален. Тот же баг вылезает в любом LLM-цикле оптимизации: генерация кода, подбор тем для контента, A/B-тесты интерфейсов или закупка рекламы. Везде, где ты просишь нейронку «предложи что-нибудь ещё», она без прямого пинка начнёт пережёвывать собственный мусор.

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

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

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

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