Sunday 的面试指南

LangGraph 人工审核:暂停、批准、修改与恢复工作流

《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday

你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。

上一小节,咱们解决了服务中断以后继续执行的问题。

不过,在演示文稿制作流程中,还有一种更常见的 暂停操作。

Agent 生成大纲以后,需要等待让用户确认(回一下之前学过的 Human-in-the-loop 的案例)。

那么想要实现这样的等待功能,咱们就必须要满足是三个条件:

  • 第一:工作流可以在审核位置暂停
  • 第二:暂停状态可以保存到数据库
  • 第三:用户提交决定以后,可以继续原来的工作流

那么怎么做呢?

咱们来看下~

人工审核到底怎样暂停一条工作流

第四章的项目里面,咱们通过 Human-in-the-loop 实现过暂停操作:

LangGraph 人工审核:暂停、批准、修改与恢复工作流 配图 1

当时的逻辑时,当 Agent 准备执行 delete_file 时,Runtime 会保存待执行的 Action,把 Run 状态改成 waiting_approval,然后通过 break 结束当前 Agent Loop

用户点击批准以后,服务端再把 Run 改回 running,重新调用 schedule(runId),让 execute() 继续执行。

这套暂停和恢复逻辑,是咱们在自定义 Agent Runtime 中手动实现的。

但是,它还有一个没有解决的问题。

那就是,当时的 RunStoreService 虽然会把 Run 写入工作区文件,但正在运行的任务主要保存在进程内的 Map 中,服务启动时也没有重新加载这些 Run。

所以,第四章实现的是:在服务仍然运行的情况下,暂停 Agent Loop,等待用户批准或者拒绝一个高风险 Action。

但是,咱们现在要处理的任务会持续更长时间。

大纲生成以后,用户可能过几个小时才回来审核。在等待期间,电脑可能都重启了。。。

所以,这一次需要实现的是:

把暂停位置、工作流 State 和待审核内容全部持久化。即使原来的服务进程已经结束,新的进程仍然可以恢复同一条工作流。

因此,这一小节不会重新讲一遍 Human-in-the-Loop 的基本概念。

咱们真正要学习的是:怎样把人工审核放进一条可以持久化的 LangGraph 工作流中。

那么,LangGraph 怎么让一条工作流持久化暂停呢?

这里就要使用到一个方法,叫做 interrupt() 中断

LangGraph 人工审核:暂停、批准、修改与恢复工作流 配图 2

给大家写个伪代码,大家可以看下:

const decision = interrupt({
	type: 'out

本节试读已结束

继续学习,解锁完整课程

购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。

扫码添加作者微信,备注「Agent 课程」

添加作者微信 · 购买完整课程

解锁完整课程 ¥499

《Agent 大模型 0 到 1 系统课》
扫码添加微信,备注「Agent 课程」,购买后由 Sunday 提供完整内容的学习方式。

扫码添加作者微信 LGD_Sunday,购买 499 元 Agent 课程

微信昵称:LGD_Sunday
手机上可长按保存二维码,再用微信扫一扫识别。

保存微信二维码