LangChain 和 LangGraph 的区别:核心原理与使用场景

17 阅读4分钟

前言

在开发大模型应用时,经常会接触两个框架:

  • 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 的核心区别

对比维度LangChainLangGraph
核心定位LLM 应用开发框架Agent 工作流编排框架
主要能力模型、Prompt、Tool、RAGState、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 应用。