AI Agent 架构设计模式:ReAct、Plan-and-Execute 实战指南

AI Agent 架构设计模式:ReAct、Plan-and-Execute 实战指南

AI Agent 架构设计模式:ReAct、Plan-and-Execute 实战指南

2026 年,AI Agent 已经从概念走向生产环境。但你是否思考过:为什么有的 Agent 能稳定完成复杂任务,有的却频繁陷入死循环?

答案藏在架构设计模式中。

就像软件架构有 MVC、微服务、事件驱动一样,AI Agent 也有自己的设计模式。选对模式,Agent 能像瑞士钟表一样精准运转;选错模式,再强的 LLM 也会变成无头苍蝇。

本文将深入解析 4 种主流 AI Agent 架构模式,每种都附带可运行的 Python 代码和真实应用场景对比。读完这篇文章,你将能够:

  • 理解 ReAct 模式的核心思想(推理 + 行动的闭环)
  • 掌握 Plan-and-Execute 模式的分层规划策略
  • 设计 Multi-Agent 协作架构
  • 为不同场景选择最合适的架构模式

TL;DR:简单任务用 ReAct,复杂多步任务用 Plan-and-Execute,需要专业分工的场景用 Multi-Agent。没有银弹,只有权衡。


一、为什么架构模式如此重要?

1.1 一个真实的失败案例

假设你要构建一个”自动调研并生成报告”的 Agent。任务描述:

调研 2026 年 AI Agent 工具市场,分析 Top 5 产品,生成一份包含市场份额、技术特点、用户评价的报告。

错误的设计:直接让 LLM 一次性生成完整报告

# ❌ 错误示范:单步生成
response = llm.generate("生成 AI Agent 工具市场报告")

问题:

  • LLM 缺乏实时数据,只能编造信息
  • 无法访问互联网获取最新市场份额
  • 无法验证数据的准确性
  • 输出质量不可控

正确的设计:选择合适的架构模式,让 Agent 分步骤完成任务

# ✅ 正确示范:使用 ReAct 模式
agent = ReActAgent(llm=llm, tools=[search, analyze, write])
result = agent.run("调研 AI Agent 工具市场并生成报告")

1.2 架构模式的核心价值

架构模式解决的是如何组织 LLM 的推理和行动:

维度无架构有架构
任务分解❌ 一次性生成✅ 分步骤执行
工具调用❌ 无法使用外部工具✅ 动态调用 API
错误处理❌ 失败即终止✅ 自动重试修正
可解释性❌ 黑盒输出✅ 可追踪推理链
可控性❌ 结果不可预测✅ 可干预中间步骤

二、ReAct 模式:推理与行动的闭环

2.1 核心思想

ReAct = Reasoning + Acting

这是 2022 年由 Google 提出的经典范式。核心思想是:让 LLM 在每一步都先思考(Thought),再行动(Action),然后观察结果(Observation),循环往复直到完成任务。

┌─────────────────────────────────────────┐
│  Thought: 我需要搜索 AI Agent 工具市场数据  │
│  Action: search("AI Agent tools market 2026") │
│  Observation: 找到 5 篇相关报告...        │
│                                         │
│  Thought: 数据不够,需要补充用户评价       │
│  Action: search("AI Agent tools user reviews") │
│  Observation: 找到 Reddit 讨论帖...       │
│                                         │
│  Thought: 数据充足,开始分析               │
│  Action: analyze(data)                   │
│  Observation: 生成分析结果...             │
│                                         │
│  Thought: 分析完成,生成最终报告           │
│  Action: write_report(analysis)          │
│  Final Answer: [完整报告]                 │
└─────────────────────────────────────────┘

2.2 Python 代码实现

以下是一个简化的 ReAct Agent 实现(基于 LangChain 风格):

from langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool
from langchain.tools import BaseTool
import requests

# 1. 定义工具
class SearchTool(BaseTool):
    name = "search"
    description = "搜索互联网获取信息,输入关键词,返回相关结果"
    
    def _run(self, query: str):
        # 调用搜索 API(示例用 SerpAPI)
        api_key = "your_api_key"
        url = f"https://serpapi.com/search?q={query}&api_key={api_key}"
        response = requests.get(url).json()
        return [result["title"] + ": " + result["snippet"] 
                for result in response.get("organic_results", [])[:5]]

