← 返回首页
langchain和langgraph的区别
LangChain 和 LangGraph 是同一个生态下的两个互补框架,解决的是不同层面的问题。下面从多个维度进行对比:
核心定位
- LangChain:LLM 应用开发的组件工具箱,负责"有哪些能力可用"。它封装了模型调用、Prompt 模板、工具集成、RAG 检索、输出解析等通用能力,让开发者快速搭建 LLM 应用。
- LangGraph:Agent 系统的编排运行时,负责"这些能力如何组成一个可运行的系统"。它将工作流抽象为有状态的图(状态机),用节点、边、条件跳转来控制执行流程。
一句话总结:LangChain 解决"能不能跑起来",LangGraph 解决"能不能可靠地跑下去"。
核心区别对比
| 维度 | LangChain | LangGraph |
|---|---|---|
| 核心隐喻 | 流水线(Pipeline / DAG) | 循环图(Cyclic Graph / 状态机) |
| 控制流 | 线性为主,难以实现复杂循环 | 原生支持循环、分支、回退 |
| 状态管理 | 隐式传递,较难追踪 | 显式定义的共享状态(Schema-First) |
| 适用场景 | 简单 RAG、一次性问答、数据处理管道 | 长期运行的 Agent、多轮对话、人机协同 |
| 容错能力 | 无内置持久化/恢复机制 | 支持检查点、断点续传、失败恢复 |
| 人工介入 | 不支持 | 原生支持 interrupt() 暂停等待人工审批 |
| 学习曲线 | 较低(2-4 周) | 较高(4-8 周),需理解图论和状态机 |
什么时候用 LangChain
- 单轮问答、翻译、总结、文案生成等线性任务
- 简单的 RAG 检索增强生成
- 快速搭建原型验证思路
- 简单的工具调用场景
什么时候用 LangGraph
- Agent 执行过程需要循环、分支、重试(如"模型自我反思直到满意")
- 任务执行时间长,需要失败后从断点恢复
- 关键操作需要人工审批(如删除数据、发送邮件前暂停)
- 多 Agent 协作,需要明确职责和状态流转
- 需要可观测性,追踪 Agent 当前执行到哪一步
最佳实践:组合使用
实际上,两者并非二选一的关系,而是分层配合使用。LangChain 官方也明确说明,当前 LangChain 的 Agent 本身就是构建在 LangGraph 之上的。
一个典型的生产级架构是这样的:
前端 / API
↓
LangGraph 工作流(负责流程怎么跑)
↓
LangChain 组件层(负责组件怎么接)
├── Model
├── Tool
├── Retriever
├── Prompt
└── Output Parser
↓
外部系统(数据库、向量库、API 等)
简单来说:LangGraph 是骨架,LangChain 是肌肉。LangGraph 定义整体流程和状态流转,LangChain 的组件在图的节点内部完成具体的模型调用和数据处理。