3,583 papers
arXiv:2610.27465 71 20 окт. 2026 г. FREE

Правило двух предусловий: когда агенту можно менять себя без человека

КЛЮЧЕВАЯ СУТЬ
LLM-судья выдал 0.250 во всех 40 прогонах. Ни одной ошибки, оценка выглядит уверенно, а судья при этом мёртв. Метод позволяет решить, когда агент может сам править свой промпт без человека. Фишка: доверие к судье не берут на веру, его согласие с эталоном меряют числом. Плюс старая версия лежит копией, и откат становится простой заменой текста. Не выполнено одно из двух — правку пускает человек.
Адаптировать под запрос
⚡

TL;DR

Исследование предлагает правило для систем, где агент сам правит свой промпт, инструменты и навыки. Платформа читает неудачные диалоги агента, предлагает правку, а LLM-судья её одобряет. Правка идёт в работу без человека только при двух условиях. Первое: старая версия сохранена и откат — простая замена текста. Второе: согласие судьи с эталонной проверкой измерено (программа или человек). Если одно из двух не выполнено, правку пускает человек.

Главная находка касается судьи. Судья может молча сломаться. В одной из настроек он выдавал одну и ту же оценку 0.250 во всех 40 прогонах и не реагировал на то, что должен оценивать. Ошибки при этом нет, оценка выглядит уверенной. Такой судья одобрит что угодно. Вторая находка про откат: сохранённая копия возвращает старое поведение точно, а «сгенерируй обратную правку» не возвращает. К тому же пока правка жила в работе, она изменила исход у 17% задач сверх обычного разброса. Откат этого уже не исправит.

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

🔬

Схема метода

ШАГ 1: Измерить силу судьи → согласие с эталоном на 20+ задачах (от −1 до 1)
        + тест «удали сигнал»: убрал свойство из входа — оценка изменилась?
        + тест «проверь гарантии»: настройки запроса реально сработали?
ШАГ 2: Проверить обратимость → старая версия сохранена? (да = откат записью)
ШАГ 3: Решение → ДОПУСТИТЬ (оба условия) / ОТКЛОНИТЬ (правка хуже) /
        ОТКАЗАТЬСЯ (что-то не измерено или старая версия потеряна → человек)

Шаги 1–2 можно делать в одном чате или в отдельных запросах. Шаг 3 — решение процесса, не промпта.

🚀

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

Сильная зона метода: правки текстов инструкций (промпты, навыки, описания инструментов), где старая версия легко сохраняется и есть эталон проверки. Дообучение моделей и подобные вещи не берём.

Задача: Команда поддержки маркетплейса, как Ozon или Wildberries, настроила автоцикл: LLM читает провальные диалоги бота, предлагает правку промпта, LLM-судья одобряет, правка выходит в работу. Типичная проблема — бот отменяет заказы без подтверждения. Перед запуском цикла нужно проверить, что судье можно верить.

Промпт:

Ниже промпт LLM-судьи, который решает, одобрять ли правки в промпте бота поддержки маркетплейса. Проведи аудит судьи.

<промпт_судьи>
Оцени диалог от 0 до 1. Поощряй: бот просит подтверждение перед отменой заказа. Штрафуй: бот отменяет заказ без подтверждения. Выведи только число.


Сделай:
1. ТЕСТ «УДАЛИ СИГНАЛ». Напиши 6 пар диалогов: в первом бот подтверждает отмену, во втором — те же реплики, но без подтверждения. Для каждой пары укажи, какую оценку ДОЛЖЕН поставить хороший судья.
2. ТЕСТ «ПОСТОЯННЫЙ СУДЬЯ». Объясни, как проверить, что судья не выдаёт одно и то же число на всех диалогах.
3. ПРОВЕРЯЕМАЯ ГРАНИЦА. Перепиши критерий как проверяемое условие вида «если бот отменил заказ без подтверждения — оценка не выше 0.10».
4. Дай таблицу для ручной разметки: 20 диалогов, колонки «вердикт судьи», «вердикт человека-эксперта». Покажи, как посчитать согласие и что делать, если судья всегда говорит «да».

Результат: Модель выдаст набор парных диалогов с ожидаемыми оценками, которые вы прогоните через реального судью. Если оценки в паре совпадают, судья «пустой». Затем придёт переписанный критерий с жёсткой границей и таблица для разметки. Через неё вы посчитаете, насколько судья согласен с человеком, и увидите, не говорит ли он «да» на всё подряд.

🧠

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

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

Сильная сторона. Модель хорошо следует проверяемым условиям вроде «если одна категория больше 50% — не выше 0.10». Такая формулировка сработала во всех 16 проверенных настройках. На исходной формулировке «поощряй/штрафуй» — ни разу. И модель легко делает парные тесты: берёт диалог и ломает в нём одно свойство.

