前言
在开发大模型应用时,经常会接触两个框架:
-
LangChain:用于构建 LLM 应用,提供模型、Prompt、Tool、Retriever 等组件。
-
LangGraph:用于构建有状态、可循环、可控制执行流程的 Agent 工作流。
两者并不是竞争关系,而是可以相互配合。
一、什么是 LangChain?
LangChain 是一个大语言模型应用开发框架,提供了一系列标准化组件。
主要包括:
-
Models:统一调用不同大模型
-
Prompt:管理提示词模板
-
Tools:封装外部工具和 API
-
Retriever:检索外部知识
-
Output Parser:解析模型输出
-
LCEL:组合不同组件
例如一个简单的 RAG 流程:
用户问题
↓
Retriever
↓
相关文档
↓
Prompt
↓
LLM
↓
最终回答
LangChain 适合快速开发知识库问答、智能客服、模型调用等应用。
二、什么是 LangGraph?
LangGraph 是一个面向有状态工作流和 Agent 编排的框架。
它通过图结构组织任务,核心概念包括:
-
State:保存工作流运行状态
-
Node:执行具体任务的节点
-
Edge:连接不同节点
-
Conditional Edge:根据条件选择执行路径
-
Checkpointer:持久化工作流状态
-
Human-in-the-loop:支持人工介入和确认
例如:
用户问题
↓
Router 意图识别
↓
判断任务类型
├── 普通问答
├── 知识库检索
└── 工具调用
↓
执行 Tool
↓
检查结果
↓
是否继续执行?
├── 是 → 返回执行节点
└── 否 → 最终回答
LangGraph 可以根据任务状态决定下一步执行哪个节点,还支持循环、暂停和恢复。
三、LangChain 和 LangGraph 的核心区别
| 对比维度 | LangChain | LangGraph |
|---|---|---|
| 核心定位 | LLM 应用开发框架 | Agent 工作流编排框架 |
| 主要能力 | 模型、Prompt、Tool、RAG | State、Node、Edge、Checkpointer |
| 执行流程 | 适合组件组合与常规调用 | 支持复杂分支、循环和动态路由 |
| 状态管理 | 可管理聊天历史等上下文 | 显式 State 和状态持久化 |
| 人工介入 | 需要结合具体实现 | 内置中断与恢复机制 |
| 适用场景 | RAG、问答、工具调用 | 复杂 Agent、多步骤任务 |
需要注意:LangChain 并不只能执行线性流程,也支持 Agent;现代 LangChain 的 Agent 底层也使用 LangGraph。
四、LangGraph 的核心工作原理
LangGraph 主要围绕三个基础概念构建工作流。
1. State(状态)
State 用来保存整个工作流需要共享的数据。
例如:
from typing import TypedDict
class AgentState(TypedDict):
question: str
intent: str
answer: str
这里保存了用户问题、意图识别结果和最终回答。
2. Node(节点)
Node 是具体的执行单元,可以是普通 Python 函数,也可以调用 LLM、RAG 或 Tool。
def router_node(state: AgentState):
return {"intent": "知识库问答"}
节点返回的更新会合并到 State 中。
3. Edge(边)
Edge 决定节点之间如何连接。
START
↓
Router
↓
RAG
↓
Answer
↓
END
如果使用 Conditional Edge,还可以根据 State 动态选择不同路径。
五、LangChain 和 LangGraph 如何配合?
实际项目中,两者经常一起使用。
例如开发一个智能设备运维 Agent:
用户问题
↓
LangGraph Router
↓
意图识别
↓
┌────────┼────────┐
↓ ↓ ↓
普通问答 智能巡检 能效优化
↓ ↓ ↓
LangChain Tools Tools
↓ ↓ ↓
└────────┼────────┘
↓
更新 State
↓
最终回答
其中:
LangChain 负责:
-
调用大语言模型
-
Prompt 管理
-
RAG 知识检索
-
Tool 定义与调用
LangGraph 负责:
-
Router 意图路由
-
State 状态管理
-
节点执行与条件分支
-
Checkpointer 状态持久化
-
Human-in-the-loop 人工确认
例如涉及设备控制时,可以通过 LangGraph 暂停执行,等待用户确认后再继续调用后端控制接口。
六、应该选择哪个?
如果只是开发简单的 RAG 问答:
用户问题 → 知识检索 → LLM → 回答
优先使用 LangChain 即可。
如果需要开发复杂 Agent:
用户任务
↓
意图识别
↓
任务规划
↓
工具调用
↓
结果判断
↓
人工确认
↓
继续执行
则更适合使用 LangGraph。
如果既需要 RAG,又需要复杂 Agent 编排,可以组合使用两个框架。
七、总结
LangChain 和 LangGraph 最核心的区别可以概括为:
LangChain 主要解决“AI 应用需要哪些能力,以及如何使用这些能力”。
LangGraph 主要解决“这些能力按照什么流程执行,以及如何管理执行状态”。
简单记忆:
LangChain
↓
模型、Prompt、RAG、Tools
LangGraph
↓
State、Node、Edge、Checkpointer
↓
复杂 Agent 工作流
对于初学者,建议先学习 LangChain 的模型调用、Prompt、RAG 和 Tool Calling,再学习 LangGraph 的 State、Node、Edge 和 Human-in-the-loop。
两者结合,可以构建更加复杂、可控且易于维护的 AI Agent 应用。