返回 Agent教程

Agent 开发框架与模式深度对比:从理论到实践

在 AI Agent 的浪潮中,选择合适的开发框架和推理模式至关重要。本文将系统性地对比主流框架与模式,帮助开发者做出明智的技术选型。


目录

完整实战案例:详见《Agent 开发实战案例与 Demo


引言

随着大语言模型(LLM)的快速发展,AI Agent 已从简单的问答系统进化为能够自主规划、推理、执行复杂任务的智能体。然而,在构建 Agent 时,开发者面临着两个层面的选择:

  1. 推理模式(Pattern):Agent 如何思考和行动?
  2. 开发框架(Framework):使用什么工具来实现?

这两者相辅相成:模式提供了思维框架,框架提供了技术支撑。理解它们的本质区别和协同关系,是构建高质量 Agent 的关键。


一、推理模式篇:Agent 的思维引擎

推理模式定义了 Agent 的思维方式和工作流程,是 Agent 的"大脑"。

1.1 ReAct(Reasoning + Acting)

核心思想

将推理(Reasoning)与行动(Acting)交替进行,形成"思考-行动-观察"的循环。

工作流程

Question: 用户问题
    ↓
Thought: 我需要先收集信息...
    ↓
Action: Search["查询关键词"]
    ↓
Observation: 搜索结果为...
    ↓
Thought: 根据结果,我应该...
    ↓
Action: ...
    ↓
[重复直到完成]

Prompt 模板

你是一个智能助手,请按照以下格式回答:

Question: {问题}

Thought: {你的思考过程}
Action: {调用的工具和参数}
Observation: {工具返回的结果}

...(循环直到得到最终答案)

Answer: {最终答案}

适用场景

  • ✅ 多步骤任务(如:研究并撰写报告)
  • ✅ 需要外部工具调用的任务
  • ✅ 需要明确推理过程的场景
  • ✅ 写小说 Agent(世界观构建→角色设计→情节规划)

优缺点

| 优点 | 缺点 |
|------|------|
| 推理过程透明可追溯 | 成本较高(多次调用 LLM) |
| 易于调试和优化 | 容易陷入死循环 |
| 支持复杂任务规划 | 依赖 Prompt 质量 |

实战案例

# LangChain 实现 ReAct
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool

tools = [
    Tool(name="Search", func=search_wiki),
    Tool(name="Calculator", func=calculator),
]

prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)
result = executor.invoke({"input": "写一篇关于 Python 的文章"})

1.2 CoT(Chain of Thought)

核心思想

通过将复杂问题分解为多个步骤,逐步推导出结论。

工作流程

问题:23 * 17 = ?

步骤 1:将 23 拆分为 20 + 3
步骤 2:计算 20 * 17 = 340
步骤 3:计算 3 * 17 = 51
步骤 4:相加 340 + 51 = 391
步骤 5:验证:17 * 23 = 391

答案:391

Prompt 模板

请逐步思考以下问题,并给出详细的推理过程:

问题:{问题}

思考过程:
[你的逐步推理步骤...]

最终答案:
[你的答案]

适用场景

  • ✅ 数学计算和逻辑推理
  • ✅ 需要验证的任务
  • ✅ 情节逻辑检查(小说连贯性验证)
  • ❌ 不适合需要外部操作的任务

优缺点

| 优点 | 缺点 |
|------|------|
| 提升复杂问题准确率 | 纯推理,无法执行行动 |
| 逻辑清晰可验证 | 不适合需要多步骤交互的任务 |
| 成本相对较低 | 难以处理开放性任务 |


1.3 ToT(Tree of Thoughts)

核心思想

探索多种可能的推理路径,形成思维树,并通过评估选择最优路径。

工作流程

                 初始问题
                    ↓
        ┌───────────┼───────────┐
      路径 A      路径 B      路径 C
        ↓           ↓           ↓
    思节点 A1   思节点 B1   思节点 C1
        ↓           ↓           ↓
    思节点 A2   思节点 B2   思节点 C2
                    ↓
                  评估与剪枝
                    ↓
                  选择最优解

实现伪代码

