LangGraph 和 LangChain 有什么区别?

LangGraph 和 LangChain 有什么区别?

上一篇文章里,我们讨论了 LangGraph 是什么,以及为什么 Agent 需要图结构。

一个重要结论是:

LangGraph 解决的不是“让模型更聪明”,而是让复杂 Agent Workflow 更可控。

它用 State、Node、Edge 把状态、步骤、分支和循环显式组织起来。

但很多人接触 LangGraph 时,都会立刻产生一个问题:

既然已经有 LangChain,为什么还需要 LangGraph?

LangGraph 是不是 LangChain 的替代品?

这篇文章就讨论这个问题。

结论先说在前面:

LangChain 和 LangGraph 不是简单替代关系。

LangChain 更像 AI 应用开发里的组件和链式调用工具箱。

LangGraph 更像有状态 Agent Workflow 的流程编排框架。

它们关注的问题不同,但在真实项目里经常会一起使用。

LangChain 主要解决什么问题?

LangChain 更早被大家熟悉,原因很简单:

它把很多 LLM 应用常用能力封装成了组件。

比如:

模型调用 Prompt 模板 Output Parser Retriever Document Loader Text Splitter Tool Chain Agent

如果你要做一个基础 AI 应用,LangChain 能帮你快速把这些组件串起来。

比如一个简单 RAG:

加载文档 ↓ 切分文档 ↓ 向量化 ↓ Retriever 检索 ↓ Prompt 组装 ↓ LLM 生成答案

这个流程里,LangChain 的价值很明显。

它提供了大量现成组件,让你不用从零封装模型、检索器、提示词和输出解析。

所以 LangChain 更像是:

AI 应用组件层

它关注的是“有哪些能力可以拿来组合”。

LangGraph 主要解决什么问题?

LangGraph 关注的问题更偏流程控制。

当你的 AI 应用开始变成一个复杂 Agent 时,问题就不只是“有没有组件”。

而是:

下一步该执行哪个节点? 状态应该怎么保存? 什么时候调用工具? 工具失败怎么处理? 什么时候循环? 什么时候结束? 人工介入后怎么恢复? 多个 Agent 怎么协作?

这些问题不是单个组件能解决的。

它们属于流程编排问题。

LangGraph 用图结构来表达这些流程。

比如:

用户输入 ↓ 意图判断 ├─ 普通问答 ├─ 知识检索 ├─ 工具调用 └─ 人工介入

每条路径都可以根据 State 动态决定。

如果工具调用失败,可以回到某个节点重试。

如果结果不足,可以继续检索。

如果风险较高,可以进入人工确认。

所以 LangGraph 更像是:

Agent Workflow 编排层

它关注的是“复杂流程如何可控地运行”。

两者最大的区别:组件 vs 流程

可以用一句话区分:

LangChain 更关注组件组合。

LangGraph 更关注状态流程。

LangChain 里,你经常会想:

我用哪个模型? 我用哪个 Retriever? 我用哪个 Prompt? 我怎么解析输出? 我怎么把几个步骤串起来?

LangGraph 里,你经常会想:

我的 State 长什么样? 有哪些 Node? Node 之间怎么连? 什么条件下走哪条边? 循环什么时候停止? 中断后怎么恢复?

这两个思考角度不一样。

前者偏能力拼装。

后者偏流程控制。

Chain 和 Graph 的区别

LangChain 里的 Chain 通常适合线性流程。

比如:

A ↓ B ↓ C

这种流程很清楚。

适合固定步骤。

但 Agent Workflow 经常是:

A ↓ 判断状态 ├─ B ├─ C └─ 回到 A

这时 Graph 更自然。

比如一个研究助手:

接收问题 ↓ 规划任务 ↓ 检索资料 ↓ 判断资料是否足够 ├─ 不足:继续检索 └─ 足够:生成报告

这里有循环。

如果用普通 Chain,会很快变得绕。

如果用 Graph,流程结构更清楚。

LangGraph 不是为了替代所有 Chain

一个常见误区是:

看到 LangGraph 更适合复杂流程,就觉得所有项目都应该改成 LangGraph。

没必要。

如果你的任务只是:

