Chain-of-Thought: базовый паттерн рассуждений
Chain-of-Thought (CoT) — это техника, при которой модель явно генерирует промежуточные шаги рассуждения перед выдачей финального ответа. В контексте агентов CoT используется как внутренний «внутренний монолог», позволяющий LLM декомпозировать сложные задачи.
Стандартный промпт для CoT включает инструкцию «думай шаг за шагом» (think step by step) либо few-shot примеры с развёрнутыми цепочками рассуждений. Экспериментально доказано, что такой подход снижает процент ошибок на задачах многошаговой логики на 30–40% по сравнению с прямым ответом.
Однако CoT в чистом виде не подходит для агентов, которым нужен доступ к внешним данным — он работает только с информацией, уже присутствующей в контексте. Для вызова инструментов необходимы более продвинутые паттерны.
ReAct: интеграция рассуждений и действий
ReAct (Reason + Act) — на сегодняшний день наиболее распространённый паттерн для агентов, требующих взаимодействия с внешними системами. Цикл работы: Thought → Action → Observation → повтор до получения финального ответа.
Каждая итерация цикла выглядит следующим образом:
- Thought: модель формулирует, что нужно узнать или сделать
- Action: выбор инструмента и параметров вызова (например: search("последняя версия LangChain"))
- Observation: результат выполнения инструмента, добавляемый в контекст
Преимущества ReAct: простота реализации, прозрачность цепочки рассуждений, возможность вмешательства человека на любом шаге. Основное ограничение — последовательное выполнение: агент не может параллельно вызвать несколько инструментов в одном шаге.
ReAct хорошо работает при глубине цепочки до 10–15 шагов. При большей глубине контекст «засоряется» промежуточными наблюдениями, и модель начинает «галлюцинировать» или зацикливаться.
Plan-and-Execute: разделение планирования и исполнения
Plan-and-Execute (P&E) разделяет агента на две роли: Planner и Executor. Planner (обычно более мощная модель или специализированный промпт) строит детальный план задачи. Executor последовательно выполняет шаги плана, при необходимости корректируя его.
Архитектура P&E решает ключевую проблему ReAct — «близорукость»: ReAct-агент выбирает следующее действие, видя только текущий контекст, тогда как P&E позволяет спланировать всю последовательность шагов заранее.
Типичная реализация P&E на LangChain:
planner = create_structured_chat_agent(llm_powerful, tools, planner_prompt)
executor = AgentExecutor(agent=create_react_agent(llm_fast, tools, executor_prompt), tools=tools)
plan = planner.invoke({"input": user_query})
for step in plan.steps:
result = executor.invoke({"input": step})
Недостаток P&E — негибкость: если план составлен неверно, исполнитель может не иметь контекста для самостоятельной корректировки. Рекомендуется добавлять механизм re-planning при ошибках исполнения.
Гибридные архитектуры и практические рекомендации
На практике большинство production-систем используют гибридные архитектуры. Наиболее эффективные комбинации:
- CoT + ReAct: внутренний монолог реализуется через CoT, а вызовы инструментов — через ReAct. Это стандартный подход в Claude и GPT-4 с function calling.
- P&E + ReAct: планировщик строит граф задач, каждый узел которого выполняется ReAct-агентом. Используется в AutoGen и LangGraph.
- Reflexion: агент после каждого неудачного исполнения генерирует «рефлексию» (анализ ошибок) и повторяет попытку. Значительно повышает качество на задачах с верифицируемым результатом (код, математика).
При выборе паттерна руководствуйтесь следующими критериями: если задача требует до 5 шагов и хорошо определена — используйте ReAct; если задача сложная и многошаговая — P&E; если нужна высокая точность с возможностью самокоррекции — Reflexion или P&E с re-planning.
Независимо от выбранного паттерна, всегда устанавливайте максимальное количество итераций (max_iterations), чтобы предотвратить бесконечные циклы. Типичные значения: 10–20 для ReAct, 3–5 для P&E с re-planning.
Оценка паттернов по ключевым метрикам
Для выбора оптимального паттерна сравните их по следующим характеристикам:
- CoT: низкая стоимость токенов, нет внешних вызовов, ограниченная гибкость, лучший выбор для задач «в контексте».
- ReAct: умеренная стоимость, поддержка инструментов, высокая прозрачность, оптимален для задач с 3–15 шагами.
- Plan-and-Execute: более высокая стоимость за счёт двух LLM-вызовов на этапе планирования, но превосходное качество на длинных задачах, лучший выбор для enterprise-сценариев.
Рефлексия значительно повышает качество, но увеличивает стоимость в 2–3 раза — применяйте только там, где точность критична.
Заключение
Выбор архитектурного паттерна — одно из первых и наиболее важных решений при проектировании ИИ агента. ReAct остаётся золотым стандартом для большинства задач благодаря балансу простоты и эффективности. Plan-and-Execute выигрывает на сложных многошаговых задачах, где важно глобальное планирование. Гибридные подходы и Reflexion обеспечивают наивысшее качество ценой дополнительных вычислительных ресурсов. Начинайте с ReAct, профилируйте производительность и переходите к более сложным паттернам только при наличии обоснованных требований.