Паттерны AI-агентов, которые я усвоил при создании AIdaemon
Когда люди говорят о паттернах AI-агентов, они обычно описывают их в абстрактном виде. Вот как семь известных паттернов работают внутри AIdaemon — демона AI-агентов с саморазмещением, который я разрабатываю на Rust.
Цикл ReAct (Reason + Act — Рассуждение + Действие)
ReAct лежит в основе большинства современных агентов. Вместо того чтобы продумывать весь план целиком и выполнять его сразу, агент чередует рассуждения о том, что делать дальше, и непосредственное выполнение этого действия.
В AIdaemon это проявляется как циклический процесс выполнения, основанный на фазах. Каждый шаг проходит через построение сообщения, вызов LLM, выполнение инструмента и проверку остановки. Агент рассуждает о следующем шаге, выполняет действие, наблюдает результат, а затем снова рассуждает. Этот цикл продолжается до тех пор, пока агент не решит, что закончил, или не достигнет лимита итераций.
Прелесть ReAct заключается в адаптивности. Если команда не удалась или вернула неожиданный результат, агент не продолжает слепо следовать первоначальному подходу. Он переоценивает ситуацию и вносит коррективы.
Планирование (Planning)
Планирование означает разбиение сложной задачи на этапы перед началом работы. Вместо того чтобы сразу хвататься за первый инструмент и начинать работу, планирующий агент анализирует запрос, определяет зависимости и выстраивает операции в логической последовательности.
В AIdaemon, прежде чем агент начнет использовать какой-либо инструмент, он может сгенерировать структурированный план с конкретными шагами. Это предотвращает распространенную ошибку, когда агент начинает выполнение, а затем понимает на полпути, что ему нужна информация из шага 5 для выполнения шага 2, и начинает ходить по кругу.
Планирование также способствует прозрачности. Когда вы можете увидеть план агента до его выполнения, вы выявляете ошибочные предположения на ранней стадии, а не после того, как агент уже внес изменения.
Рефлексия (Reflection)
Рефлексия — это способность агента оценивать собственную работу. После выполнения действия рефлексивный агент переключается в режим критика. Он проверяет наличие ошибок, подтверждает соблюдение ограничений и выявляет пробелы.
В AIdaemon контур обратной связи рефлексии активируется, когда что-то идет не так. Если вызов инструмента завершается ошибкой или дает неожиданные результаты, агент анализирует, что произошло, почему произошел сбой, и предлагает исправление перед повторной попыткой. В сочетании с отслеживанием состояния доказательств агент сохраняет конкретные наблюдения о том, что он видел и делал. Его размышления основаны на фактических результатах, а не на предположениях.
Память (Memory)
Память — это то, как агент сохраняет информацию между сессиями. Без нее каждое взаимодействие начинается с нуля.
AIdaemon использует векторные представления на основе SQLite для семантического поиска. Факты автоматически извлекаются из разговоров и сохраняются с векторными представлениями, чтобы их можно было извлечь по смыслу, а не только по ключевым словам. Если вы упомянули деталь проекта три недели назад, агент сможет вспомнить ее, когда она снова станет актуальной.
Система памяти также создает сводки эпизодов для длительных сессий и ежедневно консолидирует факты, удаляя дубликаты и снижая значимость старой информации, которая больше не полезна. Это разница между агентом с амнезией и тем, кто действительно усваивает ваш контекст с течением времени.
Ограничители (Guardrails)
Ограничители определяют жесткие границы того, что агент может и не может делать. Это страховочная сетка, которая отлавливает крайние случаи, которые не удается предотвратить только хорошим промптингом.
AIdaemon реализует ограничители на нескольких уровнях. Белые списки команд ограничивают, какие команды терминала может выполнять агент. Фильтрация инструментов на основе уровня риска означает, что деструктивные операции требуют дополнительной проверки. Санитизация вывода удаляет конфиденциальные данные, такие как API-ключи и токены, из ответов, прежде чем они достигнут пользователя. А лимиты итераций предотвращают бесконечные циклы, в которых агент тратит токены без достижения прогресса.
Индустрия пришла к этому многоуровневому подходу. Большинство производственных фреймворков для агентов рассматривают ограничители как эшелонированную оборону, а не как единую контрольную точку.
Человек в цикле (Human-in-the-loop)
Человек в цикле — это паттерн, при котором система делает паузу для подтверждения человеком перед выполнением действий с высоким риском. Это признание того, что некоторые решения не должны быть полностью автоматизированы.
AIdaemon использует рабочий процесс утверждения с тремя вариантами для рискованных действий: Разрешить один раз (продолжить на этот раз), Разрешить всегда (доверять этому действию в дальнейшем) и Запретить (остановиться и попробовать что-то другое). Агент автоматически классифицирует действия по уровню риска. Чтение файла? Защита не нужна. Удаление файлов или выполнение незнакомых команд оболочки? Агент приостанавливается и спрашивает.
Ключевым моментом является управление доступом на основе риска, а не блокировка всего подряд. Слишком много прерываний — и агент становится непригодным для использования. Слишком мало — и вы доверяете ему действия, которые могут нанести реальный ущерб.
Обучение навыкам (Skill learning)
Обучение навыкам — это процесс, при котором агент превращает успешные шаблоны в многократно используемые инструкции. Большинство агентов рассматривают каждую задачу как разовую. Обучение навыкам позволяет агенту распознавать, когда он успешно решил тип проблемы несколько раз, и упаковывать это решение для будущего использования.
В AIdaemon, если процедура использовалась 5 или более раз с уровнем успеха не менее 80%, система генерирует черновик навыка. Этот черновик все еще требует проверки человеком, прежде чем он станет активным, что не позволяет агенту усвоить неправильные уроки. После утверждения, когда появится аналогичная задача, агент сможет обратиться к этому навыку, а не изобретать его заново. Навыки также можно загружать из файлов, URL-адресов или удаленных реестров, чтобы вы могли делиться ими между различными установками.
Это один из тех паттернов, эффект которого накапливается со временем. Чем дольше работает агент, тем больше навыков он накапливает и тем быстрее он справляется с повторяющейся работой.