Перейти к содержимому

Паттерны проектирования агентного ИИ: 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 нацелен непосредственно на блокнот. Если наблюдение инструмента содержит состязательный контент, этот контент дословно добавляется в блокнот.

Три необходимых одновременных меры:

  1. Санировать каждое наблюдение перед добавлением в блокнот
  2. Предварительно логировать каждое действие в движке политик до отправки
  3. Рассматривать каждое наблюдение инструмента как ненадёжный ввод

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(), потерпит неудачу на проверке разрешений движка политик.

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: отравленная рефлексия сохраняется в эпизодическом буфере между сессиями
  • Обход критика с тем же контекстом: инъекция контекста актора также повреждает оценку критика
  • Компрометация суперваизера: скомпрометированный суперваизер может распределять произвольные задачи всем работникам
Контроль безопасностиOpenLegionLangChain / LangGraphCrewAIAutoGenOpenAI Agents SDK
Предварительное логирование действийДвижок политик, нативноСоглашение разработчикаСоглашение разработчикаСоглашение разработчикаСоглашение разработчика
ACL плана в общей записиПринудительно инфраструктуройНедоступноНедоступноНедоступноНедоступно
Версионированная эпизодическая память с атрибуцией agent_idНативно, версии по квитанциямСоглашение разработчикаСоглашение разработчикаСоглашение разработчикаСоглашение разработчика
Отдельная модель критика с независимым контекстомНативная изоляция агентаРучная настройкаРучная настройкаРучная настройкаРучная настройка
Принудительное применение разрешений инструментов движком политик для каждого работникаПринудительно инфраструктуройСоглашение разработчикаСоглашение разработчикаСоглашение разработчикаСоглашение разработчика

Начать строить на OpenLegion

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

Что такое паттерны проектирования агентного ИИ?

Паттерны проектирования агентного ИИ -- именованные переиспользуемые архитектурные решения для повторяющихся проблем в проектировании агентных систем, задающие как агент рассуждает, планирует, рефлексирует, делегирует и восстанавливается после сбоев. Основные паттерны: 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 -- агент-суперваизер декомпозирует цели и распределяет задачи специализированным агентам-работникам с определёнными ролями и ограниченными наборами инструментов, так что каждый работник действует по принципу наименьших привилегий. Ограничение радиуса поражения -- главное преимущество безопасности: внедрённый работник, пытающийся использовать инструмент вне своей роли, потерпит неудачу на проверке разрешений движка политик.

Что такое 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, когда различным шагам задачи действительно требуются разные наборы инструментов.