Appearance
25. LangGraph 解决了什么问题?和 LangChain 的区别是什么?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:LangGraph 解决了什么问题?和 LangChain 的区别是什么?
🙋♂️我:LangGraph 是做复杂工作流的,LangChain 是简单链式调用。
👔面试官:笼统了。LangGraph 的核心是显式状态管理和循环能力。LangChain 是线性链,LangGraph 是有向图,支持循环、条件分支、持久化。你能讲清楚吗?
🙋♂️我:LangGraph 可以循环,LangChain 不行?
👔面试官:对,但还有:LangGraph 的 State 是显式定义的,支持检查点(checkpoint)和重放。适合多智能体、人机协同、复杂状态管理。LangChain 更适合简单 Pipeline。
💡 简要回答
LangGraph 解决的核心问题:
- 循环能力:支持复杂循环(ReAct、规划-执行-反思)
- 显式状态管理:State 明确定义,可追踪、可持久化
- 条件分支:边(Edge)可以带条件判断
- 持久化与重放:支持 checkpoint、人机协同、错误恢复
与 LangChain 的区别:
| 维度 | LangChain | LangGraph |
|---|---|---|
| 结构 | 线性链(DAG) | 有向图(可循环) |
| 状态 | 隐式传递 | 显式定义 State |
| 循环 | 不支持 | 原生支持 |
| 适用场景 | 简单 Pipeline | 复杂 Agent、多智能体 |
📝 详细解析
LangGraph 的核心概念
State(状态):
- 明确定义整个运行过程中的数据
- 每个节点接收 State,返回更新后的 State
python
class State(TypedDict):
messages: list
documents: list
next_step: strNode(节点):
- 处理函数,输入 State,输出 State 更新
Edge(边):
- 普通边:固定流转
- 条件边:根据 State 判断走向
循环支持:
A → B → C →(条件)→ A(循环)典型适用场景
ReAct Agent:
- 思考 → 行动 → 观察 → 再思考 → ...(循环)
多智能体:
- Supervisor 分配任务 → Agent 执行 → 结果汇总 → 再分配(循环)
人机协同:
- 执行到某节点 → 暂停等待人工输入 → 继续
错误恢复:
- checkpoint 保存状态 → 出错后从检查点恢复
与 LangChain 的关系
不是替代,是互补:
- LangChain:组件生态(Model、Prompt、Parser、Tool)
- LangGraph:编排层(把组件组织成复杂工作流)
LCEL 链可以作为 LangGraph 的节点使用。
🎯 面试总结
LangGraph 解决循环、显式状态、条件分支、持久化问题。与 LangChain 互补:Chain 做组件,Graph 做编排。