LangGraph 系列 1:LangGraph、Agent 与 Workflow 基础


LangChain 系列已经完成模型调用、提示词、结构化输出和聊天应用,RAG 系列又补齐了 Embedding、向量数据库与检索问答。到这里,程序可以完成多轮聊天和知识库问答,但执行路径仍然由代码提前写好:先改写问题,再检索文档,最后让模型回答。

从本文开始进入独立的 LangGraph 系列,重点从“调用哪些组件”转向“怎样组织状态、节点、路由、中断和恢复”。

如果任务变成下面这样,固定调用链就会越来越难维护:

  1. 模型需要根据问题决定是否调用工具。
  2. 一次工具调用后,模型还要判断是否继续调用其他工具。
  3. 某些步骤失败后需要重试或从中断位置恢复。
  4. 高风险操作必须先暂停,等待人工确认。
  5. 多个执行分支需要共享和修改同一份状态。

这类问题正是 LangGraph 需要解决的。本篇先不写代码,先把 LangGraph、Agent 和 Workflow 的关系讲清楚。

1. LangGraph 是什么

LangGraph 是一个用于构建有状态、长时间运行任务的底层编排框架。它不会替代大模型,也不负责训练模型,它负责组织模型、工具和普通代码之间的执行关系。

在 LangGraph 中,一个应用通常可以看成一张图。官方 Graph API 将图概括为 State、Nodes 和 Edges 三个核心组成;为了方便理解路径选择,本文再把 Edge 分成普通边和条件边:

  • State:整个执行过程中需要共享的数据。
  • Node:真正执行工作的步骤,例如调用模型或执行工具。
  • Edge:节点之间的连接关系,可以固定进入某个节点。
  • Conditional Edge:Edge 的一种,根据当前状态动态选择下一条路径。

以天气 Agent 为例,状态中可以保存消息,模型节点判断是否需要查询天气,工具节点执行天气查询,边负责让执行过程回到模型或结束。

LangGraph 官方把它定位为一个低层级编排框架,重点能力包括持久化执行、流式输出、人工介入和记忆等。它可以与 LangChain 一起使用,也可以单独使用。LangGraph 1.0 文档

2. LangChain、LangGraph 和 LangSmith 的关系

这三个名称经常一起出现,但解决的问题并不相同。

2.1 LangChain

LangChain 提供模型、消息、提示词、工具、结构化输出和 Agent 等高层开发接口。前面文章使用的 ChatOpenAI、ChatPromptTemplate 和 HuggingFaceEmbeddings 都属于这一层。

它更关注“用什么组件完成任务”。

2.2 LangGraph

LangGraph 负责组织状态和执行流程。LangChain 的高级 Agent API 也是建立在 LangGraph 之上的,因此使用 create_agent() 得到的不是一个普通函数,而是一张可以执行的编译图。

它更关注“任务按什么顺序运行,状态怎样流转,什么时候继续或停止”。

2.3 LangSmith

LangSmith 用于观察、调试和评估模型应用。一次 Agent 执行经过了哪些节点、调用了什么工具、每一步输入输出是什么,都可以通过追踪信息查看。

它更关注“程序实际做了什么,哪里需要改进”。

三者不是必须同时使用。简单模型调用只需要 LangChain;需要显式控制状态和流程时再使用 LangGraph;需要系统观察和评估时再接入 LangSmith。

3. 什么是 Workflow

Workflow 是由代码预先确定执行路径的流程。

例如订单退款流程可能是:

读取订单
→ 检查支付状态
→ 判断是否超过退款期限
→ 执行退款
→ 发送通知

每一步该做什么、下一步去哪里,都由程序员提前定义。即使流程中调用了大模型,只要执行路径仍由代码控制,它依然属于 Workflow。

Workflow 的优点是:

  1. 执行路径清晰。
  2. 行为容易预测。
  3. 方便编写测试。
  4. 成本和调用次数更容易估算。
  5. 出现问题时更容易定位到具体步骤。

它的限制也很明显:任务变化较大时,需要不断增加判断和分支,流程会变得越来越复杂。

4. 什么是 Agent

Agent 会让模型参与决定下一步做什么,而不是只负责生成最后一段文字。

一个最小 Agent 通常包含:

  1. 模型:理解任务并决定下一步动作。
  2. 工具:执行模型本身无法完成的操作。
  3. 系统提示词:告诉模型身份、规则和目标。
  4. 循环与停止条件:工具执行后再次调用模型,直到模型生成最终回答。

一次典型执行过程如下:

用户提出问题
→ 模型判断是否需要工具
→ 生成工具名称和参数
→ 程序执行工具
→ 工具结果返回模型
→ 模型继续判断或生成最终回答

这里的关键不是“用了大模型”,而是“模型可以动态决定下一步动作”。

Workflow 与 Agent 的执行方式

5. Agent 与 Workflow 有什么区别

例如用户要求“整理今天的重要邮件并生成待办事项”。

使用 Workflow 时,可以固定为:读取邮件、筛选未读邮件、生成摘要、提取待办、保存结果。无论邮件内容怎样,都会按照相同顺序执行。