class WriteTool(BaseTool):
    name = "write"
    description = "将内容写入文件"
    
    def _run(self, content: str):
        with open("report.md", "w", encoding="utf-8") as f:
            f.write(content)
        return "报告已保存到 report.md"

# 2. 初始化 Agent
llm = OpenAI(model="gpt-4", temperature=0)
tools = [SearchTool(), WriteTool()]

agent = initialize_agent(
    tools,
    llm,
    agent="zero-shot-react-description",
    verbose=True  # 打印推理过程
)

# 3. 执行任务
result = agent.run("调研 2026 年 AI Agent 工具市场,分析 Top 5 产品,生成报告")
print(result)

运行输出(verbose=True 时):

> Entering new AgentExecutor chain...
Thought: 我需要先搜索 AI Agent 工具市场的相关信息
Action: search
Action Input: "AI Agent tools market 2026"
Observation: [找到 5 篇报告:Cursor 市场份额 35%, Claude Code 28%...]
Thought: 数据不够详细,需要补充用户评价
Action: search
Action Input: "AI Agent tools user reviews 2026"
Observation: [Reddit 讨论:Cursor 编程体验最佳, n8n 自动化最强...]
Thought: 数据充足,开始分析并生成报告
Action: write
Action Input: "# 2026 AI Agent 工具市场报告\n\n## 市场份额\n1. Cursor: 35%\n..."
Observation: 报告已保存到 report.md
Thought: 任务完成
Final Answer: 报告已生成,包含市场份额分析和用户评价总结。

2.3 适用场景

✅ 适合 ReAct 的场景:

  • 任务步骤不确定,需要动态探索
  • 需要多次调用工具收集信息
  • 任务复杂度中等(3-10 步)
  • 需要可解释的推理过程

❌ 不适合 ReAct 的场景:

  • 超复杂任务(>20 步),容易陷入循环
  • 需要严格顺序执行的流水线任务
  • 对延迟敏感的场景(每步都要 LLM 推理)

2.4 实战案例:智能客服 Agent

# 场景:电商客服 Agent,需要查询订单、物流、退换货政策

tools = [
    QueryOrderTool(),      # 查询订单状态
    CheckLogisticsTool(),  # 查询物流信息
    ReturnPolicyTool(),    # 查询退换货政策
    CreateTicketTool(),    # 创建工单
]

agent = ReActAgent(llm=gpt4, tools=tools)

# 用户输入
user_query = "我的订单 #12345 什么时候到?如果延迟了可以退款吗?"

# Agent 推理过程
# Thought: 用户询问订单 #12345 的物流状态
# Action: query_order("12345")
# Observation: 订单状态:已发货,预计 3 天后到达
# Thought: 用户还关心延迟退款政策
# Action: return_policy("延迟退款")
# Observation: 延迟超过 7 天可申请全额退款
# Thought: 信息充足,回复用户
# Final Answer: 您的订单预计 3 天后到达。如果延迟超过 7 天,可申请全额退款。

三、Plan-and-Execute 模式:分层规划与执行

3.1 核心思想

Plan-and-Execute = Planner + Executor

当任务过于复杂,ReAct 容易迷失方向时,我们需要分层设计:

  1. Planner(规划器):将复杂任务分解为子任务列表
  2. Executor(执行器):逐步执行每个子任务
  3. Replanner(重规划器):根据执行结果动态调整计划
┌─────────────────────────────────────────────┐
│  Planner: 分解任务                           │
│  Plan:                                       │
│    1. 搜索 AI Agent 工具市场数据              │
│    2. 分析 Top 5 产品的技术特点               │
│    3. 收集用户评价                            │
│    4. 生成市场份额图表                        │
│    5. 撰写完整报告                            │
└─────────────────────────────────────────────┘
          ↓
┌─────────────────────────────────────────────┐
│  Executor: 执行步骤 1                        │
│  Action: search("AI Agent tools market")     │
│  Result: [数据...]                           │
└─────────────────────────────────────────────┘
          ↓
┌─────────────────────────────────────────────┐
│  Replanner: 检查进度,调整计划               │
│  New Plan:                                   │
│    1. ✅ 已完成                               │
│    2. 分析 Top 5 产品(补充:需要对比价格)   │
│    3. 收集用户评价                            │
│    4. 生成市场份额图表                        │
│    5. 撰写完整报告                            │
└─────────────────────────────────────────────┘

