Skip to content

LangGraph 与 LangChain:编排与组件 ​

核心答案:两者不是同层替代品。 LangGraph 让程序显式管理状态和控制流;LangChain 提供模型、工具等抽象与 Agent 组合接口。可以组合使用,也可以在 LangGraph 节点内直接调用供应商 API。官方概览明确说明 LangGraph 不要求使用 LangChain。

放在什么位置 ​

关注点LangGraphLangChain
基本单位状态、节点、边、分支模型、消息、工具、Agent 与中间件
输入输出节点读取状态,返回状态更新模型输入消息,输出消息或工具请求
本项目需求评审循环、人工暂停、恢复可选的模型与工具适配抽象
不自动解决业务幂等、外部服务回滚资料正确性、工具权限、模型效果

LangChain 当前的 create_agent 提供可配置的 Agent 执行循环,底层使用 LangGraph。这个依赖方向不表示所有 LangGraph 应用都应调用 create_agent。LangChain 官方概览适合了解其职责,而非照搬所有组件。

最小例子:状态更新不是聊天记录 ​

下面的独立 Python 例子只展示节点契约,可直接运行:

python
state = {"revision": 0, "issues": ["词汇缺少解释"]}
def route(s):
    return "revise" if s["issues"] and s["revision"] < 2 else "human"
assert route(state) == "revise"
state.update({"revision": 2})
assert route(state) == "human"

把 route 注册为条件边才是图编排;调用模型生成解释是另一个节点的工作。框架不会凭空知道“最多修订两次”这个业务约束。

教材系统中的选择 ​

本项目选择 LangGraph 编排,使用独立服务适配层调用模型,不为了出现技术名词再引入完整 LangChain 组件集。LangGraph 安装时可能带入 langchain-core 等依赖;安装了基础包不等于应用使用了 LangChain 的 Agent 接口。 实际依赖以锁文件为准。

若后续需要统一多家模型的消息格式、工具绑定与中间件,可评估 LangChain;若只有两三个稳定接口,显式适配器更容易理解原始请求、超时和返回值。这个选择是本次复现的工程判断,不是历史项目事实。完整职责见系统架构,原理主线见核心章节。

自测与误区 ​

修改例子的修订上限,解释条件边如何变化。再画出“评审无问题直接转人工、有问题进入修订”的分支。验收标准是能指出路由由程序决定,模型只提交评审数据。

常见误区是把 LangGraph 当成“高级版 LangChain”,或认为用了图就具有自主规划能力。还要避免在节点中随意把整份图状态传给模型:可见上下文必须按角色重新构造。

官方资料与版本边界 ​

核验日期:2026-11-03。这里讨论 Python API 的概念边界;安装命令与可执行接口以本项目锁定版本为准,不将官方滚动文档视为该版本的逐字说明。

学习复现系统 · 事实、实验与假设分开记录