第一章:认识三大框架

本节课带你认识LangChain、LangGraph、DeepAgents三大AI智能体框架,用Web开发类比帮助你快速理解各自定位与适用场景。

如果你是一个 Web 开发者,你大概会这样类比:

AI 框架Web 开发类比
LangChainExpress.js — 提供基础路由和中间件能力
LangGraph状态机库(如 XState)— 精确控制状态流转
DeepAgentsNext.js — 开箱即用的全栈框架,约定优于配置

1.1 它们是什么?

LangChain — 组件库

LangChain 是 AI 应用开发的基础组件库。它提供了:

  • 模型调用抽象(统一 OpenAI、Anthropic、Google 等接口)
  • 工具定义与绑定(bind_tools
  • 提示词模板
  • 输出解析器
  • 简单的 Agent 执行器(AgentExecutor

适合:简单的链式调用、一次性任务、不需要复杂状态管理的场景。

局限:没有内置的状态管理、没有循环控制、缺乏持久化和流式支持。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# LangChain 的典型用法 — 一条链走到底
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool

@tool
def search(query: str) -> str:
"""搜索信息"""
return f"搜索结果: {query}"

llm = ChatOpenAI(model="gpt-4o")
llm_with_tools = llm.bind_tools([search])

# 简单调用,没有状态,没有循环控制
response = llm_with_tools.invoke("今天天气怎么样?")

LangGraph — 状态图引擎

LangGraph 是有状态的图执行引擎,用于构建可控的 Agent 工作流。它提供了:

  • 状态图(StateGraph)— 定义节点和边
  • 持久化(Checkpointer)— 保存和恢复状态
  • 人工干预(interrupt)— 暂停等待人类确认
  • 流式输出 — 实时返回中间结果
  • 条件边 — 根据状态决定下一步

适合:需要精确控制执行流程、需要状态持久化、需要人工审批的复杂 Agent。

局限:需要手动定义每个节点和边,开发量大;没有内置的工具(规划、文件系统等)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# LangGraph — 你需要自己定义每个步骤
from langgraph.graph import StateGraph, START, END

builder = StateGraph(MessagesState)
builder.add_node("list_tables", list_tables)
builder.add_node("get_schema", get_schema)
builder.add_node("generate_query", generate_query)
builder.add_node("run_query", run_query)

builder.add_edge(START, "list_tables")
builder.add_edge("list_tables", "get_schema")
builder.add_edge("get_schema", "generate_query")
builder.add_conditional_edges("generate_query", should_continue)
builder.add_edge("run_query", "generate_query")

agent = builder.compile()

DeepAgents — 开箱即用的 Agent 框架

DeepAgents 是建立在 LangChain + LangGraph 之上的高级 Agent 框架。它提供了:

  • 内置的规划工具(write_todos
  • 虚拟文件系统(read_filewrite_fileedit_file
  • 上下文自动压缩与摘要
  • 子 Agent 自动委派
  • 长期记忆
  • 人类审批
  • 技能系统(Skills)
  • 权限控制

适合:复杂的、多步骤的、需要自主规划的 Agent 任务。

优势:一行代码创建 Agent,内置”大而全”的能力,不用从零搭建。

1
2
3
4
5
6
7
8
9
10
# DeepAgents — 一个函数搞定
from deepagents import create_deep_agent

agent = create_deep_agent(
model="openai:gpt-4o",
tools=[search],
system_prompt="你是一个有帮助的助手",
)

result = agent.invoke({"messages": [{"role": "user", "content": "今天天气怎么样?"}]})

1.2 框架层级关系

graph TD
subgraph DA["DeepAgents — 高级封装"]
    direction TB
    subgraph LG["LangGraph — 运行时"]
        direction TB
        LC["LangChain — 基础层"]
    end
end

DA1["内置工具、规划、文件系统"] -.-> DA
LG1["状态图、持久化、流式、人工干预"] -.-> LG
LC1["模型抽象、工具绑定、提示词"] -.-> LC

style DA fill:#f3e5f5,stroke:#7b1fa2
style LG fill:#fff9c4,stroke:#f9a825
style LC fill:#e3f2fd,stroke:#1565c0

关键理解:DeepAgents 不是 LangChain 或 LangGraph 的替代品,而是它们的上层封装。你用 DeepAgents 时,底层仍然是 LangChain 的模型调用和 LangGraph 的状态图执行。

1.3 核心区别对比

特性LangChainLangGraphDeepAgents
定位基础组件库状态图引擎高级 Agent 框架
开发量中等大(需手动定义图)小(一行创建)
状态管理有(Checkpointer)有(继承自 LangGraph)
内置规划有(write_todos)
文件系统有(虚拟文件系统)
上下文压缩有(自动摘要)
子 Agent手动实现有(内置 task 工具)
人类审批有(interrupt)有(interrupt_on)
流式输出有限有(继承自 LangGraph)
持久化
模型支持多厂商多厂商多厂商
部署方式自行搭建自行搭建managed + self-hosted
多租户有(内置)
适用场景简单链式任务复杂可控流程复杂自主 Agent

1.4 选型决策树

flowchart TD
A["你需要构建什么?"] --> B{"简单的 LLM 调用链?<br/>一次输入,一次输出"}
B -->|是| LC["✅ LangChain 就够了"]
B -->|否| C{"需要精确控制执行步骤<br/>和状态持久化?"}
C -->|是| LG["✅ LangGraph"]
C -->|否| D{"需要 Agent 自主规划<br/>处理大量上下文?"}
D -->|是| DA["✅ DeepAgents"]
D -->|否| E{"不确定 /<br/>想要最灵活的方案?"}
E --> DA2["✅ 从 DeepAgents 开始<br/>需要时降级到 LangGraph"]

style LC fill:#e3f2fd
style LG fill:#fff9c4
style DA fill:#e8f5e9
style DA2 fill:#e8f5e9

1.5 DeepAgents vs Claude Agent SDK

DeepAgents 的对标产品是 Anthropic 的 Claude Agent SDK,以下是关键区别:

维度DeepAgentsClaude Agent SDK
模型支持任意厂商(OpenAI、Anthropic、Google 等 100+)仅 Claude
执行环境沙箱内/外皆可,后端可插拔仅沙箱内
部署方式managed 云 + 自托管,无需改代码仅自托管
多租户内置(隔离线程、每用户沙箱、RBAC)需自行实现
Agent 服务器内置(流式端点、线程管理、Webhook)需自行构建
许可证MITMIT(Claude Code 本身专有)

选择 DeepAgents 的理由:模型灵活性、内置多租户、可插拔后端、开箱即用的生产部署。