Как метод использует это. Тест «удали сигнал» превращает невидимую поломку в видимую: убрал свойство — оценка не изменилась — судья мёртв. Копия старой версии превращает откат из «ещё одной генерации, которую снова надо проверить» в простую замену текста.

Рычаги управления: - Размер эталонной выборки — больше задач дают устойчивую оценку согласия. На 20 задачах доверительный интервал у судьи с согласием 0.70 был от 0.36 до 1.00. - Порог согласия — авторы его не фиксируют. Он зависит от цены ошибочного допуска и сдвигается примерно на ±0.15 в зависимости от числа прогонов судьи на правку. Для рискованных правок ставьте выше. - Число прогонов судьи на правку — усреднение по нескольким прогонам меняет порог. Калибруйте на своих данных. - Критерий оценки — формулируйте как жёсткое условие с числом, а не как «поощряй/штрафуй».

📋

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

Аудит судьи перед запуском цикла самоулучшения:

Ты проводишь аудит LLM-судьи, который одобряет изменения в {что_правим: промпте / описании инструмента / навыке} агента для задачи {задача_агента}.

<промпт_судьи>
{вставь_промпт_судьи_целиком}


<свойство_которое_судья_должен_оценивать>
{например: «агент просит подтверждение перед необратимым действием»}


Сделай по шагам:

ШАГ 1 — Тест «удали сигнал»:
Напиши {число_пар} пар диалогов. В паре первый диалог содержит свойство, во втором оно убрано, остальное идентично. Для каждой пары укажи, какую оценку должен поставить исправный судья.

ШАГ 2 — Тест «постоянный судья»:
Опиши, как понять по результатам, что судья выдаёт одно число на всех входах. Какой разброс оценок считать тревожным?

ШАГ 3 — Проверяемая граница:
Перепиши критерий судьи так, чтобы он был проверяемым условием: «если {условие_по_числу_или_факту}, оценка не выше {порог}».

ШАГ 4 — Согласие с эталоном:
Дай таблицу для ручной разметки {число_диалогов} диалогов: вердикт судьи / вердикт эксперта. Скажи, как посчитать согласие (долю совпадений и коэффициент корреляции) и как заметить, что судья одобряет всё подряд.

ШАГ 5 — Решение:
По итогам выбери одно: ДОПУСТИТЬ автоматику / ОТКЛОНИТЬ / ОТКАЗАТЬСЯ (нужен человек). Укажи, чего не хватает для допуска.

Что подставлять: {что_правим} и {задача_агента} — ваш контекст. {число_пар} — от 6 до 10. {число_диалогов} — не меньше 20, лучше больше. В {условие_по_числу_или_факту} пишите то, что можно проверить глазами.

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

Вот шаблон аудита LLM-судьи. Адаптируй под мою задачу: [опиши агента и что он улучшает].
Задавай вопросы, чтобы заполнить поля.

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

LLM спросит, какое свойство должен оценивать судья, как выглядят хорошие и плохие диалоги и есть ли у вас эталонная разметка. Эти данные нужны, чтобы собрать парные тесты и таблицу согласия под вашу задачу, а не абстрактные.

⚠️

Ограничения

⚠️ Одна платформа, один бенчмарк: правило выведено на одной платформе и проверено на сценарном бенчмарке (авиа и ретейл), не в боевой эксплуатации. Результаты нужно перепроверять на своих задачах.

⚠️ Малая выборка: эффект «слабый судья выбирает худшие правки» получился в нужную сторону, но статистически не подтвердился. На 20 тестовых задачах разница тонет в шуме. Чтобы её увидеть, нужно около 220 задач.

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

⚠️ Нужен эталон: согласие мерят против надёжной проверки (программа или эксперт). Без неё σ не посчитать.

⚠️ Побочные эффекты не откатываются: пока правка работала, она изменила исход у 17% задач. Возврат правки это не исправляет. Выданный возврат денег или отправленное письмо нужно отслеживать на уровне инструментов.

⚠️ Частично проверено: на практике проверяли только правки промптов. Для инструментов, навыков и обновления весов выводы следуют из определений, но не из экспериментов.

🔍

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

Команда Uniphore построила платформу, где агенты правят сами себя по боевым следам. Сначала они проверили собственный фильтр разнообразия обучающих данных, который основан на LLM-судье. Прогнали 172 настройки по 10 запусков: 3 модели-судьи, 4 варианта промпта, 4 уровня дисбаланса. В развёрнутой настройке судья вернул 0.250 во всех 40 запусках и полностью игнорировал дисбаланс. Он вёл себя ровно так, как если бы про дисбаланс вообще не писали. Полный коллапс встретился в 9 из 37 конфигураций, все на самой маленькой модели. Две модели побольше на тех же входах дисбаланс видели.

