LangChain与LangGrap
结论:完全不互斥,二者是配套互补关系,绝大多数场景搭配使用
1. 二者定位区分
- LangChain:组件库
提供模型封装、Prompt、RAG、工具、文档加载、向量库等各类基础积木; - LangGraph:流程编排运行引擎
负责复杂流程的状态、分支、循环、断点、人机交互,没有内置LLM、RAG等能力。
2. 三种使用模式
- 只用 LangChain(简单线性流程)
单纯链式问答、基础RAG,无循环、无分支,只用prompt | llm即可,不需要LangGraph。 - LangChain + LangGraph(主流生产用法)
LangGraph 的节点里直接调用 LangChain 的模型、检索、工具组件,用LangGraph管控流程走向。# 示例逻辑 def llm_node(state): # 这里的chat_chain就是langchain组装好的链 resp = chat_chain.invoke(state) return {"answer": resp.content} - 仅理论上纯LangGraph(几乎没人这么用)
完全不用LangChain封装,自己裸写模型请求、手动实现RAG,代码冗余,无实际价值。
3. 为什么不会互斥
LangGraph 是同公司配套工具,设计初衷就是弥补 LangChain 原生 Chain 无法做循环、分支的短板;
LangGraph 官方文档、示例全部默认搭配 LangChain 组件开发,不存在冲突、抢占、二选一限制。
简单一句话总结
简单任务单用LangChain;复杂多步骤、带循环分支的Agent,LangChain提供能力,LangGraph负责调度。
LangChain 与 LangGraph 互斥吗?
不互斥,反而是互补关系。
可以把它们理解成不同层级:
- LangChain:负责"一个步骤怎么做"(调用 LLM、RAG、Tool、Prompt、Memory 等)。
- LangGraph:负责"多个步骤如何组织"(状态机、工作流、多 Agent、循环、人工介入等)。
实际上,LangGraph 就是在 LangChain 生态基础之上构建的,大量 LangChain 的组件都可以直接在 LangGraph 中使用。
一个比喻
假设你要建一家餐厅:
- LangChain = 厨房里的各种工具(炉子、刀具、菜谱)
- LangGraph = 整个餐厅运营流程(点餐 → 做菜 → 上菜 → 退款 → 重做)
因此:
LangGraph
├── 节点 A(LangChain Chain)
├── 节点 B(RAG)
├── 节点 C(Tool Calling)
├── 节点 D(Agent)
└── 节点 E(Human Review)
LangChain 擅长什么?
例如一个普通的 RAG 流程:
用户
│
Prompt
│
Retriever
│
LLM
│
Output Parser
使用 LCEL(LangChain Expression Language)可以非常简洁地实现:
chain = prompt | retriever | llm | parser
这种属于线性流程(Pipeline)。
LangGraph 擅长什么?
如果流程变成这样:
用户
│
▼
Planner
│
├── 搜索?
├── SQL?
├── 调工具?
└── 不满意继续循环
│
▼
Reflection
│
▼
是否结束?
│ │
否 是
│
└────────►继续
这种流程具有:
- 循环(Loop)
- 分支(Branch)
- 状态管理(State)
- 人工审批(Human in the Loop)
- 多 Agent 协作
对于这类复杂工作流,LangGraph 更加适合。
它们通常一起使用
例如:
from langgraph.graph import StateGraph
def search_node(state):
return rag_chain.invoke(state)
def summarize_node(state):
return summary_chain.invoke(state)
其中:
rag_chain是 LangChain 构建的能力summary_chain是 LangChain 构建的能力StateGraph是 LangGraph 提供的工作流编排能力
也就是说,LangGraph 负责调度,LangChain 负责完成具体任务。
官方推荐如何使用?
目前官方推荐的大致思路如下:
使用 LangChain
适用于:
- 简单聊天机器人
- RAG
- Prompt 编排
- Tool Calling
- 文档处理
- 单次推理任务
使用 LangGraph
适用于:
- 多 Agent
- 长时间运行(Long-running Agent)
- Human in the Loop
- Reflection
- ReAct Agent
- 有状态工作流
- 企业级 Agent
很多生产环境中的 Agent 都采用:
LangGraph
│
├── LangChain
├── Tools
├── RAG
├── Memory
└── LLM
如何选择?
| 场景 | 推荐 |
|---|---|
| 简单聊天机器人 | LangChain |
| RAG | LangChain(必要时配合 LangGraph) |
| Tool Calling | LangChain |
| Prompt 编排 | LangChain |
| 多 Agent | LangGraph |
| Human in the Loop | LangGraph |
| 长时间运行 Agent | LangGraph |
| 有循环、重试、状态管理 | LangGraph |
| 企业级 Agent 工作流 | LangGraph + LangChain |
总结
LangChain 与 LangGraph 并不是互斥关系,而是互补关系。
可以简单理解为:
- LangChain:负责实现单个能力(调用 LLM、RAG、Tool、Memory 等)。
- LangGraph:负责将多个能力组织成复杂、有状态、可循环的工作流。
实际开发中,最常见也是官方推荐的方式是:
使用 LangChain 构建节点能力,使用 LangGraph 编排整个 Agent 或工作流。

浙公网安备 33010602011771号