3.2 Python 代码实现

from langchain.chat_models import ChatOpenAI
from langchain.experimental.plan_and_execute import PlanAndExecute, Plan
from langchain.experimental.plan_and_execute.agent_executor import LoadStepExecutor

# 1. 定义执行工具
tools = [
    SearchTool(),
    AnalyzeTool(),
    ChartTool(),
    WriteTool(),
]

# 2. 初始化 Planner 和 Executor
planner_llm = ChatOpenAI(model="gpt-4", temperature=0)
executor_llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# Planner:生成任务计划
planner = Plan(llm=planner_llm)

# Executor:执行每个子任务
executor = LoadStepExecutor(llm=executor_llm, tools=tools)

# 3. 组合成 Plan-and-Execute Agent
agent = PlanAndExecute(planner=planner, executor=executor)

# 4. 执行复杂任务
task = """
调研 2026 年 AI Agent 工具市场,要求:
1. 分析 Top 5 产品的市场份额和技术特点
2. 对比价格和功能
3. 收集至少 100 条用户评价
4. 生成市场份额饼图
5. 撰写 3000 字深度报告
"""

result = agent.run(task)

Planner 输出示例:

plan:
  - step: 1
    description: "搜索 AI Agent 工具市场报告和数据"
    tools: ["search"]
  - step: 2
    description: "分析 Top 5 产品的技术特点"
    tools: ["analyze"]
  - step: 3
    description: "对比价格和订阅模式"
    tools: ["search", "analyze"]
  - step: 4
    description: "收集用户评价(Reddit、Twitter、产品官网)"
    tools: ["search"]
  - step: 5
    description: "生成市场份额饼图"
    tools: ["chart"]
  - step: 6
    description: "撰写完整报告"
    tools: ["write"]

3.3 适用场景

✅ 适合 Plan-and-Execute 的场景:

  • 复杂多步任务(>10 步)
  • 需要明确的任务分解
  • 任务有清晰的阶段性目标
  • 需要动态调整计划

❌ 不适合的场景:

  • 简单任务(杀鸡用牛刀)
  • 高度交互式任务(需要实时反馈)

3.4 实战案例:自动化研究助手

# 场景:自动化学术研究助手

task = """
研究主题:Transformer 架构在计算机视觉中的应用
要求:
1. 搜索 2024-2026 年的顶会论文(CVPR、ICCV、ECCV)
2. 分析 ViT、DeiT、Swin Transformer 的技术演进
3. 对比 CNN 和 Transformer 在 ImageNet 上的性能
4. 整理开源代码仓库和 Star 数
5. 生成技术演进时间线图
6. 撰写 5000 字综述报告
"""

agent = PlanAndExecute(planner=gpt4_planner, executor=gpt4_executor)
result = agent.run(task)

# 输出:
# 1. 找到 47 篇相关论文
# 2. 技术演进分析:ViT → DeiT → Swin → ConvNeXt
# 3. 性能对比表:Transformer 在 Accuracy 上超越 CNN 2.3%
# 4. 整理 12 个开源仓库,总 Star 数 150K+
# 5. 生成时间线图(2020 ViT → 2021 DeiT → 2022 Swin V2)
# 6. 报告已保存到 research_report.pdf

四、Multi-Agent 协作架构:专业分工与协同

4.1 核心思想

Multi-Agent = 多个专业 Agent + 协调器

当任务涉及多个专业领域时,单个 Agent 难以胜任。我们需要让不同的 Agent 负责不同的专业领域,由协调器统一调度。

┌─────────────────────────────────────────────┐
│           Coordinator Agent                 │
│  (协调器:分配任务、汇总结果)              │
└─────────────────────────────────────────────┘
          ↓           ↓           ↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Researcher  │ │  Analyst    │ │   Writer    │
│   Agent     │ │   Agent     │ │   Agent     │
│ (研究员)  │ │ (分析师)  │ │ (写作者)  │
└─────────────┘ └─────────────┘ └─────────────┘
     ↓               ↓               ↓
  搜索论文        数据分析        撰写报告

