Ваш агент отлично справился с задачей. Справится ли он снова?
На сцене это неловко. В рабочей среде это проблема надёжности: процесс, который однажды завершился успешно, может завершиться сбоем в следующий раз, когда пользователь отправит тот же запрос. Для критически важных задач — например, сверки финансовой операции или проверки договора на наличие обязательства — это может полностью остановить работу.
Большинство бенчмарков скрывают эту вариативность за средним значением. В AppWorld агент ReAct на базе GPT-4.1 успешно выполнял задачу в 77,4% запусков при пяти повторениях. Но во всех пяти запусках он преуспел лишь для 53,0% задач — это разрыв согласованности в 24,4 процентного пункта.
Большинство бенчмарков сообщают первое число. Мы разработали способ измерять второе — и улучшать его.
В предыдущей публикации мы представили ALTK-Evolve — систему, которая превращает прошлые траектории агента в повторно используемые рекомендации, автоматически обобщает их и добавляет обратно во время вывода. Она заметно повышает успешность выполнения задач, но эти результаты также рассматривали только вопрос среднего случая. В этой публикации мы представляем рекомендации по согласованности — новый тип рекомендаций в altk-evolve, созданный на основе диагностического инструмента, который мы называем анализатором согласованности и который напрямую нацелен на этот разрыв.
Кратко
- Точность скрывает проблему ненадёжности. Агент ReAct (GPT-4.1 в AppWorld
test_normal), успешно выполняющий задачи в среднем в 77,4% случаев, успешно проходит все 5 повторных запусков лишь для 53,0% задач — это разрыв согласованности в 24,4 процентного пункта. На сложных задачах он достигает 30 пунктов. - Мы создали специальный диагностический инструмент. Анализатор согласованности повторно выбирает варианты на основе собственной записанной траектории агента, чтобы найти точки, склонные к переключению — шаги, на которых модели не хватало одного сэмпла токена, чтобы поступить иначе. Ему нужен один трейс и не нужны эталонные ответы: он повторно выбирает варианты для каждой точки принятия решения в этом трейсе одним вызовом, запрашивая k завершений (по умолчанию k=5), вместо повторного запуска задачи от начала до конца.
- Превращение этой диагностики в рекомендации сокращает разрыв вдвое — с 24,4 п.п. до 12,0 п.п. (Pass⁵ для той же задачи +16,0 п.п., для похожей задачи +13,0 п.п.), не снижая среднюю точность.
- Полная методология и результаты оценки представлены в техническом отчёте на arXiv.
Метрика, о которой почти никто не сообщает
Стандартная оценка агентов сообщает Mean@k: бенчмарк запускается k раз, после чего усредняется доля успешных выполнений. Часто k=3, иногда всего 1. Это число есть в каждой таблице лидеров, и именно его на практике означает фраза «точность 77%».
Mean@k отвечает на вопрос «насколько хорош этот агент в среднем?». Но она не отвечает на вопрос, который важен реальному пользователю: останется ли он столь же хорошим, если я снова задам тот же вопрос? Для этого нужен показатель Pass^k: доля задач, в которых агент успешно справляется во всех k запусках.
⚠️ Pass^k — это не Pass@k. Знакомый показатель Pass@k является оптимистичным — он спрашивает, была ли успешной хотя бы одна из k попыток; это правильный вопрос, когда результат можно проверить и повторить попытку. Pass^k — его пессимистичное зеркальное отражение: успешными должны быть все попытки. Те же буквы, противоположный вопрос. Всегда выполняется Pass^k ≤ Mean@k ≤ Pass@k.
Агент ReAct на базе GPT-4.1 показывает Mean@5 на уровне 77,4% — действительно сильный результат. Но Pass^5 составляет лишь 53,0%. Почти четверть бенчмарка состоит из задач, которые агент иногда решает, а иногда нет, хотя между запусками ничего в задаче не меняется. Этот разрыв — Mean@k минус Pass^k — мы называем разрывом согласованности.
Это не проблема способностей, которую можно решить более крупной моделью. Это независимая ось: агент может быть способным и одновременно непоследовательным.
Почему агенты переключаются: чёткие и размытые решения
Каждый раз, когда агент на базе LLM принимает решение — какой API вызвать, какой аргумент передать, повторить ли попытку, — это решение формируется из распределения вероятностей по следующим токенам. Важна форма этого распределения. Чёткое распределение концентрирует большую часть массы на одном токене: следующие кандидаты сильно отстают, и от запуска к запуску выбирается один и тот же вариант. Размытое распределение распределяет сопоставимую массу между несколькими почти равными токенами, и то, какой из них победит, почти определяется подбрасыванием монеты.
Форма определяет, сколько шума требуется для изменения результата. Чёткие распределения устойчивы: неассоциативность вычислений с плавающей точкой на GPU, пакетная обработка запросов и другие эффекты на стороне платформы слегка меняют числа, но далеко не настолько, чтобы изменить порядок очевидных лидеров. Размытые распределения уязвимы именно к таким изменениям: близкие значения могут поменяться местами под воздействием небольших возмущений. А поскольку траектория объединяет десятки решений, небольшая вероятность переключения на каждом шаге превращается в высокую вероятность того, что какой-либо запуск пойдёт иначе. Так и возникает разрыв в 24 пункта.
Именно поэтому проблема сохраняется при любых настройках декодирования. Жадное декодирование и фиксированное начальное значение управляют лишь тем, как распределение преобразуется в токен — они ничего не говорят о самом распределении. На размещённой конечной точке вероятности слегка меняются от запуска к запуску, поэтому один и тот же запрос к одной и той же модели при температуре, равной нулю, сегодня может разрешить близкое равенство одним способом, а завтра — другим.
Наша конфигурация: агент ReAct работает при температуре 0,0, поэтому описанная выше вариативность не является обычным сэмплированием.
Сначала диагностика, затем исправление
Таким образом, задача превращается в поиск: какие шаги данной траектории были размытыми — и что делать, когда вы это выяснили?
Рекомендации по согласованности создаются в рамках двухэтапного процесса, подключаемого к существующей инфраструктуре ALTK-Evolve, — с новым источником сигнала, определяющим, что именно будет записано.
1. Обнаружение — анализатор согласованности. Получив одну записанную траекторию, анализатор воспроизводит каждый шаг принятия решения посредством контролируемого повторного сэмплирования и измеряет, насколько фактически меняется вывод модели в этой точке. В частности, это один дополнительный вызов модели для каждого шага принятия решения, выполняемый однократно в автономном режиме, с параметром сэмплирования, настроенным на получение сразу k завершений (по умолчанию k=5); контекст уже записан, поэтому не выполняются новые вызовы инструментов, новые взаимодействия со средой или второй сквозной запуск задачи. В результате для каждого шага принятия решения формируется показатель согласованности, который записывается в карточку оценки и точно указывает, какие решения могут переключиться при следующем запуске. Обнаружение полностью выполняется в режиме чёрного ящика — без логитов, внутреннего устройства модели и дополнительной инструментации, кроме уже имеющегося трейса.
2. Генерация — целевые рекомендации. Каждый отмеченный шаг становится кандидатом на рекомендацию по согласованности в стандартном формате ALTK-Evolve, поэтому он подключается к существующему конвейеру хранения и извлечения. Вот реальный пример, сгенерированный GPT-4.1 на основе траектории задачи AppWorld «Сколько действий выполнено в моём списке дел согласно моей заметке SimpleNote?»:
[Рекомендация 1] При подсчёте маркеров в виде флажков в содержимом заметки используйте сопоставление регулярным выражением с привязкой к началу строки, а не простой подсчёт подстроки: в заголовках заметок символ маркера часто повторяется в строке с легендой.
[Рекомендация 2] Всегда проверяйте результаты поиска по запросам о заметках: убедитесь, что найдено несколько совпадений, и подтвердите правильность заметки перед продолжением.
Здесь нет ничего специфичного для конкретной задачи. Ошибки подсчёта строк и непроверенные результаты поиска — это точки принятия решений, которые с высокой неопределённостью встречаются во множестве задач AppWorld. В этом и заключается смысл: анализатор нацелен на нестабильность, а не на сбой, поэтому он выявляет шаги, которые агент в этот раз выполнил правильно, но легко может выполнить неправильно в следующий.
Посмотрите двухминутную демонстрацию — пять параллельных запусков агента разделились при выполнении этой задачи в соотношении 3 к 2 из-за неопределённости агента относительно стратегии подсчёта, а затем были запущены снова с этими рекомендациями в контексте: все пять дали одинаковый результат.
Результаты: сокращение разрыва без потери точности
Мы провели оценку на AppWorld test_normal (168 задач) с агентом ReAct на базе GPT-4.1, сгенерировав рекомендации по согласованности на основе одной исходной траектории для каждой задачи и протестировав их на 5 новых запусках.
Mean@5 (%), совокупный показатель — та же шкала, что и выше для Pass^5.
Разрыв согласованности сокращается примерно вдвое. Совокупный показатель Pass^5 повышается с 53,0% до 69,0%, а Mean@5 — с 77,4% до 81,0%, сокращая разрыв между «выглядит способным» и «на него можно положиться» с 24,4 п.п. до 12,0 п.п. Почти треть ранее непоследовательных задач становится задачами, которые агент проходит при каждом запуске.
Наибольший прирост наблюдается в среднем и сложном уровнях. Средний уровень: +22,9 п.п. (+44% относительно исходного значения), сложный: +14,3 п.п. (+45% относительно исходного значения) — практически одинаковый относительный прирост, хотя абсолютный прирост выше на среднем уровне. На лёгком уровне прирост составляет +12,2 п.п., поскольку там оставалось меньше возможностей для улучшения. Именно для этого и предназначены рекомендации по согласованности: находить и стабилизировать конкретные точки принятия решений, в которых собственная неопределённость агента просачивалась в результат.
Mean@5 никогда не снижается. Сохранение средней точности было обязательным требованием, а не приятным дополнением: система, повышающая Pass^5 за счёт снижения Mean@5, лишь перемещала бы ненадёжность, а не устраняла её. Средняя точность сохраняется или улучшается на каждом уровне сложности.
Рекомендации обобщаются — они не исправляют одну траекторию
При применении к другой, но связанной задаче в том же сценарии AppWorld — ещё одному варианту сценария, из которого были извлечены рекомендации, — рекомендации по согласованности по-прежнему повышают Pass^5 на +13,0 п.п., что всего на 3 пункта ниже показателя для той же задачи. Рекомендация, полученная из одного запуска, не просто исправляет этот запуск; она улавливает закономерность, которая переносится на другие задачи.
Ещё более убедительные данные даёт более слабая модель gpt-oss-120b. Pass^5 для той же задачи вырос на +6,0 п.п. при гораздо более низком исходном уровне (с 10,1% до 16,1%), а показатель обобщения на похожие задачи (+8,7 п.п.) фактически превысил прирост на той же задаче. Это говорит о том, что рекомендации выявляли действительно повторно используемые закономерности сбоев, а не запоминали особенности одной траектории.
Если вы выводите агента в рабочую среду
- Сообщайте Pass^k рядом с Mean@k. Средние значения не позволяют отличить надёжного агента от удачливого; даже k=3 выявит разрыв, о существовании которого вы не знали.
- Ожидайте увеличения разрыва с ростом сложности. Именно на самом сложном уровне одно усреднённое число вводит в наибольшее заблуждение.
- Не спешите сначала выбирать более крупную модель. Согласованность не зависит напрямую от способностей. Более сильная модель повышает Mean@k, но не обязательно уменьшает разрыв согласованности.
- Для диагностики не нужны ни проверяющая модель, ни живое воспроизведение. Достаточно одного дополнительного вызова LLM на каждый шаг принятия решения (по умолчанию сэмплируется k=5 завершений) — не нужны эталонные ответы и повторный запуск задачи в среде. Это делает метод пригодным для производственного трафика, где часто невозможно воспроизвести задачу от начала до конца даже один раз.
Попробуйте
Попробуйте инструментарий ALTK-Evolve — теперь репозиторий с открытым исходным кодом включает анализатор согласованности и генерацию рекомендаций по согласованности, использованные в этих экспериментах, — или прочитайте технический отчёт на arXiv, чтобы ознакомиться с полной методологией.
Если вам знакомы показатели точности, которые вы не можете воспроизвести на собственных задачах, расскажите нам об этом: конкретные примеры поведения ваших агентов, склонного к переключениям, — именно тот тип обратной связи, который помогает определить, что мы будем создавать дальше. Создайте issue или начните обсуждение.
Приложение: понимание метрик
- Mean@k. Запустите задачу k раз и сообщите среднюю долю успешных выполнений — то, что большинство бенчмарков называет «точностью».
- Pass^k. Доля задач, в которых агент успешно справляется во всех k независимых запусках. Всегда ≤ Mean@k. То, что испытывает пользователь, если запускает один и тот же запрос дважды.
- Pass@k Успешной оказывается хотя бы одна из k попыток — оптимистичный аналог, распространённый в статьях о генерации кода.
- Разрыв согласованности. Mean@k − Pass^k, в процентных пунктах.
Связанные материалы и источники
- Репозиторий ALTK-Evolve с открытым исходным кодом — github.com/AgentToolkit/altk-evolve
- Технический отчёт — arXiv
- Демонстрация рекомендаций по согласованности —видео на 2 минуты
Сообщество
· Зарегистрируйтесь или войдите, чтобы оставить комментарий
Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.

