前期对应dify和LangChain都进行了初步的学习,下面我们来看看LangGraph的内容,LangChain和LangGraph有些类似,不过前者多针对链式流程,后者引入了图的概念,有一个很大的提升.

以下是LangGraph的官方文档

LangGraph overview - Docs by LangChain

可见Chain和Graph两者关系之深

还有一个中文网站也可以参考

LangGraph 概览 - LangChain 文档 - LangChain 教程

后续的学习用到了Python语言,Pycharm开发环境中的Jupiter Notebook,uv虚拟环境管理工具(安装包超级快)

uv add langgraph
from langgraph.graph import StateGraph, MessagesState, START, END

def mock_llm(state: MessagesState):
    return {"messages": [{"role": "ai", "content": "我是ai"}]}

graph = StateGraph(MessagesState)
graph.add_node(mock_llm)
graph.add_edge(START, "mock_llm")
graph.add_edge("mock_llm", END)
graph = graph.compile()

graph.invoke({"messages": [{"role": "user", "content": "我是人"}]})

整段代码作用

这是一个最简单的聊天机器人:你发一句话 → 机器固定回复:“我是ai”

它是 LangGraph 最最基础的骨架,所有复杂 Agent 都是从这个模板扩写出来的

  • StateGraph画流程图的工具(造图)
  • MessagesState内置好的聊天状态(存对话)
  • START / END:流程的开始结束

mock_llm是图里唯一的节点node,作用:

  • 接收对话状态 state
  • 返回一条 AI 消息:我是ai
  • 不管你问啥,它都只回 “我是ai”(mock = 模拟)

MessagesState(聊天格式)创建一张空图。add_node把节点加入图,add_edge是做一个路线:开始 → 执行 mock_llm 节点 → 结束

compile是编译成一个graph

这就是 LangGraph 的核心逻辑:

  1. 定义状态(存数据) State = 存数据 MessagesState
  2. 定义节点(功能) Node = 做事情  add_node
  3. 连路线(执行顺序)Edge = 定顺序 add_edge
  4. 运行
{'messages': [HumanMessage(content='我是人', additional_kwargs={}, response_metadata={}, id='b946cacc-17d7-4a81-b36f-fa84325fd120'),
  AIMessage(content='我是ai', additional_kwargs={}, response_metadata={}, id='f2009dbb-ab94-4582-892e-b7774c6f25b1', tool_calls=[], invalid_tool_calls=[])]}

我们看一下回答部分

AIMessage(
    content='你好',    # AI 真正输出的内容
    tool_calls=[],     # 没有调用工具(正常)
    invalid_tool_calls=[]
)

都是标准格式

一、快速了解 LangGraph

1.1 快速了解 LangGraph

LangGraph 是由 LangChain 推出的、专为构建多智能体与复杂对话工作流设计的开源框架。它基于 “图(Graph)” 的核心思想,让开发者能像搭积木一样,把 LLM、工具、自定义逻辑组合成具备状态管理、循环控制和分支决策能力的智能体系统,解决了传统单轮对话框架无法处理复杂任务、多步骤推理的痛点。

1.2 快速体验 LangChain 和 LangGraph 的关系

LangChain 是大模型应用开发的基础生态,提供了 LLM 调用、工具封装、RAG 等核心能力;而 LangGraph 是LangChain 生态的扩展与升级,它在 LangChain 的基础上,专门解决 “多步骤、有状态、可循环” 的复杂智能体工作流问题。简单来说:LangChain 是基础工具库,LangGraph 是构建复杂智能体的 “编排引擎”,二者结合才能实现从简单对话到企业级多智能体系统的跨越。


二、使用 LangGraph 构建 Agent 智能体

2.1 什么是 Agent

Agent(智能体)是具备感知环境、推理决策、执行动作能力的程序实体。在大模型场景中,Agent 以 LLM 为核心,通过工具调用、状态管理和流程控制,能自主完成用户指令、解决复杂问题(比如查资料、算数据、调用 API),区别于普通对话机器人的 “一问一答”,Agent 具备 “主动规划、分步执行、动态调整” 的能力。

2.2 构建聊天 Agent 智能体

聊天 Agent 是最基础的智能体形态,核心是基于 LangGraph 构建 “状态循环”:用户输入消息 → LLM 生成回复 / 决策 → 系统根据决策执行动作 → 结果反馈给 LLM → 循环直到任务完成。通过定义初始状态、对话节点和终止条件,就能实现具备上下文理解能力的对话智能体。