4.2 Python 代码实现(LangGraph)

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator

# 1. 定义状态
class AgentState(TypedDict):
    task: str
    research_data: str
    analysis_result: str
    final_report: str

# 2. 定义专业 Agent
def researcher_agent(state: AgentState):
    """研究员:负责搜索和收集信息"""
    tools = [SearchTool(), ArxivTool()]
    agent = ReActAgent(llm=gpt4, tools=tools)
    result = agent.run(f"研究:{state['task']}")
    return {"research_data": result}

def analyst_agent(state: AgentState):
    """分析师:负责数据分析"""
    tools = [AnalyzeTool(), ChartTool()]
    agent = ReActAgent(llm=gpt4, tools=tools)
    result = agent.run(f"分析数据:{state['research_data']}")
    return {"analysis_result": result}

def writer_agent(state: AgentState):
    """写作者:负责撰写报告"""
    tools = [WriteTool()]
    agent = ReActAgent(llm=gpt4, tools=tools)
    result = agent.run(f"撰写报告:{state['analysis_result']}")
    return {"final_report": result}

# 3. 构建工作流图
workflow = StateGraph(AgentState)

# 添加节点
workflow.add_node("researcher", researcher_agent)
workflow.add_node("analyst", analyst_agent)
workflow.add_node("writer", writer_agent)

# 定义边(执行顺序)
workflow.set_entry_point("researcher")
workflow.add_edge("researcher", "analyst")
workflow.add_edge("analyst", "writer")
workflow.add_edge("writer", END)

# 4. 编译并运行
app = workflow.compile()

result = app.invoke({
    "task": "研究 Transformer 在 CV 中的应用",
    "research_data": "",
    "analysis_result": "",
    "final_report": ""
})

print(result["final_report"])

4.3 适用场景

✅ 适合 Multi-Agent 的场景:

  • 任务涉及多个专业领域
  • 需要并行处理多个子任务
  • 需要不同 LLM 模型(如 GPT-4 做研究,GPT-3.5 做写作)
  • 需要可插拔的 Agent 架构

❌ 不适合的场景:

  • 单一专业领域的任务
  • 任务步骤高度耦合

4.4 实战案例:自动化内容创作团队

# 场景:自动化博客创作团队

# 1. 研究员 Agent:负责调研
researcher = Agent(
    name="Researcher",
    role="调研主题、收集资料",
    tools=[SearchTool(), ArxivTool(), WebScraperTool()],
    llm=gpt4
)

# 2. 大纲 Agent:负责生成文章结构
outliner = Agent(
    name="Outliner",
    role="根据调研结果生成文章大纲",
    tools=[OutlineTool()],
    llm=gpt4
)

# 3. 写作者 Agent:负责撰写正文
writer = Agent(
    name="Writer",
    role="根据大纲撰写文章",
    tools=[WriteTool()],
    llm=gpt4
)

# 4. 编辑 Agent:负责校对和优化
editor = Agent(
    name="Editor",
    role="校对语法、优化表达、检查事实",
    tools=[GrammarTool(), FactCheckTool()],
    llm=gpt4
)

# 5. SEO Agent:负责优化 SEO
seo_specialist = Agent(
    name="SEO",
    role="优化标题、描述、关键词",
    tools=[SEOTool()],
    llm=gpt35  # SEO 任务不需要最强模型
)

# 构建工作流
workflow = StateGraph(ContentState)
workflow.add_node("researcher", researcher.run)
workflow.add_node("outliner", outliner.run)
workflow.add_node("writer", writer.run)
workflow.add_node("editor", editor.run)
workflow.add_node("seo", seo_specialist.run)

workflow.set_entry_point("researcher")
workflow.add_edge("researcher", "outliner")
workflow.add_edge("outliner", "writer")
workflow.add_edge("writer", "editor")
workflow.add_edge("editor", "seo")
workflow.add_edge("seo", END)

app = workflow.compile()

# 执行
result = app.invoke({
    "topic": "2026 年 AI Agent 架构设计模式",
    "research_data": "",
    "outline": "",
    "draft": "",
    "edited_draft": "",
    "final_article": ""
})

# 输出:一篇 SEO 优化、事实准确、表达流畅的文章

五、架构模式对比与选型指南

5.1 四种模式对比