输入文本 ↓ 调用模型 ↓ 输出结果

或者:

检索 ↓ 生成

简单 Chain 就很好。

复杂工具不应该用来解决简单问题。

LangGraph 更适合这些情况:

流程会分支 流程会循环 需要保存状态 需要中途暂停 需要人工确认 需要多工具协作 需要多 Agent 协作 需要清晰追踪每一步

如果没有这些需求,强行上 LangGraph 只会增加理解成本。

LangChain 组件可以放进 LangGraph

LangGraph 并不是要抛弃 LangChain 的组件。

很多时候,你仍然会在 LangGraph 的节点里使用 LangChain 组件。

比如:

一个 Node 里调用 Chat Model 一个 Node 里调用 Retriever 一个 Node 里使用 Prompt Template 一个 Node 里执行 Tool 一个 Node 里解析结构化输出

也就是说:

LangGraph 可以负责流程骨架。

LangChain 可以负责具体能力。

一个简单例子:

LangGraph: 决定先检索还是先追问用户 LangChain: 负责实际检索和模型调用

这种组合在真实项目里很常见。

为什么 Agent 更需要 LangGraph?

传统 Agent 经常有一个问题:

所有决策都交给模型,过程不够可控。

比如模型决定:

要不要调用工具 调用哪个工具 工具结果够不够 要不要继续调用 什么时候结束

这种方式灵活,但也容易失控。

LangGraph 的思路是把一部分流程显式化。

例如:

先由 LLM 判断意图 再根据意图路由到不同节点 工具调用必须经过 Tool Node 工具失败进入 Error Handler 高风险操作进入 Human Review 达到最大步数直接结束

这样并不是削弱 Agent。

而是让 Agent 的行为边界更清楚。

企业级应用里,清楚比炫更重要。

一个工程化对比

如果用后端系统类比:

LangChain 有点像一组服务能力和 SDK。

它提供各种功能模块。

LangGraph 更像流程引擎或状态机。

它负责让这些功能按照规则运行。

比如一个订单系统里:

支付服务 库存服务 物流服务 通知服务

这些是组件。

但完整订单流程还需要:

创建订单 支付成功 扣减库存 发货 失败回滚 人工审核

这就是流程。

AI 应用也是一样。

模型、Prompt、Retriever、Tool 是组件。

Agent Workflow 是流程。

LangGraph 更关注后者。

项目里怎么选择?

可以用一个简单判断标准。

如果你的项目核心是:

调用模型 拼 Prompt 接 Retriever 解析输出

优先考虑 LangChain 或更轻量封装。

如果你的项目核心是:

多步骤 Agent 动态路由 循环执行 工具协作 人工介入 流程恢复 多 Agent 管理

LangGraph 会更合适。

如果项目既需要组件能力,又需要复杂流程,就把两者组合起来。

不要纠结谁替代谁。

更重要的是清楚当前问题属于哪一层。

常见误区

第一个误区,是认为 LangGraph 是 LangChain 的升级版。

它不是简单升级,而是关注点不同。

第二个误区,是认为用了 LangGraph 就不需要 LangChain 组件。

实际项目里,两者可以一起使用。

第三个误区,是所有 Agent 都上图结构。

简单任务不需要复杂编排。

第四个误区,是只看 API,不看流程边界。

LangGraph 的关键不是某个函数怎么写,而是 State、Node、Edge 怎么设计。

第五个误区,是把流程控制全部交给模型。

企业级 Agent 需要明确的工程边界。

总结

LangChain 和 LangGraph 不是谁取代谁。

LangChain 更像 AI 应用组件层,帮助你连接模型、Prompt、Retriever、Tool 和 Parser。

LangGraph 更像 Agent Workflow 编排层,帮助你管理状态、节点、边、分支、循环和恢复。

简单流程可以用 Chain。

复杂 Agent 更适合用 Graph。

真实项目里,两者经常组合使用:

用 LangGraph 组织流程,用 LangChain 组件完成具体能力。

下一篇文章,可以继续讨论从 Chain 到 Graph 的变化。

因为只有理解线性流程为什么不够,才能真正理解 LangGraph 的价值。