2.3 增加 Tools 工具调用

纯 LLM 的能力受限于训练数据和上下文,通过为 Agent 绑定工具(比如搜索工具、计算器、数据库查询接口),可以让 Agent 突破限制,完成实时信息获取、数据计算、外部系统交互等任务。LangGraph 支持工具的动态调用与结果处理,能自动将工具返回的信息整合进后续推理流程。

2.4 增加消息记忆

消息记忆是 Agent 具备上下文连贯性的关键,LangGraph 提供了两种核心记忆方案:

  • 短期记忆(Checkpoint):基于会话级的状态存储,通过Checkpointer实现对话过程中的状态保存与恢复,支持中断后继续执行、分支对话回溯。
  • 长期记忆(Store):独立于会话的持久化存储,用于保存用户偏好、历史交互、业务数据等信息,让 Agent 在不同会话中都能复用用户相关的长期信息,实现 “千人千面” 的个性化交互。

2.5 Human-In-Loop 人类监督

Human-In-Loop 是企业级智能体的必备能力,允许开发者在关键节点(比如工具调用前、高风险操作执行时)插入人工审核流程。LangGraph 支持暂停工作流、向用户发送确认请求、接收人工反馈后继续执行,避免智能体因误判导致错误操作,提升系统安全性和可控性。


三、LangGraph 接入 MCP 服务

3.1 MCP 快速上手

MCP(Model Control Protocol,模型控制协议)是一种标准化的服务协议,用于实现大模型与外部服务的解耦交互。通过 MCP,智能体可以像调用本地工具一样,轻松对接远程服务(比如第三方 API、自定义工具集),无需重复编写适配代码,大幅提升工具集成的灵活性和可扩展性。

3.2 详细梳理 MCP 的工作机制

MCP 采用 “客户端 - 服务端” 架构,核心逻辑是:

  1. 服务端暴露标准化接口,提供工具定义、参数校验、执行逻辑封装;
  2. 客户端(LangGraph 智能体)通过协议请求服务端,发送工具调用指令;
  3. 服务端执行任务并返回结果,客户端将结果整合进工作流。 这种架构实现了工具与智能体的解耦,工具更新无需修改智能体代码,支持跨语言、跨平台的服务集成。

3.3 插接 MCP 的两种实现机制:SSE 和 STDIO

LangGraph 支持两种主流的 MCP 通信方式:

  • STDIO(标准输入输出):基于本地进程间通信,轻量、无网络依赖,适合本地开发调试、服务端与本地工具的快速集成。
  • SSE(Server-Sent Events):基于 HTTP 的长连接通信,支持远程服务调用、流式结果推送,适合分布式部署、跨网络的服务交互场景。

3.4 LangGraph 接入 MCP 服务

接入流程分为三步:

  1. 引入 MCP 客户端依赖,配置服务端地址与通信方式(STDIO/SSE);
  2. 加载服务端提供的工具定义,自动生成 LangGraph 可识别的工具对象;
  3. 将工具绑定到智能体节点,在工作流中动态调用,实现远程服务的无缝集成。

3.5 手写实现一个 MCP 服务

通过 Python 可以快速实现一个基础的 MCP 服务:

  1. 定义工具接口,声明工具名称、参数、功能描述;
  2. 实现工具的业务逻辑(比如数据查询、计算);
  3. 基于 STDIO 或 FastAPI+SSE 封装服务,实现请求解析与结果返回;
  4. 本地测试服务连通性,再接入 LangGraph 智能体验证调用效果。

四、深入理解 LangGraph 的核心 - Graph

4.1 理解什么是 Graph 图

Graph 是 LangGraph 的核心编排模型,本质是一个由 ** 节点(Node)边(Edge)** 组成的有向图,用于定义智能体的工作流逻辑。它通过状态流转控制任务执行顺序,支持线性流程、分支判断、循环迭代等复杂逻辑,是 LangGraph 区别于传统线性对话框架的核心优势。

4.2 State 状态

State 是 LangGraph 工作流的 “全局数据中心”,存储了对话上下文、工具调用结果、业务数据、用户信息等所有流程相关数据。State 会随着节点执行不断更新,且支持通过Checkpointer持久化,实现流程的暂停、恢复与回溯,是实现复杂多步骤任务的基础。

