aaihubhub
AI Agent 小白系统课:从大模型到会行动的智能体 · 第 14 课 / 共 20 课 ↗ AI 教程

14|什么时候使用 LangGraph:复杂度与控制边界

用实际判断标准决定何时需要 LangGraph,何时简单函数就够。

kimi
LESSON BRIEFING14 / 20

用实际判断标准决定何时需要 LangGraph,何时简单函数就够。

护栏不是一句“请小心”,而是山路的限速、实体栏杆、刹车检查和危险路段人工接管。

带条件分支与人工确认的安全流程

本课交付物

为退款 Agent 定义金额分级、证据要求、禁止动作和人工批准矩阵。


核心讲解

LangGraph 是由 LangChain 开发的框架,用于管理集成 LLM 的应用程序的控制流

LangGraphLangChain 有何不同?

LangChain 提供了与模型和其他组件交互的标准接口,可用于检索、LLM 调用和工具调用。
LangChain 的类可能会在 LangGraph 中使用,但不是必须的。

这两个包是独立的可以单独使用,但最终你在网上找到的资源都会同时使用这两个包。

何时应该使用 LangGraph

控制 vs 自由度

在设计 AI 应用时,你面临 控制自由度 的基本权衡:

  • 自由度 赋予 LLM 更多创造性地解决问题的空间
  • 控制 能确保可预测的行为并维持安全护栏

smolagents 中的代码智能体(Code Agents)具有高度自由度。它们可以在单个行动步骤中调用多个工具、创建自己的工具等。然而,这种行为会使它们比使用 JSON 的常规 Agent 更难预测和控制!

LangGraph 则位于光谱的另一端,当你需要对智能体的执行进行 “控制” 时,它就会大放异彩。

当你需要 对应用程序保持控制 时,LangGraph 特别有价值。它为你提供了构建可预测流程应用程序的工具,同时仍能利用 LLM 的强大能力。

简而言之,如果你的应用程序包含需要以特定方式编排的多个步骤,并在每个连接点做出决策,LangGraph 就能提供你所需的结构

举个例子,假设我们要构建一个能够回答文档相关问题的 LLM 助手。

由于 LLM 最擅长理解文本,在回答问题之前,你需要将其他复杂模态(图表、表格)转换为文本。但这个选择取决于你拥有的文档类型!

我选择将这种分支流程表示为:

💡 提示: 左侧部分不是智能体,因为这里不涉及工具调用。但右侧部分需要编写代码来查询 xls 文件(转换为 pandas 并操作它)。

虽然这个分支是确定性的,但你也可以设计基于 LLM 输出结果的非确定性条件分支。

LangGraph 表现出色的关键场景包括:

  • 需要显式控制流程的 多步骤推理过程
  • 需要在步骤之间 保持状态持久化 的应用程序
  • 结合确定性逻辑与 AI 能力 的系统
  • 需要 人工介入 的工作流
  • 多个组件协同工作的 复杂智能体架构

本质上,只要有可能,作为人类 就应该根据每个操作的输出设计行动流程,并据此决定下一步执行什么。在这种情况下,LangGraph 就是你正确的选择!

在我看来,LangGraph 是市场上最适合生产环境的智能体框架。

LangGraph 如何工作?

其核心在于,LangGraph 使用有向图结构来定义应用程序的流程:

  • 节点 表示独立的处理步骤(如调用 LLM、使用工具或做出决策)
  • 定义步骤之间可能的转换
  • 状态 由用户定义和维护,并在执行期间在节点间传递。当决定下一个目标节点时,我们查看的就是当前状态

我们将在下一章更深入地探讨这些基本模块!

它和普通 Python 有何不同?为什么需要 LangGraph?

你可能会想:“我可以用常规 Python 代码和 if-else 语句来处理所有这些流程,对吧?”

虽然技术上可行,但对于构建复杂系统,LangGraph 相比原生 Python 有 诸多优势。没有 LangGraph 你也能构建相同应用,但它能为你提供更便捷的工具和抽象。

它包含状态管理、可视化、日志追踪(traces)、内置的人类介入机制等功能。


本站实战工作台

护栏是多层控制,不是一句“请小心”

输入校验挡住非法请求,工具权限限制能力,业务政策限制允许结果,输出校验检查证据,人工批准接管高影响动作,监控发现漏网问题。任何一层都可能失败,组合才形成防线。

退款 Agent 分级

0–100 元且证据完整可自动提出建议,但最终执行走确定性服务;100–500 元需要客服确认;500 元以上或涉及欺诈标记交风控。Agent 永远不能修改收款账户、绕过订单归属或拆单规避阈值。

function decision(amount:number, evidence:boolean, fraud:boolean) {
  if (fraud || amount > 500) return 'RISK_REVIEW'
  if (!evidence) return 'REQUEST_EVIDENCE'
  if (amount > 100) return 'HUMAN_APPROVAL'
  return 'ELIGIBLE_FOR_POLICY_EXECUTION'
}

阈值在服务端政策代码,不在提示词。模型可解释原因,但不能更改 decision。

对抗测试

测试负数、拆成多笔、伪造订单号、提示注入、重复提交、证据链接指向内网。验证越权请求在调用支付前被拒绝,日志只记录脱敏指纹。

人工批准的 UX

批准页显示用户、订单、金额、证据、Agent 建议和不可逆后果;批准有过期时间,状态变化后必须重新确认。一个没有上下文的“允许”按钮不算有效控制。

护栏也要评估

统计危险动作拦截率、正常请求误拒率、升级人工比例与处理延迟。误报太多会诱发绕过,漏报太多则无保护。每次事故增加具体测试,而不是再加一句泛化警告。

完成标准是正常、边界、攻击与重复四类用例都有证据;任何高影响动作都无法仅凭模型文本执行。