def tree_of_thoughts(problem, max_depth=3, branches=3):
    # 初始化:生成初始想法
    thoughts = generate_initial_thoughts(problem, n=branches)

    for depth in range(max_depth):
        new_thoughts = []
        for thought in thoughts:
            # 为每个想法生成后续想法
            next_thoughts = generate_next_thoughts(thought, n=branches)
            # 评估每个新想法
            for t in next_thoughts:
                t.score = evaluate(t)
            new_thoughts.extend(next_thoughts)

        # 选择最好的 k 个想法
        thoughts = sorted(new_thoughts, key=lambda x: x.score, reverse=True)[:branches]

    return thoughts[0]  # 返回最优解

适用场景

  • ✅ 创意生成(小说情节分支)
  • ✅ 多结局探索
  • ✅ 复杂问题规划
  • ❌ 计算成本极高,不适合实时任务

实战案例:小说情节分支

# ToT 生成小说情节分支
initial_idea = "主角发现了一张神秘地图"

# 生成三条路径
branches = [
    "地图指向古代宝藏",
    "地图是外星人的信标",
    "地图是时间旅行的钥匙"
]

# 为每条路径生成后续
for branch in branches:
    next_scenarios = generate_scenarios(branch)
    # 评估每条后续的精彩程度
    scores = [evaluate(s) for s in next_scenarios]
    # 选择最优路径

1.4 Reflexion

核心思想

通过自我反思和错误学习,迭代改进执行结果。

工作流程

尝试执行 → 获取结果 → 自我反思 → 分析错误 → 修正策略 → 重新执行
    ↓                                                      ↑
    └────────────────────────────────────────────────────┘

Prompt 模板

你刚刚完成了以下任务:
[任务描述]

你的执行结果:
[执行结果]

请反思:
1. 哪些地方做得好?
2. 哪些地方可以改进?
3. 有什么错误或遗漏?

改进计划:
[你的改进计划]

适用场景

  • ✅ 写作迭代改进
  • ✅ 代码调试
  • ✅ 需要不断优化的任务

优缺点

| 优点 | 缺点 |
|------|------|
| 持续学习和改进 | 成本较高(多轮迭代) |
| 减少重复错误 | 可能收敛到局部最优 |
| 适合复杂任务 | 需要明确的评估标准 |


1.5 模式对比总结

| 模式 | 核心特点 | 复杂度 | 适用场景 | 成本 |
|------|----------|--------|----------|------|
| ReAct | 思考-行动交替 | ⭐⭐⭐ | 多步骤任务 | 中高 |
| CoT | 步骤推理 | ⭐⭐ | 逻辑验证 | 低 |
| ToT | 树形探索 | ⭐⭐⭐⭐⭐ | 创意发散 | 极高 |
| Reflexion | 反思迭代 | ⭐⭐⭐⭐ | 持续优化 | 中高 |


二、开发框架篇:构建 Agent 的工具箱

开发框架提供了实现推理模式的具体工具和基础设施。

2.1 LangChain

概述

LangChain 是目前最流行的 Agent 开发框架,提供丰富的工具链和预构建组件。

核心特性

# 1. Chain 组合
from langchain.chains import SequentialChain

research_chain = create_research_chain()
write_chain = create_write_chain()
publish_chain = create_publish_chain()

full_chain = SequentialChain(
    chains=[research_chain, write_chain, publish_chain],
    input_variables=["topic"],
    output_variables=["article_url"]
)

# 2. Tool 集成
tools = [
    Tool(name="Search", func=search_google),
    Tool(name="WebScrape", func=scrape_web),
    Tool(name="Database", func=query_db),
]

# 3. Memory 管理
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
    return_messages=True,
    memory_key="chat_history"
)

# 4. Agent 编排
agent = AgentExecutor(
    agent=create_react_agent(llm, tools, prompt),
    tools=tools,
    memory=memory,
    verbose=True
)

优点

  • ✅ 生态成熟,社区活跃
  • ✅ 预构建工具丰富(搜索、数据库、API 等)
  • ✅ 支持多种 LLM(OpenAI、Claude、HuggingFace)
  • ✅ 文档完善,学习资源多

缺点

  • ❌ 主要面向 Python,Node.js 支持较弱
  • ❌ 学习曲线陡峭
  • ❌ 某些功能过度设计,简单任务显得笨重

适用场景

  • Python 开发者
  • 需要快速集成多种工具
  • 企业级应用开发