Потом перешли к контролируемым опытам на τ²-bench (авиа-поддержка, 50 задач: 30 на обучение, 20 на проверку). Там одни и те же прогоны можно оценивать разными проверяющими. LLM-судья показал согласие с программной проверкой 0.70. Это намного выше нуля, но не идеал. Ошибки кластеровались: все 4 ложных допуска пришлись на одну задачу. Судья «одобряй всё» получил ровно 0 и при этом пропустил все 42 провальных прогона.

В третьем опыте проверяли откат. Сохранённая копия вернула поведение к уровню естественного шума. Три регенерированных отката остались заметно хуже исходного (падение на 0.16). Правки, пока были в работе, изменили исход у 17% задач. Задачи улетели и вверх (18), и вниз (20), так что в среднем эффект нулевой, а охват большой. Вывод для практики: средний балл «до/после» скрывает охват правки.

💡

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

🔧 Техника: версионирование в файле инструкций → откат без генерации

Перед любой автоправкой инструкций добавьте агенту правило. Например, в CLAUDE.md:

Перед изменением файлов инструкций (CLAUDE.md, промпты, навыки):
1. Скопируй текущую версию в /archive/{имя_файла}_{дата}.
2. Запиши в CHANGELOG, что меняешь и по какой причине.
3. Откат делай только копированием файла из /archive. Не переписывай «как было» по памяти.
4. Если не уверен, что копия сохранена, остановись и спроси человека.

Это прямо следует из находки: регенерированный откат не возвращает поведение, копия возвращает.

🔧 Техника: контрольные судьи → видно «пустую» оценку

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

Экстраполяция: правило «отказаться» в инструкции агенту. Добавьте в системный промпт агента-улучшателя явный третий исход:

По каждой правке выбери одно: ДОПУСТИТЬ / ОТКЛОНИТЬ / ОТКАЗАТЬСЯ.
ОТКАЗАТЬСЯ — если не измерено согласие судьи с экспертом, или нет сохранённой старой версии, или правка затрагивает необратимые действия.
При отказе напиши, чего именно не хватает, и передай человеку.

Так «ждущие решения» правки не пропадают молча, а видны со своей причиной.

🔗

Ресурсы

  • Работа: Recoverability and Verifier Strength: Two Measured Preconditions for Unattended Agent Self-Improvement
  • Авторы: De Wang, Peng Qi (Uniphore)
  • Площадка: NeurIPS 2026, Workshop AgenticOS
  • Бенчмарк: τ²-bench (Barres et al., 2026); исходный τ-bench (Yao et al., 2025)
  • Связанные работы: Zheng et al., 2023 (LLM-as-a-Judge); Shinn et al., 2023 (Reflexion); Madaan et al., 2023 (Self-Refine); Khattab et al., 2024 (DSPy)

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

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

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

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

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

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

Судья всегда возвращает число, даже когда не читает критерий. Особенно этим грешат небольшие модели и длинные промпты с кучей требований. Число создаёт иллюзию проверки. Точность тоже врёт: судья «одобряй всё» выглядит прилично, если хороших диалогов много. Поэтому авторы мерят корреляцию с эталоном. У судьи с одним и тем же ответом она ровно ноль. Корреляция ловит то, что точность прячет: судью, который не различает хорошее и плохое. Жесть — формулировка «если одна категория больше 50%, оценка не выше 0.10» сработала во всех 16 проверенных настроек. Привычное «поощряй/штрафуй» не сработало ни разу. Жёсткое условие с числом модель выполняет, а общие пожелания игнорирует. С откатом тоже есть подвох. Сохранённая копия возвращает старое поведение точно. Просьба «сгенерируй обратную правку» не возвращает. Это ещё одна генерация, и её снова надо проверять. Но и копия не всё лечит: пока правка жила в работе, она изменила исход у 17% задач. Выданные деньги и отправленные письма откатом не вернуть. Рычаги: на 20 задачах доверительный интервал у судьи с согласием 0.70 шёл от 0.36 до 1.00, поэтому берите больше размеченных задач. Порог согласия авторы не фиксируют. Он сдвигается примерно на ±0.15 в зависимости от числа прогонов судьи на правку. Для рискованных правок ставьте выше.

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

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

Мини-рецепт

