← 返回首页

langchain和langgraph的区别

LangChain 和 LangGraph 是同一个生态下的两个互补框架,解决的是不同层面的问题。下面从多个维度进行对比:

核心定位

  • LangChain:LLM 应用开发的组件工具箱,负责"有哪些能力可用"。它封装了模型调用、Prompt 模板、工具集成、RAG 检索、输出解析等通用能力,让开发者快速搭建 LLM 应用。
  • LangGraph:Agent 系统的编排运行时,负责"这些能力如何组成一个可运行的系统"。它将工作流抽象为有状态的图(状态机),用节点、边、条件跳转来控制执行流程。

一句话总结:LangChain 解决"能不能跑起来",LangGraph 解决"能不能可靠地跑下去"。


核心区别对比

维度 LangChain LangGraph
核心隐喻 流水线(Pipeline / DAG) 循环图(Cyclic Graph / 状态机)
控制流 线性为主,难以实现复杂循环 原生支持循环、分支、回退
状态管理 隐式传递,较难追踪 显式定义的共享状态(Schema-First)
适用场景 简单 RAG、一次性问答、数据处理管道 长期运行的 Agent、多轮对话、人机协同
容错能力 无内置持久化/恢复机制 支持检查点、断点续传、失败恢复
人工介入 不支持 原生支持 interrupt() 暂停等待人工审批
学习曲线 较低(2-4 周) 较高(4-8 周),需理解图论和状态机

什么时候用 LangChain

  • 单轮问答、翻译、总结、文案生成等线性任务
  • 简单的 RAG 检索增强生成
  • 快速搭建原型验证思路
  • 简单的工具调用场景

什么时候用 LangGraph

  • Agent 执行过程需要循环、分支、重试(如"模型自我反思直到满意")
  • 任务执行时间长,需要失败后从断点恢复
  • 关键操作需要人工审批(如删除数据、发送邮件前暂停)
  • 多 Agent 协作,需要明确职责和状态流转
  • 需要可观测性,追踪 Agent 当前执行到哪一步

最佳实践:组合使用

实际上,两者并非二选一的关系,而是分层配合使用。LangChain 官方也明确说明,当前 LangChain 的 Agent 本身就是构建在 LangGraph 之上的。

一个典型的生产级架构是这样的:

前端 / API
    ↓
LangGraph 工作流(负责流程怎么跑)
    ↓
LangChain 组件层(负责组件怎么接)
├── Model
├── Tool
├── Retriever
├── Prompt
└── Output Parser
    ↓
外部系统(数据库、向量库、API 等)

简单来说:LangGraph 是骨架,LangChain 是肌肉。LangGraph 定义整体流程和状态流转,LangChain 的组件在图的节点内部完成具体的模型调用和数据处理。