维度ReActPlan-and-ExecuteMulti-AgentTool-use Agent
复杂度低中高低
任务步骤3-10 步10-50 步不限1-5 步
可解释性✅ 高✅ 高⚠️ 中⚠️ 低
灵活性✅ 高⚠️ 中✅ 高❌ 低
延迟中高高低
成本中高高低
适合场景探索性任务复杂多步任务多专业协作简单工具调用

5.2 选型决策树

任务是否涉及多个专业领域?
├─ 是 → Multi-Agent
└─ 否 → 任务步骤是否超过 10 步?
         ├─ 是 → Plan-and-Execute
         └─ 否 → 是否需要动态探索?
                  ├─ 是 → ReAct
                  └─ 否 → Tool-use Agent

5.3 真实案例对比

任务:生成一份 AI Agent 工具市场报告

模式执行方式耗时质量推荐度
ReAct边搜索边分析边写3 分钟⭐⭐⭐⭐⭐⭐
Plan-and-Execute先规划再执行5 分钟⭐⭐⭐⭐⭐⭐⭐⭐
Multi-Agent研究员+分析师+写作者协作8 分钟⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Tool-use Agent单次调用生成30 秒⭐⭐⭐⭐

六、常见问题解答(FAQ)

Q1: ReAct 和 Plan-and-Execute 可以结合使用吗?

A: 可以,而且推荐结合。在 Multi-Agent 架构中,每个专业 Agent 内部可以使用 ReAct 模式,而整体工作流使用 Plan-and-Execute 模式。

# 示例:Planner 分解任务,每个子任务用 ReAct Agent 执行
planner = PlanAndExecute(planner=gpt4_planner)

# Executor 内部是 ReAct Agent
executor = ReActAgent(llm=gpt4, tools=tools)

# 组合
agent = PlanAndExecute(planner=planner, executor=executor)

Q2: Multi-Agent 架构中,如何避免 Agent 之间的信息丢失?

A: 使用共享状态(Shared State)机制。在 LangGraph 中,所有 Agent 共享同一个 AgentState,每个 Agent 的输出都会更新到状态中,下一个 Agent 可以访问完整上下文。

class AgentState(TypedDict):
    task: str
    research_data: str      # Researcher 写入
    analysis_result: str    # Analyst 写入
    final_report: str       # Writer 写入

Q3: 如何选择合适的 LLM 模型?

A: 根据任务复杂度选择:

  • 简单工具调用:GPT-3.5-turbo / Claude Haiku(成本低)
  • 推理密集型任务:GPT-4 / Claude Sonnet(平衡性能与成本)
  • 复杂规划任务:GPT-4 / Claude Opus(最强推理能力)

在 Multi-Agent 中,可以为不同 Agent 分配不同模型:

researcher = Agent(llm=gpt4)      # 研究需要强推理
writer = Agent(llm=gpt35)         # 写作不需要最强模型
seo = Agent(llm=gpt35)            # SEO 优化简单

Q4: 如何处理 Agent 陷入死循环的问题?

A: 三种策略:

  1. 设置最大步数:限制 Agent 的最大执行步数
  2. 超时机制:设置任务超时时间
  3. 人工干预:在关键步骤加入人工审核
agent = ReActAgent(
    llm=gpt4,
    tools=tools,
    max_iterations=20,      # 最多 20 步
    timeout=300,            # 超时 5 分钟
    human_in_the_loop=True  # 关键步骤需人工确认
)

Q5: 这些架构模式可以用于生产环境吗?

A: 可以,但需要注意:

  • 错误处理:加入重试机制和降级策略
  • 成本控制:监控 Token 消耗,设置预算上限
  • 可观测性:记录每个 Agent 的推理过程,便于调试
  • 安全性:限制 Agent 的工具权限,防止误操作

七、总结与下一步

AI Agent 架构模式没有银弹,只有权衡:

  • ReAct:适合探索性任务,灵活但容易迷失
  • Plan-and-Execute:适合复杂多步任务,结构清晰但延迟高
  • Multi-Agent:适合多专业协作,强大但复杂
  • Tool-use Agent:适合简单任务,快速但能力有限

下一步阅读:


本文作者:Kevin Peng,freeaitool.com 主编。专注 AI 工具评测与实战教程分享。