4.3 Node 节点

Node 是工作流中的 “执行单元”,每个节点负责一个具体任务,比如 LLM 对话生成、工具调用、状态更新、分支决策。开发者可以自定义节点逻辑,LangGraph 会根据边的定义,按顺序 / 条件执行节点,节点执行结果会更新到 State 中,驱动后续流程。

4.4 Edge 边

Edge 是节点之间的 “连接规则”,定义了工作流的执行顺序和分支逻辑。分为两种:

  • 普通边:固定的节点流转关系,比如节点 A 执行完必须执行节点 B;
  • 条件边:基于 State 数据动态判断流转方向,比如根据 LLM 的决策结果,选择 “调用工具” 或 “直接回复用户”。

4.5 子图

子图是将复杂工作流模块化的方式,允许开发者将一组相关的节点和边封装成一个独立的子图,作为一个整体嵌入主工作流中。子图支持复用、嵌套和独立测试,大幅提升了大型多智能体系统的可维护性和可扩展性,是构建企业级复杂流程的关键能力。


五、使用 LangGraph 构建多智能体工作流

5.1 流式输出大模型调用结果

LangGraph 原生支持流式输出,能将 LLM 生成的文本、工具调用的过程数据实时推送给用户,实现打字机效果、工具调用进度展示等交互体验。通过配置流式节点,开发者可以获取工作流中每一步的状态更新,提升用户体验和系统透明度。

5.2 大模型消息持久化

结合 LangGraph 的 CheckpointerStore 组件,可以实现对话消息、状态数据的持久化存储。支持的存储方式包括本地文件、Redis、PostgreSQL 等,能实现会话恢复、历史对话回溯、跨设备同步等能力,满足企业级应用对数据留存和可靠性的要求。

5.3 Human-In-Loop 人类监督

在多智能体工作流中,Human-In-Loop 被进一步扩展为 “多节点人工审核”,可以在工具调用、分支决策、结果输出等多个关键节点插入人工干预流程。比如数据查询前的权限确认、高风险操作的二次验证,确保多智能体协作过程的安全性和合规性。

5.4 Time Travel 时间回溯

Time Travel 是 LangGraph 基于状态持久化实现的高级能力,支持跳转到对话历史中的任意状态,重新执行后续流程。比如用户对智能体的回复不满意,可以回溯到上一个关键节点,修改输入或调整参数,让智能体重新推理,大幅提升了复杂任务的调试和优化效率。

5.5 多智能体架构

多智能体架构是 LangGraph 的核心应用场景,通过 Graph 编排多个不同职责的智能体(比如规划智能体、执行智能体、校验智能体),实现分工协作。典型流程是:规划智能体拆分任务 → 执行智能体调用工具完成子任务 → 校验智能体验证结果 → 汇总生成最终回复,适合处理复杂的、多步骤的企业级任务。


六、纯手写实战 - 混合多智能体

6.1 任务拆分智能体

任务拆分智能体是多智能体系统的 “指挥官”,核心职责是接收用户复杂指令,将其拆解为可执行的子任务列表,并分配给对应的执行智能体。它需要具备强推理能力,能理解用户需求、识别任务依赖关系、规划执行顺序,是整个多智能体系统的核心调度者。

6.2 MCP 服务集成智能体

MCP 服务集成智能体是系统的 “工具调用专家”,专门负责对接和管理所有 MCP 服务。它会根据任务需求,自动选择合适的 MCP 工具、封装调用参数、处理返回结果,并将工具输出转化为其他智能体能理解的格式,实现外部服务与多智能体系统的无缝对接。

6.3 RAG 检索增强智能体

RAG 检索增强智能体是系统的 “知识库管理员”,负责对接企业私有知识库、文档库,根据任务需求检索相关信息,为其他智能体提供上下文支撑。它能解决大模型 “幻觉” 问题,让智能体的回复基于真实、准确的企业数据,适合企业内部的业务咨询、文档问答等场景。

6.4 任务兜底智能体

任务兜底智能体是系统的 “安全防线”,当其他智能体执行失败、工具调用出错、任务无法推进时,由兜底智能体接管流程。它会分析失败原因,尝试重新执行任务、切换备用方案,或向用户反馈问题并请求补充信息,避免系统因异常中断,提升多智能体系统的稳定性和鲁棒性。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