2.2 LangGraph

概述

LangGraph 是 LangChain 的扩展,专门用于构建有状态的、可视化的 Agent 工作流。

核心特性

from langgraph.graph import StateGraph, END

# 定义状态
class AgentState(TypedDict):
    topic: str
    research_data: str
    draft: str
    final_article: str

# 创建图
workflow = StateGraph(AgentState)

# 添加节点
workflow.add_node("researcher", research_node)
workflow.add_node("writer", write_node)
workflow.add_node("editor", edit_node)

# 定义边
workflow.add_edge("researcher", "writer")
workflow.add_edge("writer", "editor")
workflow.add_edge("editor", END)

# 可视化
workflow.get_graph().print_ascii()

优点

  • ✅ 工作流可视化
  • ✅ 状态管理清晰
  • ✅ 适合多 Agent 协作
  • ✅ 支持条件分支和循环

缺点

  • ❌ 仍以 Python 为主
  • ❌ 需要额外学习 Graph 概念
  • ❌ 性能开销较大

适用场景

  • 复杂多阶段流程
  • 需要状态追踪的任务
  • 多 Agent 协作系统

2.3 AutoGPT

概述

AutoGPT 是一个自主运行的 Agent,能够自主分解任务、执行、评估和迭代。

核心工作流程

1. 设定目标
   ↓
2. 分解任务为子目标
   ↓
3. 执行子任务
   ↓
4. 评估结果
   ↓
5. 自我反思和调整
   ↓
6. [循环直到目标完成]

配置示例

# config.yaml
ai_name: "NovelWriter"
ai_role: "专业小说作家"
ai_goals:
  - "创作一部 10 万字的科幻小说"
  - "确保情节逻辑连贯"
  - "保持角色性格一致"

constraints:
  - "遵守科幻小说的基本规则"
  - "避免使用陈词滥调"

api_budget: 1.0  # $1 预算

优点

  • ✅ 自主性强,自动规划
  • ✅ 适合长期目标
  • ✅ 可配置性强

缺点

  • ❌ 容易陷入死循环
  • ❌ 成本难以控制
  • ❌ 需要严格监督

适用场景

  • 自动化长期任务
  • 需要高度自主的场景
  • 研究和实验项目

2.4 OpenAI Swarm

概述

Swarm 是 OpenAI 推出的轻量级 Agent 框架,专注于多 Agent 协作。

核心特性

from swarm import Agent

# 定义 Agents
researcher = Agent(
    name="Researcher",
    instructions="负责搜集信息和资料",
    functions=[search, scrape]
)

writer = Agent(
    name="Writer",
    instructions="负责撰写文章",
    functions=[write, format]
)

editor = Agent(
    name="Editor",
    instructions="负责校对和润色"
)

# 传递任务
response = researcher.run("搜集 AI 领域最新动态")
response = writer.run(f"基于以下资料写文章:{response}")
response = editor.run(f"校对以下文章:{response}")

优点

  • ✅ 简单易用
  • ✅ 轻量级
  • ✅ 多 Agent 协作友好

缺点

  • ❌ 功能相对基础
  • ❌ 状态管理较弱
  • ❌ 工具集成不如 LangChain

适用场景

  • 快速原型开发
  • 多 Agent 协作
  • 轻量级任务

2.5 OpenClaw

概述

OpenClaw 是一个基于 Node.js 的 Agent 平台,提供原生的 Agent 管理和编排能力。

核心特性

// 1. Agent 生命周期管理
const agent = await sessions_spawn({
  agentId: "novel-writer",
  task: "写一部武侠小说",
  mode: "session",
  thread: true
});

// 2. Agent 间通信
await sessions_send({
  sessionKey: "agent:media-leader:news-hunter",
  message: "搜索 AI 领域热点"
});

// 3. 记忆系统
const results = await memory_search({
  query: "最近的任务记录"
});

// 4. 子 Agent 调度
const subAgent = await sessions_spawn({
  runtime: "acp",  // ACP 编码会话
  task: "开发一个 API 接口"
});

优点

  • ✅ Node.js 原生,适合全栈开发者
  • ✅ Agent 管理和编排内置
  • ✅ 轻量级,易于部署
  • ✅ 支持多种运行时(subagent、acp)
  • ✅ 跨平台(Windows、Linux、macOS)

