Почему AI-агент проходит задачу один раз, но проваливает её при повторе
ReAct-агент на GPT-4.1 в бенчмарке AppWorld показывает 77,4% успеха в среднем по пяти прогонам каждой задачи. Прогоните те же задачи пять раз подряд, и картина меняется: все пять попыток успешны только для 53,0% задач. Разрыв в 24,4 процентного пункта между средней точностью и повторяемостью IBM Research называет consistency gap, разрывом согласованности.
Средний процент отвечает на вопрос «сколько задач агент решает в среднем», а не «решит ли он эту задачу снова». Пользователь не получает средний результат: он получает один конкретный прогон. Когда 47% задач срываются хотя бы раз из пяти, почти каждая вторая задача в продакшне может внезапно не пройти, хотя отчёты выглядят прилично.
Совет «поставьте temperature 0.0 и зафиксируйте seed» проблему не снимает. При temperature 0.0 модель берёт наиболее вероятный токен, но сам этот токен на отдельных шагах меняется от незначительных флуктуаций вычислений на GPU, версии CUDA и порядка операций. Агент с хорошим средним результатом на повторе уходит в другой маршрут и проваливает задачу.
Mean@k, Pass^k и Pass@k: в чём разница и что они скрывают
Три метрики отвечают на три разных вопроса, и путаница между ними дорого стоит при выборе агента.
Mean@k - средняя точность по k прогонам. Для каждой задачи считается доля успешных попыток, затем значения усредняются по всему набору. Метрика отвечает на вопрос «сколько агент решает в среднем».
Pass@k - доля задач, где успешен хотя бы один прогон из k. Метрика пришла из оценки генерации кода и reasoning: она измеряет потенциал модели, её способность дойти до правильного ответа при достаточном числе попыток.
Pass^k - доля задач, решённых во всех k прогонах. Её ввели авторы IBM Research, чтобы измерять стабильность. Pass^k никогда не превышает Mean@k, а разница между ними и есть consistency gap.
| Метрика | Что измеряет | Вопрос, на который отвечает | Где полезна |
|---|---|---|---|
| Mean@k | Средняя доля успешных прогонов по k попыткам | Сколько задач агент решает в среднем | Общая оценка качества |
| Pass@k | Доля задач, где успешен хотя бы один прогон из k | Может ли агент решить задачу в принципе | Исследования, оценка потолка модели |
| Pass^k | Доля задач, решённых во всех k прогонах | Решает ли агент задачу каждый раз | Продакшн, повторяющиеся задачи |
Почему Mean@k вводит в заблуждение
Разберём на одном примере. Задача решена в 4 прогонах из 5. Mean@k учитывает её как 0,8 успеха, а Pass^5 для неё равен нулю: стабильно агент эту задачу не решает. При усреднении по сотне задач такие «почти успешные» пункты дают красивую среднюю цифру, за которой прячется рваная повторяемость.
В случае AppWorld 77,4% Mean@k выглядят как уверенный результат, но 47% задач не проходят все пять повторов. Если задача запускается раз в день, срыв раз в неделю становится нормой, а не аномалией. Как сильно версии моделей, условия запуска и устройство самого бенчмарка меняют итоговые цифры, видно на примере сравнения открытых LLM: DeepSeek, Qwen и GLM в 2026 году.
Pass^k vs Pass@k: стабильность против максимального покрытия
Pass@k полезен, когда вы оцениваете потолок возможностей: сколько задач агент способен взять в принципе. Так работают бенчмарки генерации кода, где правильность проверяется автотестами. Pass^k нужен там, где важна предсказуемость: агент обрабатывает заявки, синхронизирует данные, выполняет рутинные проверки. Здесь успех «иногда» и успех «всегда» - разные продукты.
Практическое правило простое. Для разовых исследовательских задач смотрите на Pass@k и Mean@k. Для продакшна, где одно и то же действие повторяется, основной метрикой становится Pass^k, а consistency gap показывает, сколько надёжности вы теряете на повторах.
Откуда берётся нестабильность: «плоские» распределения вероятностей и флуктуации
На каждом шаге модель выдаёт распределение вероятностей по словарю токенов. Обычно один вариант доминирует: 0,95 против 0,02 у ближайшего конкурента, и выбор устойчив. Нестабильность рождается там, где распределение «плоское»: два-три варианта идут с близкими вероятностями, скажем 0,51 и 0,49. Малейшего сдвига логитов достаточно, чтобы лидеры поменялись местами.
Для агента такие шаги решают много. Модель выбирает инструмент, формулирует аргументы вызова, решает, сделать ещё один шаг или завершить эпизод. Если на шаге выбора между двумя инструментами вероятности почти равны, любой сдвиг отправляет траекторию по другой ветке, и дальше агент работает уже с другим состоянием среды.
Почему temperature 0.0 не гарантирует детерминизм
temperature 0.0 включает жадный режим: берётся argmax, самый вероятный токен. Но argmax считается из логитов, а логиты при повторных запусках отличаются. Причины бытовые: недетерминированные операции на GPU (атомарные сложения и порядок редукций), разные версии CUDA и cuDNN, размер батча, тип квантования, различия драйверов и облачных платформ. Один и тот же запрос на одной машине даёт слегка разные логиты, и «плоский» шаг опрокидывается.
Фиксация seed помогает в пределах одного программного стека и не переносится между окружениями. Детерминизм инференса - удобная иллюзия, на которую опасно опираться в продакшне.
Flip-prone точки: где агент склонен менять решение
Flip-prone точкой называют шаг траектории, на котором агент с высокой вероятностью выберет другой вариант при незначительном изменении входа. Это выбор инструмента, формулировка аргументов, повторный поиск, момент завершения задачи. Такие точки и есть корень нестабильности: они дают список конкретных мест для укрепления вместо расплывчатого «модель иногда ошибается».
Consistency Analyzer: как найти flip-prone точки по одной траектории
Consistency Analyzer работает как чёрный ящик. На вход идёт одна записанная траектория агента: последовательность шагов с промптами и ответами. Доступ к весам, внутренностям модели или среде не нужен.
Как проходит пересэмплирование шагов
Для каждого шага берётся контекст до этого шага и генерируются k=5 вариантов продолжения за один вызов. Если варианты расходятся, например выбираются разные инструменты или разные аргументы, шаг помечается как flip-prone. Пересэмплирование касается только генерации: действия в среде повторно не выполняются, поэтому анализ быстрый и безопасный.
Почему не нужен ground truth и повторный прогон
Ground truth в реальных задачах часто неизвестен, а повторный прогон дорог и иногда невозможен: действия агента оставляют побочные эффекты. Отправленное письмо не отозвать, запись в базе уже изменена, деньги потрачены. Инструмент обходится одной траекторией и генерацией вариантов, поэтому разбор идёт по логам, постфактум. Для продакшна это ключевое свойство: инцидент разбирается без воспроизведения сценария целиком.
От диагностики к исправлению: consistency guidelines и ALTK-Evolve
Список flip-prone точек - это диагноз. Лечение - consistency guidelines: короткие текстовые правила, которые подсказывают агенту устойчивое решение в проблемных местах. Гайдлайны генерируются автоматически на основе найденных точек, оформляются в формате ALTK-Evolve и инъектируются в контекст: в системный промпт или в начало задачи.
Эффект по цифрам: consistency gap сокращается с 24,4 до 12,0 процентного пункта без потери средней точности. Агент не становится хуже в среднем, но реже срывается на повторах. Улучшение почти вдвое при том же Mean@k.
Что такое ALTK-Evolve и как выглядят гайдлайны
ALTK-Evolve - формат представления инструкций, который позволяет уточнять поведение агента итеративно, по мере накопления данных о сбоях. По смыслу гайдлайн похож на правило ветвления: «при выборе между инструментами X и Y, если в контексте есть условие Z, используй X». Это не программирование жёсткой логики, а контекстная подсказка, которая снижает шанс случайного переключения на почти равновероятном шаге.
Почему средний и сложный уровни задач выигрывают больше
Простые задачи решаются короткими траекториями, развилок в них мало, и flip-prone точек почти нет. Средние и сложные задачи требуют больше шагов, вызовов инструментов и промежуточных решений, поэтому вероятность нестабильности выше. Наибольший прирост гайдлайны дают именно там. Практический вывод: метод рассчитан на реальные многошаговые сценарии, а не на демо в один вызов.
Что это значит для продакшна: практические выводы
Mean@k в одиночку не годится как основание для выкатки агента. Если агент выполняет повторяющиеся задачи (обработка заявок, синхронизация данных, рутинные проверки), стабильность важнее средней точности. Часть таких сбоев вообще не видна на дашбордах: похожая проблема разобрана в материале про тихие сбои AI-агентов.
Как встроить проверку стабильности в пайплайн
- Логировать траектории агента: промпты, ответы, вызовы инструментов, результаты.
- Прогонять Consistency Analyzer по выборке траекторий, включая успешные, а не только упавшие.
- Собирать список flip-prone точек и группировать их по типам решений: выбор инструмента, аргументы вызова, завершение.
- Генерировать consistency guidelines для повторяющихся типов точек.
- Инъектировать гайдлайны в контекст и замерять Pass^k до и после.
- Оставлять изменения только там, где Pass^k вырос без падения Mean@k.
Замеры удобно вести на компактном наборе задач из собственных сценариев: Terminal Bench 4.0 показывает, как собрать такой набор для кодинг-агентов с автоматическими проверками, метриками токенов, latency и стоимости успешного решения.
Ограничения и на что обратить внимание
k=5 не гарантирует, что найдены все flip-prone точки: редкие развилки могут не проявиться. Анализ идёт по одной траектории, поэтому сбой, который не попал в логи или воспроизвёлся иначе, останется за кадром. Гайдлайны удлиняют контекст, а это лишние токены и деньги. На простых задачах эффект близок к нулю.
Замеры проводились на ReAct-агенте с GPT-4.1 в AppWorld, и перенос на другие модели, архитектуры агентов и домены требует собственной проверки, а не слепого копирования. Отдельно проверьте, как метод сочетается с обвязкой агента: инструментами, этапами верификации и управлением контекстом. Разбор harness engineering показывает, насколько сильно эти слои влияют на итоговую надёжность.
Итог: стабильность как отдельная метрика качества агента
Consistency gap - реальная проблема, которую скрывает средняя точность. 77,4% Mean@k против 53,0% Pass^5 на одном и том же агенте показывают, что цифра в отчёте и опыт пользователя расходятся почти вдвое. Pass^k делает нестабильность видимой, Consistency Analyzer находит конкретные flip-prone точки по записанной траектории, а consistency guidelines сокращают разрыв с 24,4 до 12,0 п.п. без потери средней точности.
Если агент работает в повторяющихся задачах, добавьте Pass^k в мониторинг и прогоните Consistency Analyzer по накопленным логам. Начинайте с задач среднего и сложного уровня: там отдача максимальная, а риск нестабильности самый высокий.