1. Опиши судью: вставь его промпт целиком и назови свойство, которое он должен оценивать.
2. Удали сигнал: попроси 6-10 пар диалогов. В первом свойство есть, во втором убрано, остальное одинаково. Прогони пары через реального судью. Оценки совпали — судья пустой.
3. Поймай постоянного судью: прогони его на 20+ разных диалогах. Одно и то же число везде — тревога.
4. Перепиши критерий жёстко: «если бот отменил заказ без подтверждения — оценка не выше 0.10».
5. Размечай вручную: 20+ диалогов, колонки «вердикт судьи» и «вердикт эксперта». Посчитай долю совпадений и корреляцию.
6. Сохрани копию: перед каждой правкой храни старую версию целиком. Откатывай только ею, не «обратной правкой».
7. Реши: допустить, отклонить или отказаться. Что-то не измерено или копия потеряна — зови человека.
8. Следи за последствиями: возвраты денег и письма, выданные за время работы правки, отслеживай на уровне инструментов.

Примеры

[ПЛОХО] : Оцени диалог от 0 до 1. Поощряй: бот просит подтверждение перед отменой заказа. Штрафуй: бот отменяет заказ без подтверждения. Выведи только число.
[ХОРОШО] : Ниже промпт судьи, который одобряет правки в промпте бота поддержки маркетплейса. Проведи аудит. 1) Напиши 6 пар диалогов: в первом бот подтверждает отмену, во втором те же реплики без подтверждения. Для каждой пары укажи, какую оценку должен поставить хороший судья. 2) Объясни, как проверить, что судья не выдаёт одно число на всех диалогах. 3) Перепиши критерий так: если бот отменил заказ без подтверждения, оценка не выше 0.10. 4) Дай таблицу на 20 диалогов: вердикт судьи, вердикт эксперта. Покажи, как посчитать согласие и что делать, если судья всегда говорит «да». Результат: парные диалоги с ожидаемыми оценками, жёсткий критерий и таблица разметки. Если в паре оценки совпали, судья пустой, и запускать цикл рано.
Источник: Recoverability and Verifier Strength: Two Measured Preconditions for Unattended Agent Self-Improvement
ArXiv ID: 2610.27465 | Сгенерировано: 2026-10-21 13:20

Проблемы LLM

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

Методы

МетодСуть
Парный тест «удали сигнал» — проверка, что судья вообще читает критерийВозьми свойство, которое судья должен оценивать. Например, «бот просит подтверждение перед отменой». Попроси модель написать 6–10 пар примеров. В паре первый пример содержит свойство. Во втором оно убрано, всё остальное то же самое. Для каждой пары модель пишет, какую оценку должен поставить исправный судья. Прогони пары через настоящего судью. Оценки в паре совпали — судья «пустой». Почему работает: постоянный судья не замечает пропажи свойства. Скрытая поломка становится видимой. Когда применять: любой судья, классификатор или проверка качества на промпте. Когда не работает: свойство нельзя убрать, не сломав остальной текст
Согласие с эталоном — измерение, а не вера в судьюРазметь 20+ примеров вручную или программой. Дай судье те же примеры. Посчитай корреляцию между вердиктами судьи и эталона (от −1 до 1). Почему корреляция, а не точность: у судьи, который всегда говорит одно и то же, корреляция равна нулю. Точность при этом может быть высокой. Ограничения: на 20 примерах оценка шумная. Для согласия 0,70 интервал был от 0,36 до 1,00. Больше примеров дают устойчивее результат. Порог «достаточного» согласия не универсален. Для рискованных решений ставь его выше. Подбирай порог на своих данных
📖 Простыми словами

Recoverability and Verifier Strength: Two Measured Preconditions for Unattended Agent Self-Improvement

arXiv: 2610.27465

Давать AI-агенту самостоятельно переписывать свой промпт — верный способ сломать систему за пару шагов. Главная проблема здесь в LLM-судье: когда одна модель проверяет правки другой, она охотно лепит высокий балл на откровенный мусор просто из вежливости. Из-за этого возникает ложная иллюзия контроля: судья всегда согласен, метрики кажутся красивыми, а агент тем временем уверенно превращается в бесполезный кусок кода.

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

Исследователи сформулировали жесткий фильтр из двух условий: обратимость и сила верификатора. Первое — это примитивный Ctrl+Z: старый текст сохраняется, а откат происходит мгновенно в один клик. Второе — проверка судьи на вшивость через корреляцию с эталоном (человеком или жестким кодом). Если модель-оценщик без разбора хвалит всё подряд, её корреляция падает в ноль, автономный режим вырубается, а правка летит на ручной разбор.

Фишка заточена строго под текстовые инструкции: системные промпты, описания инструментов и навыки. Не пытайся совать сюда дообучение весов модели — там откат на коленке не провернёшь. Зато в промпт-инжиниринге подход снимает гору рутины: система начинает аккуратно допиливать саму себя на собственных косяках прямо в проде и без риска уйти в разнос.

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

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

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

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