缺点

  • ❌ 生态相对较小
  • ❌ 工具链不如 LangChain 丰富
  • ❌ 社区资源较少

适用场景

  • Node.js 开发者
  • 需要 Agent 编排的系统
  • 轻量级部署

2.6 框架对比总结

| 框架 | 语言 | 复杂度 | 生态 | 适用场景 |
|------|------|--------|------|----------|
| LangChain | Python | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 企业级应用,快速集成 |
| LangGraph | Python | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 复杂工作流,多 Agent |
| AutoGPT | Python | ⭐⭐⭐ | ⭐⭐⭐ | 自主任务,长期目标 |
| Swarm | Python | ⭐⭐ | ⭐⭐⭐ | 轻量级,快速原型 |
| OpenClaw | Node.js | ⭐⭐⭐ | ⭐⭐ | Node.js 生态,编排管理 |


三、深度对比分析

3.1 模式 vs 框架

| 维度 | 模式(Pattern) | 框架(Framework) |
|------|-----------------|-------------------|
| 本质 | 思维方法 | 技术工具 |
| 形态 | 抽象设计 | 具体代码 |
| 代码 | 无(Prompt 模板) | 有(库和 API) |
| 依赖 | 仅 LLM | LLM + 工具链 |
| 学习成本 | 低 | 中高 |
| 灵活性 | 高 | 受框架限制 |
| 实现难度 | 需自行实现 | 开箱即用 |

3.2 模式与框架的协同

┌─────────────────────────────────────┐
│     应用层:你的 Agent 应用          │
└─────────────────────────────────────┘
           ↓ 选择
┌─────────────────────────────────────┐
│     推理模式层:Agent 如何思考      │
│  (ReAct / CoT / ToT / Reflexion)    │
└─────────────────────────────────────┘
           ↓ 选择
┌─────────────────────────────────────┐
│   框架层:用什么工具实现            │
│  (LangChain / LangGraph / OpenClaw) │
└─────────────────────────────────────┘
           ↓
┌─────────────────────────────────────┐
│   基础设施层:LLM + 工具链          │
└─────────────────────────────────────┘

3.3 组合矩阵

| 模式 \ 框架 | LangChain | LangGraph | AutoGPT | Swarm | OpenClaw |
|-------------|-----------|-----------|---------|-------|----------|
| ReAct | ✅ 原生支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 原生支持 |
| CoT | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| ToT | ⚠️ 需自行实现 | ⚠️ 需自行实现 | ✅ 支持 | ❌ 不支持 | ⚠️ 需自行实现 |
| Reflexion | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |

3.4 性能对比

成本(Token 消耗)

ReAct:    高(每次循环都调用 LLM)
ToT:      极高(树形探索)
CoT:      中(只需一次完整推理)
Reflexion: 中高(多轮迭代)

响应时间

CoT:      快(单次调用)
ReAct:    中(多次调用)
Reflexion: 慢(多轮迭代)
ToT:      极慢(大量分支)
``#### 开发效率

LangChain: 高(工具丰富)
Swarm: 中高(简单直接)
OpenClaw: 中(轻量但生态小)
AutoGPT: 中(配置为主)
LangGraph: 中低(复杂度高)


---

## 四、实战指南:如何选择

### 4.1 决策树

开始

需要自主规划和执行吗?
├─ 是 → 需要多 Agent 协作吗?
│ ├─ 是 → LangGraph(复杂工作流)
│ │ Swarm(轻量协作)
│ └─ 否 → AutoGPT(高度自主)

└─ 否 → 你的主要技术栈?
├─ Python → LangChain(通用)
├─ Node.js → OpenClaw
└─ 其他 → LangChain(最佳文档)


### 4.2 场景推荐

#### 场景 1:写小说 Agent

**推荐组合**:OpenClaw + ReAct + Reflexion

**理由**:
- 轻量级,易于迭代
- ReAct 支持多步骤任务(世界观→角色→情节)
- Reflexion 支持持续改进

