跳到主要内容

第 2.8.1 节:理解 LangGraph 如何用状态图编排 Agent

先从整体看LangGraph,梳理组成模块和各自职责。完成本节后,你应该能够画出 LangGraph 的组成模块、数据/状态流、责任边界和上下游依赖。

本章要解决什么问题​

前面章节已经讲了 RAG(检索增强生成)、Tool Calling(工具调用)和 MCP(模型上下文协议)的边界:Agent(智能体)如何查知识库、查订单、创建工单,以及工具如何被发现、筛选和审计。到这里,读者会遇到第三个真实工程断层:客服任务的状态迁移表写清楚了,但系统怎么稳定地按照这张表运行?

客服场景里,一个用户说“我要退款,你们客服一直没人理我”,流程不是一次模型回答就结束。系统可能要经历:

  • 判断用户意图和风险。
  • 发现缺订单号,暂停并追问。
  • 用户补充订单号后,从断点继续。
  • 查订单状态。
  • 查售后政策。
  • 判断是否需要人工审批。
  • 让用户确认工单草稿。
  • 创建工单。
  • 工具失败时重试,重试失败后转人工。
  • 每一步都留下状态、日志和可复盘原因。

如果这些逻辑都散落在一堆 if/else(条件判断)里,项目初期看似能跑,后期会很快失控:新增一个分支会影响旧流程,重试逻辑和人工确认混在一起,工具失败后不知道回到哪里,前端也不知道当前应该展示“等待用户补充信息”“等待人工审批”还是“工单创建成功”。

LangGraph(智能体状态图框架)要解决的不是“让模型更聪明”,而是:把多步骤 Agent 流程显式建模成状态图,让状态、节点、边、条件分支、循环、人工确认、恢复和可视化编排都能被设计、测试和复盘。

本章通过状态图、节点设计与执行路径,讲清:

  • 为什么客服任务的状态迁移表需要进一步变成状态图。
  • LangGraph(智能体状态图框架)中的 State(状态)、Node(节点)、Edge(边)、Conditional Edge(条件边)分别解决什么问题。
  • 如何在客服工作台里设计查资料、查订单、创建工单、人工确认和恢复流程。
  • 如何用字段契约、权限、状态日志和验收样例替代“看起来能跑”的口头说明。
  • 什么时候不适合使用 LangGraph(智能体状态图框架),避免为了框架而框架。
  • 面试时如何把 LangGraph(智能体状态图框架)讲成工程编排能力,而不是只背 API(应用程序接口)名称。

学习目标​

学完本章后,读者应该能做到:

  • 用人话解释 LangGraph(智能体状态图框架)解决什么问题。
  • 把退款投诉状态迁移表转换成状态图。
  • 区分 State(状态)、Node(节点)、Edge(边)、Conditional Edge(条件边)、循环、人工中断和检查点。
  • 判断客服流程中哪些步骤应该设计成节点,哪些判断应该设计成条件边。
  • 为“退款投诉处理”设计一条可暂停、可恢复、可转人工的状态图。
  • 设计状态图运行所需的字段契约,而不是只画流程图。
  • 说明节点日志、状态迁移日志、工具日志和人工确认日志分别记录什么。
  • 设计失败兜底:工具超时、节点输出无效、循环失控、人工超时、恢复失败时怎么办。
  • 说清 LangGraph(智能体状态图框架)和 Tool Calling、RAG、MCP、多智能体的关系。
  • 回答面试官关于状态图、条件分支、恢复、人工确认、可观测性和过度设计的追问。

贯穿业务场景​

继续使用本书第一批核心章的贯穿项目:企业客服知识库与工单 Agent 工作台。

这一章聚焦一个典型任务:用户发起退款投诉。它会同时涉及知识库、订单系统、售后政策、工单系统和人工客服。

业务阶段用户或系统行为状态字段本章状态图表达
新任务进入用户说“我要退款,你们客服没人理我”intent(意图)为 refund_request(退款请求),risk_level(风险等级)为 high(高)进入 classify_intent(识别意图)节点。
信息不足没有订单号missing_fields(缺失字段)包含 order_id(订单号)条件边流向 ask_for_order_id(追问订单号)节点,并暂停。
用户补充用户提供订单号current_step(当前步骤)变为 ready_to_check_order(可查订单)从检查点恢复,进入 validate_order_scope(校验订单归属)节点。
读取业务状态系统查订单used_tools(已用工具)记录 get_order_status(查订单状态)进入 check_order_status(查订单状态)节点。
查询政策订单已发货,需要判断售后规则tool_results(工具结果)记录订单摘要条件边流向 search_after_sales_policy(查售后政策)节点。
风险判断政策要求人工审核approval_required(需要审批)为 true条件边流向 prepare_ticket_draft(准备工单草稿)和 human_confirm(人工确认)节点。
写入动作用户确认工单摘要user_confirmation(用户确认)为 approved(已同意)进入 create_ticket(创建工单)节点。
完成或转人工工单创建成功,或失败转人工stop_reason(停止原因)为 completed(已完成)或 handoff(转人工)流向 final_response(最终答复)或 handoff_to_human(转人工)节点。

这张表说明:状态迁移表解决“状态要记录什么”,本章解决“状态如何驱动下一步”。LangGraph(智能体状态图框架)不是替代状态设计,而是把状态设计变成可运行、可暂停、可恢复、可观测的工作流。

新手为什么会卡住​

很多新手看到 LangGraph(智能体状态图框架)时,会把它当成“又一个 Agent 框架”。真正做项目时,他们通常卡在以下位置。

误解项目后果正确理解
LangGraph(智能体状态图框架)就是画流程图只画了图,运行时状态、恢复和日志仍然混乱状态图既要表达流程,也要承载状态更新、条件路由、暂停恢复和执行记录。
有了 Agent 循环就不需要状态图模型反复调用工具,停止条件不清楚Agent 循环适合开放探索,状态图适合有业务阶段、审批和验收路径的流程。
节点越细越专业节点爆炸,维护成本高节点应该按可测试的业务动作拆分,不按每个小变量拆分。
条件边交给模型判断就行高风险退款、投诉和越权查询可能被错误推进条件边要优先依赖结构化状态和业务规则,模型判断只能作为输入之一。
人工确认就是发一句“请确认”用户刷新页面或审核人晚点处理时流程丢失人工确认需要暂停、保存状态、展示待确认内容、恢复执行。
恢复就是重新跑一遍重复查订单、重复建工单、重复发通知恢复应该从检查点继续,并依赖幂等和状态日志。
可视化只是好看出问题只能看日志文本,很难解释路径状态图可视化能帮助产品、开发、测试和面试官理解每条路径。

本章会用客服工作台把这些误解拆开。读者不需要先记住某个框架语法,只需要先学会如何把业务流程建模成状态图。

继续学习​