Конечный автомат вместо хаоса трасс: как предсказывать сбой LLM-агента и его следующий шаг

15 сентября 202618 просмотров

Исследователи предлагают сворачивать корпус логов работы LLM-агентов в компактную машину состояний: получившаяся топология укладывается в 7–43 состояния, почти идеально воспроизводит отложенные прогоны и строится за миллисекунды. Такой автомат даёт контекст для прогноза очередного действия, а признаки отдельных состояний позволяют онлайн-монитору ловить неудачные прогоны по части трассы — с AUROC до 0,94.

Конечный автомат вместо хаоса трасс: как предсказывать сбой LLM-агента и его следующий шаг

Проблема: трасса агента — это лог, а не модель поведения

Многошаговый LLM-агент оставляет после себя длинный след: вызовы инструментов, промежуточные рассуждения, исправления, повторные попытки. Читать это глазами почти бессмысленно — сотни строк текста, где полезный сигнал размазан по всему объёму. Для разработчика, который выкатывает агента в прод, такой лог превращается в чёрный ящик: непонятно ни где именно прогон пошёл не туда, ни какие состояния вообще типичны для системы.

Именно об этом работа arXiv:2608.23670 (cs.AI) «Automata from Agent Traces: Failure and Next-Step Prediction» — её авторы Seonglae Cho, Franklin Cardenoso Fernandez, Umar Mohammed, Zekun Wu, Kleyton Da Costa, Ilham Wicaksono и Adriano Koshiyama предлагают смотреть на трассы не как на текст, а как на данные о переходах между состояниями. Логика простая: если поведение агента повторяется от запуска к запуску, значит за внешним хаосом стоит структура, и её можно восстановить.

Отдельно стоит отметить, чего не хватало прежним подходам. Анализ обычно вели по одной трассе за раз либо опирались только на успешные прогоны. В обоих случаях теряется общая картина — та топология, которая связывает между собой предсказание следующего действия и предсказание провала. А ведь именно она нужна и для аудита безопасности, и для мониторинга в реальном времени.

Один автомат на весь корпус

Идея метода: взять весь набор трасс и свернуть его в единственную компактную конечную машину состояний (FSM). Не дерево решений на каждый запуск, не эмбеддинги где-то в векторном пространстве, а обычный граф с состояниями и переходами — тот самый структурный субстрат, который делает поведение агента если не предсказуемым, то хотя бы описываемым.

Результаты на двенадцати публичных датасетах выглядят обнадёживающе:

  • автоматы получаются маленькими — от 7 до 43 состояний, то есть их реально нарисовать и обсудить на созвоне;
  • на отложенных данных они воспроизводят трассы с fitness не ниже 0.997 — почти идеальное соответствие;
  • топология, построенная на разных сплитах одного датасета, оказывается практически одинаковой;
  • сама сборка занимает миллисекунды, а не часы обучения.

Последний пункт важнее, чем кажется. Метод, который строится мгновенно, можно пересобирать после каждой правки промпта или конфигурации — и сразу видеть, изменилось ли поведение системы.

Почему это не просто красивая визуализация

Компактность здесь не самоцель. Когда у вас 20 состояний вместо тысяч строк текста, появляется возможность рассуждать о режимах работы агента: вот цикл «попробовал — получил ошибку — повторил», вот ветка «задача ушла в уточняющие вопросы», вот редкое состояние, из которого почти нет выходов. Дальше с этими режимами можно работать инженерно — например, строить признаки, которые считаются по каждому состоянию.

Предсказание следующего шага: состояние важнее памяти

Для предсказания очередного действия агента авторы используют контекст состояния FSM. И этот подход обходит Agent Workflow Memory на каждом датасете, где разметка согласована с реальным ходом выполнения. Иначе говоря, знание «в каком режиме сейчас находится агент» оказывается полезнее, чем накопленная память о прошлых эпизодах работы.

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

Предсказание сбоя и мониторинг по частичной трассе

Вторая половина работы — про диагностику. Признаки, посчитанные по отдельным состояниям автомата, дают AUROC до 0.94 на отложенных данных. То есть модель, которая ничего не знает о внутренностях LLM, по поведенческим характеристикам различает прогоны, которые закончатся провалом, и те, что дойдут до конца.

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

Главный вывод: поведение задаёт обвязка, а не модель

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

Из этого следует несколько выводов. Во-первых, замена модели на другую при той же обвязке может не изменить структуру поведения радикально — а значит, и автомат, собранный на одной модели, стоит проверять на другой. Во-вторых, улучшать агента часто эффективнее через изменения в harness, а не через апгрейд весов. В-третьих, появляется model-agnostic структурный примитив: один и тот же подход годится для аудита безопасности и для runtime-мониторинга независимо от того, чей API вы вызываете.

Что стоит держать в голове

Подход не отменяет осторожности. Двенадцать датасетов — это всё ещё ограниченная выборка, а fitness 0.997 говорит о том, как хорошо автомат описывает уже собранные трассы, а не о том, что он предскажет поведение системы в незнакомой среде. Высокий AUROC для предсказания сбоя тоже получен на конкретных задачах: в новых доменах признаки придётся пересчитывать.

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

Часто задаваемые вопросы

Похожие материалы

Все материалы
Конечный автомат для LLM-агентов: прогноз сбоя и шага