```javascript
// 实现思路
async function novelWritingAgent(topic) {
  // ReAct 循环
  while (!completed) {
    const thought = await llm.generate("思考下一步...");
    const action = parseAction(thought);

    if (action.type === "create_world") {
      await createWorld(action.params);
    } else if (action.type === "create_character") {
      await createCharacter(action.params);
    } else if (action.type === "write_chapter") {
      const draft = await writeChapter(action.params);

      // Reflexion
      const feedback = await llm.generate("反思并改进...");
      if (feedback.needsRevision) {
        await reviseChapter(draft, feedback);
      }
    }
  }
}

场景 2:自动化研报生成

推荐组合:LangChain + ReAct + 多个 Agents

理由

  • 需要集成多个工具(搜索、数据库、API)
  • LangChain 工具链丰富
  • 多 Agent 协作(研究员→分析师→写手)
from langchain.agents import AgentExecutor, create_react_agent

researcher = create_agent("Researcher", tools=[Search, Database])
analyst = create_agent("Analyst", tools=[Calculator, Chart])
writer = create_agent("Writer", tools=[DocumentGenerator])

# 编排
def generate_report(topic):
    data = researcher.run(f"搜集 {topic} 相关数据")
    analysis = analyst.run(f"分析以下数据:{data}")
    report = writer.run(f"基于分析生成报告:{analysis}")
    return report

场景 3:对话式知识库

推荐组合:CoT + LangChain(或 OpenClaw)+ 向量数据库

理由

  • 不需要复杂行动
  • CoT 提升推理准确率
  • 向量数据库提供记忆
from langchain.memory import VectorStoreMemory
from langchain.vectorstores import Chroma

# 记忆系统
vectorstore = Chroma(collection_name="knowledge_base")
memory = VectorStoreMemory(
    vectorstore=vectorstore,
    memory_key="chat_history"
)

# CoT Prompt
prompt = PromptTemplate(
    template="""
    历史对话:{chat_history}

    问题:{question}

    请逐步推理并给出详细解答:
    [你的推理步骤...]
    """,
    input_variables=["chat_history", "question"]
)

场景 4:创意生成与探索

推荐组合:ToT + LangGraph

理由

  • 需要探索多种可能性
  • ToT 支持树形分支
  • LangGraph 可视化流程
from langgraph.graph import StateGraph

workflow = StateGraph(AgentState)

# 定义多个分支
workflow.add_node("branch_a", branch_a_node)
workflow.add_node("branch_b", branch_b_node)
workflow.add_node("branch_c", branch_c_node)

# 条件分支
workflow.add_conditional_edges(
    "explore",
    should_continue,
    {
        "a": "branch_a",
        "b": "branch_b",
        "c": "branch_c",
        "end": END
    }
)

4.3 选型建议

| 需求 | 推荐模式 | 推荐框架 |
|------|----------|----------|
| 快速原型 | ReAct | Swarm / OpenClaw |
| 企业级应用 | ReAct / Reflexion | LangChain |
| 复杂工作流 | ReAct | LangGraph |
| 自主长期任务 | Reflexion | AutoGPT |
| 创意探索 | ToT | LangGraph |
| 轻量级部署 | ReAct | OpenClaw |
| Python 生态 | 任意 | LangChain 系列 |
| Node.js 生态 | 任意 | OpenClaw |


五、未来趋势

5.1 模式演进

  • 多模态 ReAct:结合视觉、语音等多种输入
  • 自适应 ToT:动态调整探索深度和广度
  • 群体智能:多个 Agents 协同进化

5.2 框架发展

  • 统一抽象层:跨框架的标准化接口
  • 低代码/无代码:可视化构建 Agents
  • 云原生部署:Serverless Agents
  • 边缘计算:本地化隐私保护

5.3 技术融合

LLM + 向量数据库 + 知识图谱 + Agent 框架
                    ↓
              新一代智能体

总结

Agent 开发是模式与框架的艺术:

  • 模式(Pattern) 提供了思维方式:如何思考、如何行动
  • 框架(Framework) 提供了技术支撑:如何实现、如何部署

选择时考虑:

  1. 任务复杂度 → 选择合适的推理模式
  2. 技术栈 → 选择匹配的框架
  3. 性能要求 → 权衡成本和响应时间
  4. 团队能力 → 考虑学习曲线和维护成本

记住:没有"最好"的框架和模式,只有"最适合"的。理解本质,灵活运用,才能构建出高效的 Agent 系统。


参考资料