使用 Agent 时,模型可以根据邮件内容决定:

  • 普通通知只做摘要。
  • 包含会议时间时调用日历工具。
  • 包含附件时调用文件读取工具。
  • 信息不足时向用户追问。

Agent 更灵活,但不代表一定更好。因为路径由模型动态决定,所以也会带来更多不确定性:

  1. 工具调用次数可能变化。
  2. 响应时间和成本更难提前确定。
  3. 模型可能选择错误工具或生成错误参数。
  4. 测试不能只检查最终文字,还要检查执行过程。
  5. 涉及真实写操作时,需要增加权限和人工确认。

Anthropic 关于 Agent 的工程实践也建议从最简单的方案开始,只有在固定流程不能满足任务时再提高自主程度。

6. Agent 和 Workflow 可以组合

两者不是互斥关系。实际应用中,经常把 Agent 作为 Workflow 中的一个节点。

这里还要区分“执行结构”和“决策方式”:Graph 是承载状态与执行路径的结构,Workflow 和 Agent 描述的是下一步由代码还是模型决定。因此,固定 Workflow 可以画成图,Agent 循环也可以画成图,一个 Agent 还可以作为更大 Workflow 中的子图或节点。

例如客户工单流程可以固定为:

接收工单
→ 检查用户权限
→ Agent 分析问题并选择工具
→ 人工确认解决方案
→ 系统发送回复

权限检查、人工确认和发送回复采用固定 Workflow,只有中间的问题分析交给 Agent。这样既保留灵活性,也能控制风险。

7. Graph、State、Node 和 Edge

接下来用概念理解 LangGraph 中的 State、Node 和 Edge,并单独说明最常用的条件边。LangGraph Graph API

7.1 State

State 是执行过程中共享的数据。聊天 Agent 最常见的状态是消息列表,也可以包含用户信息、任务进度和中间结果。

节点不是各自保存一份孤立数据,而是读取当前状态,并返回需要更新的部分。

7.2 Node

Node 是一个执行步骤,可以是普通 Python 函数、模型调用、工具执行,也可以是另一个子图。

天气 Agent 中至少包含模型节点和工具节点。

7.3 Edge

Edge 连接两个节点。例如模型已经生成最终回答时,边会把执行导向结束节点。

7.4 Conditional Edge

Conditional Edge 根据状态选择不同路径。例如模型生成了 tool_calls 时进入工具节点,否则直接结束。

create_agent() 会帮我们生成这些常见节点和边,因此入门时不需要立即手写整张图。后面学习复杂 Workflow 时,再直接使用 StateGraph API 定义状态和路径。

下面用一个简化的天气 Agent 表示四个元素如何配合。模型节点和工具节点都读取共享 State,并返回局部更新;普通 Edge 负责固定流转,Conditional Edge 根据模型是否生成 tool_calls 决定调用工具还是结束。

LangGraph 图中的 State、Node、Edge 与条件路由

8. 框架、Agent Server 和 Studio

学习 LangGraph 时还会看到几个容易混淆的名称。

  • LangGraph 框架:安装在 Python 环境中的编排库。
  • LangGraph CLI:创建项目、启动开发服务和构建部署产物的命令行工具。
  • Agent Server:把图作为 HTTP API 运行的服务。
  • Studio:查看图结构、输入输出和每一步执行过程的调试界面。

安装 LangGraph 并不等于已经启动服务器。普通 Python 程序可以直接调用图;需要通过 HTTP 或 Studio 调试时,才启动 Agent Server。

本地 langgraph dev 使用单进程内存运行时,适合开发和测试。开发服务器会把 checkpoint 和 store 写入项目的 .langgraph_api/,方便本地重启恢复,但这不是生产级持久化方案。生产环境还要考虑认证、数据库、并发、监控和资源隔离。

9. 初学者常见误区

9.1 使用了工具就是 Agent

如果工具调用顺序完全由代码固定,它仍然是 Workflow。只有模型参与选择下一步动作时,才具有 Agent 的动态决策特征。

9.2 Agent 一定比 Workflow 高级

Agent 只是另一种执行方式。规则明确的任务使用固定流程通常更稳定,也更容易控制成本。

9.3 LangGraph 会自动让模型更聪明

LangGraph 改善的是流程组织和运行能力,不会改变模型本身的知识和推理上限。

9.4 LangGraph 必须和 LangChain 一起使用

LangGraph 可以独立使用。本系列为了复用已经部署的 Qwen3 和 ChatOpenAI,会同时使用 LangChain 的模型与 Agent 接口。

10. 小结

本篇先建立 LangGraph 的整体认识。下一篇会安装 LangGraph CLI,创建一个符合 Agent Server 规范的项目,并使用本地 Qwen3 和模拟天气工具构建第一张可运行的 Agent 图。

知识点 作用
LangChain 提供模型、提示词、工具和 Agent 等高层组件
LangGraph 组织状态、节点、边和执行流程
LangSmith 追踪、调试和评估模型应用
Workflow 执行路径由代码提前确定
Agent 模型根据上下文动态决定下一步动作
State 保存执行过程中共享的数据
Node 执行模型、工具或普通代码
Edge 决定节点之间如何流转
Agent Server 通过 HTTP 运行编译后的图
Studio 查看图结构和执行过程的调试界面

文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
  目录