LangChain、LangGraph 与 Deep Agents:一文搞懂三者区别与选型
前言
随着 AI Agent 技术的快速发展,LangChain 生态系统不断演进,推出了多个层次的框架和工具。很多开发者在接触时会产生困惑:LangChain、LangGraph 和 Deep Agents 到底有什么区别?我应该用哪个?
本文将从架构设计、核心能力、适用场景三个维度,深入解析这三个框架的区别,帮助你做出正确的技术选型。
背景:为什么会有三个框架?
LangChain 生态的演进路径如下:
LangChain(2022)→ LangGraph(2024)→ Deep Agents(2025) ↓ ↓ ↓ 核心构建块 编排运行时 Agent 框架
-
LangChain:最早推出的 LLM 应用开发框架,提供 Chain、Agent、Tool、Memory 等模块化组件
-
LangGraph:基于有向图的 Agent 编排运行时,解决复杂工作流的流程控制问题
-
Deep Agents:最新的 Agent 框架(harness),内置任务规划、上下文管理、子代理生成等高级能力
核心区别对比
架构层次
┌─────────────────────────────────────────────────────────────┐ │ Deep Agents(框架层) │ │ 内置:任务规划、文件系统、子代理、长期记忆、人类审批 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ LangGraph(运行时层) │ │ 提供:状态图、持久化、流式处理、人在回路、检查点 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ LangChain(构建块层) │ │ 提供:模型调用、工具定义、Prompt 模板、输出解析 │ └─────────────────────────────────────────────────────────────┘
功能对比
| 维度 | LangChain | LangGraph | Deep Agents |
|---|---|---|---|
| 定位 | 核心构建块框架 | 编排运行时 | Agent 框架(harness) |
| 架构模型 | Chain(链式调用) | Graph(状态图) | 工具调用循环 + 内置能力 |
| 状态管理 | 基础 Memory | 完善的 Checkpoint | 文件系统 + 长期记忆 |
| 流程控制 | 线性链 | 条件分支、循环、并行 | 任务规划、子代理生成 |
| 人在回路 | 需手动实现 | 内置支持 | 内置支持 |
| 持久化 | 需手动实现 | 内置支持 | 内置支持 |
| 上下文管理 | 基础 | 中等 | 高级(压缩、摘要、文件系统) |
| 学习曲线 | 低 | 中 | 中高 |
| 适用场景 | 简单 RAG、单轮对话 | 复杂工作流 | 复杂多步任务 |
代码对比
LangChain 方式
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""获取城市天气"""
return f"{city} 天气晴朗!"
# 创建基础 Agent
agent = create_agent(
model="openai:gpt-4",
tools=[get_weather],
system_prompt="你是一个有用的助手",
)
# 调用 Agent
result = agent.invoke(
{"messages": [{"role": "user", "content": "北京天气怎么样?"}]}
)
特点:简单直接,适合单轮对话和简单任务。
LangGraph 方式
from langgraph.graph import StateGraph, MessagesState
from langchain_openai import ChatOpenAI
# 定义状态图
workflow = StateGraph(MessagesState)
# 添加节点
workflow.add_node("agent", call_model)
workflow.add_node("tools", tool_node)
# 添加边
workflow.add_edge(START, "agent")
workflow.add_conditional_edges("agent", should_continue)
workflow.add_edge("tools", "agent")
# 编译
app = workflow.compile()
# 调用
result = app.invoke({"messages": [("user", "北京天气怎么样?")]})
特点:基于状态图,支持复杂流程控制、条件分支、循环。
Deep Agents 方式
from deepagents import create_deep_agent
def get_weather(city: str) -> str:
"""获取城市天气"""
return f"{city} 天气晴朗!"
# 创建 Deep Agent
agent = create_deep_agent(
model="openai:gpt-4",
tools=[get_weather],
system_prompt="你是一个有用的助手",
)
# 调用 Agent(自动启用任务规划、上下文管理等)
result = agent.invoke(
{"messages": [{"role": "user", "content": "帮我规划一次北京三日游"}]}
)
特点:内置高级能力,自动处理任务分解、上下文管理。
详细解析
1. LangChain:核心构建块
核心组件:
-
Models:模型调用封装
-
Prompts:Prompt 模板管理
-
Chains:链式调用
-
Agents:工具调用 Agent
-
Memory:对话记忆
-
Tools:工具定义
优势:
-
生态丰富,集成众多 LLM 和工具
-
学习曲线低,上手快
-
社区活跃,文档完善
局限:
-
复杂工作流实现困难
-
状态管理需要手动实现
-
随着功能增多,架构变重
适用场景:
-
简单 RAG 应用
-
单轮对话 Agent
-
快速原型开发
2. LangGraph:编排运行时
核心特性:
-
状态图(State Graph):基于有向图的工作流定义
-
Checkpoint:内置状态持久化,支持断点续传
-
流式处理:支持实时流式输出
-
人在回路(Human-in-the-loop):内置人工审批机制
-
条件分支:支持复杂的流程控制
架构设计:
用户输入 → Agent 节点 → 条件判断 → 工具节点 → Agent 节点 → 输出 ↑ ↓ └────────────────────┘ (循环)
优势:
-
精细的流程控制
-
内置持久化和恢复
-
支持复杂多步工作流
-
与 LangChain 完全兼容
局限:
-
学习曲线较陡
-
需要理解状态图概念
-
对于简单任务过于复杂
适用场景:
-
复杂多步骤工作流
-
需要人工审批的流程
-
需要断点续传的任务
-
多 Agent 协作系统
3. Deep Agents:Agent 框架
内置能力:
| 能力 | 说明 |
|---|---|
| 任务规划 | 内置 write_todos 工具,自动分解复杂任务 |
| 文件系统 | 虚拟文件系统管理上下文,支持大文件处理 |
| 子代理生成 | 自动创建子代理并行处理任务 |
| 长期记忆 | 持久化记忆存储和检索 |
| 人类审批 | 内置关键决策点的人工审批机制 |
| 上下文压缩 | 自动摘要历史消息,管理增长的上下文 |
架构设计:
用户输入 → 任务规划 → 子代理生成 → 并行执行 → 结果聚合 → 输出 ↑ ↓ │ ┌────┴────┐ │ │ 子代理1 │ │ │ 子代理2 │ │ │ 子代理3 │ │ └────┬────┘ └────────────┘
优势:
-
开箱即用的高级能力
-
自动处理复杂任务
-
内置最佳实践
-
与 LangChain/LangGraph 完全兼容
局限:
-
抽象层次高,灵活性受限
-
学习曲线较陡
-
对于简单任务可能过于复杂
适用场景:
-
复杂多步任务
-
需要任务分解的场景
-
需要并行处理的场景
-
生产级 Agent 应用
选型指南
选择 LangChain 的场景
-
✅ 简单 RAG 应用
-
✅ 单轮对话 Agent
-
✅ 快速原型开发
-
✅ 学习 Agent 基础概念
选择 LangGraph 的场景
-
✅ 复杂多步骤工作流
-
✅ 需要人工审批的流程
-
✅ 需要断点续传的任务
-
✅ 多 Agent 协作系统
-
✅ 需要精细流程控制
选择 Deep Agents 的场景
-
✅ 复杂多步任务(如数据分析、报告生成)
-
✅ 需要任务分解和规划
-
✅ 需要并行处理多个子任务
-
✅ 生产级 Agent 应用
-
✅ 需要长期记忆和上下文管理
实战示例
示例 1:简单天气查询(LangChain)
from langchain.agents import create_agent
def get_weather(city: str) -> str:
return f"{city} 天气晴朗!"
agent = create_agent(
model="openai:gpt-4",
tools=[get_weather],
system_prompt="你是一个有用的助手",
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "北京天气怎么样?"}]}
)
示例 2:多步骤研究工作流(LangGraph)
from langgraph.graph import StateGraph, MessagesState
# 定义研究工作流
workflow = StateGraph(MessagesState)
# 添加节点:搜索 → 分析 → 总结
workflow.add_node("search", search_node)
workflow.add_node("analyze", analyze_node)
workflow.add_node("summarize", summarize_node)
# 添加边
workflow.add_edge(START, "search")
workflow.add_edge("search", "analyze")
workflow.add_edge("analyze", "summarize")
workflow.add_edge("summarize", END)
# 编译并调用
app = workflow.compile()
result = app.invoke({"messages": [("user", "研究 LangChain 的最新进展")]})
示例 3:复杂数据分析任务(Deep Agents)
from deepagents import create_deep_agent
# 创建数据分析 Agent
agent = create_deep_agent(
model="openai:gpt-4",
tools=[read_csv, analyze_data, create_chart],
system_prompt="你是一个数据分析专家",
)
# 自动分解任务、并行处理
result = agent.invoke(
{"messages": [("user", "分析这份销售数据,找出趋势并生成报告")]}
)
# Deep Agents 会自动:
# 1. 规划任务步骤
# 2. 读取数据
# 3. 分析数据
# 4. 生成图表
# 5. 撰写报告
总结
| 框架 | 一句话总结 | 推荐指数 |
|---|---|---|
| LangChain | Agent 开发的瑞士军刀,简单任务首选 | ⭐⭐⭐⭐ |
| LangGraph | 复杂工作流的精细控制,进阶开发者必备 | ⭐⭐⭐⭐⭐ |
| Deep Agents | 生产级 Agent 框架,复杂任务的最佳选择 | ⭐⭐⭐⭐⭐ |
选型建议:
-
新手入门:从 LangChain 开始,掌握基础概念
-
进阶开发:学习 LangGraph,掌握复杂工作流
-
生产部署:使用 Deep Agents,享受开箱即用的高级能力
三者并非互斥关系,而是层层递进:LangChain 提供构建块,LangGraph 提供编排能力,Deep Agents 提供完整框架。根据你的需求选择合适的层次即可。
参考资料
更多推荐



所有评论(0)