Паттерны проектирования агентного ИИ: ReAct, Plan-and-Execute, Reflexion и другие
Паттерны проектирования агентного ИИ -- это именованные переиспользуемые архитектурные решения для повторяющихся проблем координации агентов: каждый имеет определённую структуру, известные компромиссы, характерные режимы сбоев и последствия для безопасности. Выбор неправильного паттерна приводит к конкретным сбоям: ReAct на долгосрочных задачах вызывает перегрузку контекстного окна; Plan-and-Execute без перепланирования накапливает ошибки на устаревших планах; Reflexion без очистки памяти допускает устойчивое отравление памяти. Шесть паттернов в двух категориях: паттерны рассуждения одного агента (ReAct, Plan-and-Execute, Reflexion) и паттерны координации нескольких агентов (Critic-Actor, Supervisor-Worker, Mixture-of-Agents).
Паттерны проектирования агентного ИИ -- это именованные переиспользуемые архитектурные решения для повторяющихся проблем в проектировании агентных систем, задающие, как агент рассуждает, планирует, рефлексирует, делегирует и восстанавливается после сбоев -- каждый с определённой структурой, известными компромиссами, характерными режимами сбоев и последствиями для безопасности, которые практикам следует учитывать перед развёртыванием в продакшн.
Как читать это руководство: структура паттернов и эвристики выбора
Компоненты паттернов: структура, компромиссы, режимы сбоев, шлюзы безопасности
Каждый паттерн в данном руководстве описан четырьмя компонентами:
Структура: архитектурное расположение в прозе -- какие агенты или экземпляры модели существуют, как они взаимодействуют, как выглядит поток данных и каков ключевой артефакт.
Компромиссы: что паттерн оптимизирует против того, чем жертвует. ReAct оптимизирует привязку к реальным инструментам, но жертвует эффективностью контекстного окна.
Режимы сбоев: конкретные способы, которыми каждый паттерн выходит из строя в продакшн, не очевидные из академических результатов бенчмарков.
Шлюзы безопасности: конкретные средства контроля, необходимые для предотвращения характерного режима сбоя безопасности каждого паттерна.
Эвристика выбора паттерна: длительность задачи x обратимость x уровень автономии
Три оси определяют, с какого паттерна начинать:
Длительность задачи: короткие задачи (до 5 вызовов инструментов) -- ReAct. Задачи среднего горизонта (6-20 шагов) -- Plan-and-Execute. Длинные или открытые задачи (20+ шагов) -- Reflexion или Supervisor-Worker.
Обратимость: если все действия обратимы -- любой паттерн применим. Если некоторые действия необратимы (удаление файлов, отправка email, запись в БД) -- добавьте шлюз Critic-Actor перед этими конкретными действиями.
Уровень автономии: L1-L2 -- ReAct или Plan-and-Execute. L3 -- Reflexion или Supervisor-Worker с ограничением радиуса поражения по ролям. L4 -- не развёртывается в продакшн без усиленной инфраструктуры безопасности.
ReAct: чередование рассуждений и действий
Структура: цикл «Мысль -> Действие -> Наблюдение»
ReAct (Reasoning + Acting), Яо и др. из Google Brain и Princeton (arXiv октябрь 2022, ICLR 2023), чередует рассуждение по цепочке мыслей с вызовами инструментов в едином блокноте контекстного окна. Цикл:
Thought: [рассуждение по цепочке мыслей, основанное на предыдущем наблюдении]
Action: [вызов инструмента -- имя функции и параметры]
Observation: [результат инструмента, возвращённый выполнением]
[повторять до:]
Thought: У меня достаточно информации, чтобы ответить.
Action: Finish[финальный ответ]
Результаты бенчмарков из оригинальной статьи: HotpotQA -- 57,1% точных совпадений с ReAct против 43,2% только цепочка мыслей (+14 пунктов). FEVER -- 75,4% против 66,4% (+9 пунктов).
Компромиссы: достоверность против роста контекстного окна
Главное преимущество ReAct -- рассуждение, заземлённое в наблюдениях. Цена -- рост контекстного окна. На задаче с 20 вызовами инструментов при среднем 200 токенов на тройку, блокнот один потребляет 4 000 токенов.
Режим сбоя: инъекция в блокнот
Режим сбоя безопасности ReAct нацелен непосредственно на блокнот. Если наблюдение инструмента содержит состязательный контент, этот контент дословно добавляется в блокнот.
Три необходимых одновременных меры:
- Санировать каждое наблюдение перед добавлением в блокнот
- Предварительно логировать каждое действие в Zone 2 до отправки
- Рассматривать каждое наблюдение инструмента как ненадёжный ввод
Plan-and-Execute: разделение планирования и выполнения
Структура: плановик генерирует полную декомпозицию задач перед выполнением
Plan-and-Execute разделяет две заботы, которые ReAct перемежает: агент-плановик получает цель и генерирует полную декомпозицию задач до начала выполнения.
Эффективность контекстного окна: план компактен (50-150 токенов для большинства задач). На долгосрочных задачах -- сокращение контекстного окна примерно на 40-60% по сравнению с ReAct.
Компромиссы: эффективность против устаревания плана
Основной режим сбоя -- устаревание плана. План генерируется в T=0. Если среда изменяется в ходе выполнения, оставшиеся шаги могут опираться на недействительные предусловия.
Шлюз безопасности: проверка плана перед отправкой
План -- дискретный артефакт, доступный до любого вызова инструмента. Автоматическая проверка политики перед выполнением: разобрать план на запрещённые типы действий, проверить, что каждое имя инструмента присутствует в списке разрешённых действий агента.
Reflexion: обучение на ошибках через вербальное подкрепление
Структура: рефлексия -> сохранение -> обусловливание следующей попытки
Reflexion, Шинн и др. из Northeastern, MIT и Princeton (arXiv март 2023, NeurIPS 2023) -- паттерн вербального обучения с подкреплением: после неудачной попытки выполнения задачи агент генерирует рефлексию на естественном языке, сохраняет её в буфере эпизодической памяти и обусловливает следующую попытку на извлечённой рефлексии.
Результаты бенчмарков: HumanEval кодирование pass@1 -- 91% с Reflexion против 80% (+11 пунктов). ALFWorld -- 97% против 73% (+24 пункта).
Риск безопасности: отравление эпизодической памяти
Режим сбоя безопасности Reflexion отличается от риска инъекции в блокнот ReAct и более устойчив. Если наблюдение содержит состязательный контент, сгенерированная рефлексия может неопределённо долго кодировать управляемые атакующим инструкции.
Четыре меры смягчения в порядке применения: санирование рефлексии перед сохранением; версионированное хранилище на доске с атрибуцией agent_id; TTL рефлексии; шлюз HITL-проверки для рефлексий, предлагающих категориальное изменение поведения.
Critic-Actor: разделение оценки и выполнения
Структура: актор предлагает, критик перехватывает перед выполнением
Паттерн Critic-Actor, производный от RLHF и Constitutional AI (Anthropic, 2022), разделяет генерацию действий и оценку действий. Модель-актор предлагает действие; модель-критик оценивает предложенное действие по политике; только действия, прошедшие оценку критика, доходят до слоя вызова инструментов.
Критически важная деталь реализации: критик должен иметь независимое контекстное окно от актора. Критик с тем же контекстом разделяет полный контекст актора.
Когда использовать Critic-Actor: порог необратимости
Critic-Actor добавляет задержку и необходим, когда действия пересекают порог необратимости: удаление файлов, отправка email, запись в БД, POST-вызовы внешних API.
Supervisor-Worker: ролевая координация нескольких агентов
Структура: суперваизер декомпозирует, работники выполняют в рамках роли
Supervisor-Worker: агент-суперваизер получает цель, декомпозирует на задачи и распределяет каждую задачу специализированному агенту-работнику с определённой ролью и ограниченным набором инструментов:
- ResearchWorker: инструменты =
web_search,read_file,read_url - CodeWorker: инструменты =
run_command,write_file,read_file - CommWorker: инструменты =
send_email,post_message
Свойство безопасности: ограничение радиуса поражения скомпрометированных работников
Главное свойство безопасности Supervisor-Worker -- ограничение радиуса поражения: скомпрометированный работник может вызвать только инструменты в рамках своей определённой роли. ResearchWorker, получивший внедрённую инструкцию вызвать send_email(), потерпит неудачу на проверке разрешений Zone 2.
Mixture-of-Agents: ансамблевое рассуждение по экземплярам моделей
Структура: многоуровневое агрегирование выходных данных моделей
Mixture-of-Agents (MoA), Ван и др. из Together AI (arXiv июнь 2024), агрегирует выходные данные нескольких экземпляров LLM через итеративные слои уточнения. Бенчмарк AlpacaEval 2.0: 65,1% вероятность победы с трёхуровневым MoA против 57,5% GPT-4o -- повышение качества на 7,6 пункта.
Компромиссы: качество против мультипликации API-затрат
3 модели x 3 слоя MoA требует около 12 вызовов LLM на запрос пользователя против 1 для одной модели -- увеличение API-затрат примерно в 12 раз. MoA не подходит для высокочастотных, задержко-чувствительных агентных циклов.
Позиция OpenLegion: безопасность паттернов -- это инфраструктура, а не промпт-инжиниринг
Каждый паттерн агентного дизайна в этом руководстве имеет режим сбоя безопасности, который оригинальная академическая статья не рассматривала. Специфичные для паттернов режимы сбоев безопасности:
- Инъекция в блокнот ReAct: состязательный контент наблюдения внедряет шаги Thought
- Инъекция плана Plan-and-Execute: артефакт плана может быть изменён между плановиком и исполнителем
- Отравление памяти Reflexion: отравленная рефлексия сохраняется в эпизодическом буфере между сессиями
- Обход критика с тем же контекстом: инъекция контекста актора также повреждает оценку критика
- Компрометация суперваизера: скомпрометированный суперваизер может распределять произвольные задачи всем работникам
| Контроль безопасности | OpenLegion | LangChain / LangGraph | CrewAI | AutoGen | OpenAI Agents SDK |
|---|---|---|---|---|---|
| Предварительное логирование действий | Zone 2, нативно | Соглашение разработчика | Соглашение разработчика | Соглашение разработчика | Соглашение разработчика |
| ACL плана на доске | Принудительно инфраструктурой | Недоступно | Недоступно | Недоступно | Недоступно |
| Версионированная эпизодическая память с атрибуцией agent_id | Нативно | Соглашение разработчика | Соглашение разработчика | Соглашение разработчика | Соглашение разработчика |
| Отдельная модель критика с независимым контекстом | Нативная изоляция агента | Ручная настройка | Ручная настройка | Ручная настройка | Ручная настройка |
| Принудительное применение разрешений инструментов Zone 2 для каждого работника | Принудительно инфраструктурой | Соглашение разработчика | Соглашение разработчика | Соглашение разработчика | Соглашение разработчика |
Часто задаваемые вопросы
Что такое паттерны проектирования агентного ИИ?
Паттерны проектирования агентного ИИ -- именованные переиспользуемые архитектурные решения для повторяющихся проблем в проектировании агентных систем, задающие как агент рассуждает, планирует, рефлексирует, делегирует и восстанавливается после сбоев. Основные паттерны: ReAct, Plan-and-Execute, Reflexion, Critic-Actor, Supervisor-Worker и Mixture-of-Agents. Выбор неправильного паттерна приводит к конкретным сбоям: ReAct на длинных задачах вызывает перегрузку; Plan-and-Execute без триггера перепланирования накапливает ошибки; Reflexion без очистки памяти допускает устойчивое отравление.
Что такое паттерн ReAct для ИИ-агентов?
ReAct (Reasoning + Acting), Яо и др. из Google Brain и Princeton (arXiv октябрь 2022, ICLR 2023), чередует рассуждение по цепочке мыслей с вызовами инструментов и результатами инструментов в едином блокноте, заземляя каждый шаг рассуждения в реальных результатах инструментов. В бенчмарках ReAct превзошёл только цепочку мыслей на 14 пунктов в HotpotQA и на 9 пунктов в FEVER. Главный компромисс в продакшн -- рост контекстного окна. Главный риск безопасности -- инъекция в блокнот.
Что такое паттерн Plan-and-Execute для ИИ-агентов?
Plan-and-Execute разделяет агента-плановика и агентов-исполнителей, сокращая потребление контекстного окна примерно на 40-60% на долгосрочных задачах по сравнению с ReAct и допуская автоматическую проверку политики плана перед выполнением любых вызовов инструментов. Основной режим сбоя -- устаревание плана, требующее триггера перепланирования.
Что такое паттерн Reflexion для ИИ-агентов?
Reflexion (Шинн и др., NeurIPS 2023) заставляет агентов генерировать вербальные сводки неудач, сохранять в эпизодическую память и обусловливать будущие попытки на извлечённых рефлексиях. HumanEval кодирование улучшилось с 80% до 91% pass@1 и ALFWorld с 73% до 97%. Риск безопасности -- отравление эпизодической памяти: состязательный контент может привести к сохранению отравленной рефлексии, влияющей на все будущие попытки.
Что такое паттерн Critic-Actor для ИИ-агентов?
Паттерн Critic-Actor разделяет модель-критика (оценивающую предложенные действия перед выполнением по политике) и модель-актора (генерирующую и выполняющую действия), гарантируя, что до слоя вызова инструментов доходят только действия, прошедшие оценку критика. Необходим при необратимых действиях (удаление файлов, отправка email, запись в БД). Отдельная модель-критик с независимым контекстным окном значительно сильнее критика с тем же контекстом.
Что такое паттерн Supervisor-Worker для ИИ-агентов?
Supervisor-Worker -- агент-суперваизер декомпозирует цели и распределяет задачи специализированным агентам-работникам с определёнными ролями и ограниченными наборами инструментов, так что каждый работник действует по принципу наименьших привилегий. Ограничение радиуса поражения -- главное преимущество безопасности: внедрённый работник, пытающийся использовать инструмент вне своей роли, потерпит неудачу на проверке разрешений Zone 2.
Что такое Mixture-of-Agents (MoA)?
Mixture-of-Agents (MoA), Ван и др. из Together AI (arXiv июнь 2024), агрегирует выходные данные нескольких экземпляров LLM через итеративные слои уточнения, исправляя некоррелированные ошибки по экземплярам. На AlpacaEval 2.0 трёхуровневый MoA достиг 65,1% вероятности победы против 57,5% у GPT-4o. Производственные затраты мультипликативны: примерно 12-кратное увеличение API-затрат.
Как выбрать между ReAct, Plan-and-Execute и Reflexion?
Выбор паттерна следует трём осям: длительность задачи, обратимость действий и уровень автономии. Для коротких задач с обратимыми действиями ReAct -- самый простой выбор. Для задач среднего горизонта Plan-and-Execute сокращает потребление контекстного окна на 40-60%. Для повторяющихся задач, где агент может учиться на своей истории ошибок, Reflexion добавляет кумулятивные улучшения производительности. Добавьте Critic-Actor, когда действия необратимы; добавьте Supervisor-Worker, когда различным шагам задачи действительно требуются разные наборы инструментов.