Цикл агента: цель, план, инструмент, наблюдение, остановка
Пять шагов, из которых обычно реализуют четыре. Разбираю, что делает каждый, почему забывают последний и как выглядит цикл, который можно эксплуатировать.
Короткий ответ: агент — это цикл из пяти шагов. Получить цель, выбрать следующее действие, выполнить его инструментом, посмотреть на результат, решить — продолжать или остановиться.
Реализуют обычно четыре. Пятый — остановку — дописывают после первого инцидента, когда агент полночи ходил по кругу и утром обнаружился счёт.
Пять шагов
Цель. Формулировка того, что должно стать правдой. Не «открой чат», а «найди контакт, напиши сообщение и отправь». Разница принципиальна: промежуточное состояние не является достижением цели, и агент, у которого цель подменена первым шагом, останавливается на полпути с рапортом об успехе.
План. Не обязательно записанный: выбор следующего действия и есть план на один шаг. Явный план полезен другим — человеку, который его прочтёт до того, как что-то произойдёт.
Инструмент. Вызов чего-то за пределами модели: чтение файла, запрос к базе, клик в интерфейсе. Ровно здесь агент отличается от разговора, и ровно здесь у него появляются права — а значит, и то, чем можно навредить.
Наблюдение. Результат вызова возвращается в цикл. Не «модель считает, что получилось», а фактическое новое состояние: содержимое файла, код ответа, новый кадр экрана.
Остановка. Условие, при котором цикл заканчивается. Их всегда несколько: цель достигнута, бюджет исчерпан, требуется человек, прогресса нет.
Почему забывают остановку
Потому что на демонстрации она не нужна. Задача решается за четыре шага, цикл завершается сам, и условие выхода выглядит перестраховкой.
Ломается это не на сложной задаче, а на невыполнимой. Файла нет, кнопка переименована, доступ отозван. Агент не умеет сказать «я не могу»: он умеет предлагать следующее действие, и на любом состоянии предложит. Дальше он переоткрывает то же окно, переформулирует тот же запрос, пробует соседнюю кнопку — бесконечно и за деньги.
Отсюда правило, которое стоит принять до первой реализации: условие остановки — не защита от ошибок, а часть определения цикла. Цикл без него не завершается, а истощается: заканчивается лимит, терпение или бюджет.
Что считать наблюдением
Место, где чаще всего срезают угол. Соблазн — считать наблюдением ответ модели о том, что она сделала. Это не наблюдение, это пересказ намерения.
Настоящее наблюдение приходит снаружи модели: код ответа, содержимое файла после записи, новый снимок экрана. В контуре управления интерфейсом, который я разбирал в «Агенте на рабочем столе», это выражено жёстко: успех засчитывается только после нового кадра, подтверждающего результат.
Признак, по которому легко себя проверить: если убрать модель, останется ли способ узнать, что шаг удался. Если нет — наблюдения в цикле нет.
Условие несогласия
Для задач в один-два шага цикл избыточен. «Разбери письмо и верни поля» не нуждается ни в плане, ни в остановке: это вызов модели со схемой вывода, и превращать его в агента — усложнение без выигрыша.
Граница проходит по вопросу, известна ли последовательность шагов заранее. Известна — это конвейер, и он надёжнее. Неизвестна — тогда агент, и тогда нужны все пять шагов, включая пятый.
Чего я делать не стал бы
Не стал бы давать агенту право на необратимое внутри цикла. Шаг, который нельзя отменить, должен выходить из цикла к человеку — спросить дешевле, чем откатить.
Не стал бы полагаться только на лимит шагов как на остановку. Он ловит зацикливание, но не ловит бессмысленную работу: двадцать три осмысленных шага в неверном направлении уложатся в любой бюджет.
Не стал бы прятать план от человека. План — самая дешёвая точка вмешательства: он читается за минуту, а результат проверяется за час.
Открытый вопрос
Из пяти шагов формализуется четыре. Остановка «прогресса нет» — единственная, для которой у меня нет надёжного критерия: отличить топтание от медленного продвижения по внешним признакам трудно, а изнутри модель этого не видит вовсе — для неё каждый следующий шаг выглядит разумным.
Сравнение соседних состояний помогает грубо: если кадр не изменился и файл не изменился, шаг был холостым. Но задача, где два холостых шага — нормальная часть поиска, ломает и этот критерий.