第一章:认识三大框架
本节课带你认识LangChain、LangGraph、DeepAgents三大AI智能体框架,用Web开发类比帮助你快速理解各自定位与适用场景。
如果你是一个 Web 开发者,你大概会这样类比:
| AI 框架 | Web 开发类比 |
|---|---|
| LangChain | Express.js — 提供基础路由和中间件能力 |
| LangGraph | 状态机库(如 XState)— 精确控制状态流转 |
| DeepAgents | Next.js — 开箱即用的全栈框架,约定优于配置 |
1.1 它们是什么?
LangChain — 组件库
LangChain 是 AI 应用开发的基础组件库。它提供了:
- 模型调用抽象(统一 OpenAI、Anthropic、Google 等接口)
- 工具定义与绑定(
bind_tools) - 提示词模板
- 输出解析器
- 简单的 Agent 执行器(
AgentExecutor)
适合:简单的链式调用、一次性任务、不需要复杂状态管理的场景。
局限:没有内置的状态管理、没有循环控制、缺乏持久化和流式支持。
1 | # LangChain 的典型用法 — 一条链走到底 |
LangGraph — 状态图引擎
LangGraph 是有状态的图执行引擎,用于构建可控的 Agent 工作流。它提供了:
- 状态图(
StateGraph)— 定义节点和边 - 持久化(
Checkpointer)— 保存和恢复状态 - 人工干预(
interrupt)— 暂停等待人类确认 - 流式输出 — 实时返回中间结果
- 条件边 — 根据状态决定下一步
适合:需要精确控制执行流程、需要状态持久化、需要人工审批的复杂 Agent。
局限:需要手动定义每个节点和边,开发量大;没有内置的工具(规划、文件系统等)。
1 | # LangGraph — 你需要自己定义每个步骤 |
DeepAgents — 开箱即用的 Agent 框架
DeepAgents 是建立在 LangChain + LangGraph 之上的高级 Agent 框架。它提供了:
- 内置的规划工具(
write_todos) - 虚拟文件系统(
read_file、write_file、edit_file) - 上下文自动压缩与摘要
- 子 Agent 自动委派
- 长期记忆
- 人类审批
- 技能系统(Skills)
- 权限控制
适合:复杂的、多步骤的、需要自主规划的 Agent 任务。
优势:一行代码创建 Agent,内置”大而全”的能力,不用从零搭建。
1 | # DeepAgents — 一个函数搞定 |
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 核心区别对比
| 特性 | LangChain | LangGraph | DeepAgents |
|---|---|---|---|
| 定位 | 基础组件库 | 状态图引擎 | 高级 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,以下是关键区别:
| 维度 | DeepAgents | Claude Agent SDK |
|---|---|---|
| 模型支持 | 任意厂商(OpenAI、Anthropic、Google 等 100+) | 仅 Claude |
| 执行环境 | 沙箱内/外皆可,后端可插拔 | 仅沙箱内 |
| 部署方式 | managed 云 + 自托管,无需改代码 | 仅自托管 |
| 多租户 | 内置(隔离线程、每用户沙箱、RBAC) | 需自行实现 |
| Agent 服务器 | 内置(流式端点、线程管理、Webhook) | 需自行构建 |
| 许可证 | MIT | MIT(Claude Code 本身专有) |
选择 DeepAgents 的理由:模型灵活性、内置多租户、可插拔后端、开箱即用的生产部署。