Sunday 的面试指南

LangGraph 持久化执行:服务重启后如何恢复 Agent?

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

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

上一小节,咱们通过 DDD 理清了演示文稿制作过程中的业务对象、状态和规则。

比如,大纲已经生成到 v2,那么当前有效版本就应该是 v2;大纲还没有通过审核,系统就不能开始制作页面。

但是,这些规则能正确执行,还有一个前提,那就是:应用程序得知道这项任务已经执行到哪里了。

假设,当前流程是这样的:整理制作要求 → 生成演示文稿大纲 → 保存大纲草稿

前两步已经完成,执行到“保存大纲草稿”时,存储服务突然报错,程序直接崩了。

服务重新启动以后,接下来应该执行什么?

如果应用程序从头开始运行,就会再次整理要求、再次调用模型生成大纲,然后再尝试保存。

这样会产生两个问题。

前面已经完成的工作被重复执行了,那就会浪费很多 Token

更麻烦的是,大模型生成内容本身具有一定的随机性。即使输入完全一样,第二次生成的大纲也可能和第一次不同。服务重启一次之后,用户最后看到的内容可能就会发生变化。

那么想要解决这个问题,就要用到这一小节的讲的东西了,也就是:Durable Execution 持久化执行。

持久化执行到底是什么

咱们可以先这样理解:

持久化执行,就是把工作流已经完成的状态和下一步任务保存下来。程序中断以后,再从最近一次可靠保存的位置继续执行。

比如咱们刚才的流程是:整理制作要求 → 生成演示文稿大纲 → 保存大纲草稿

那么持久化了之后,就会变成:

→ 整理制作要求
→ 保存当前 State
→ 生成演示文稿大纲
→ 保存当前 State
→ 保存大纲草稿时失败
→ 进程结束

重新启动服务
→ 读取最近一次保存的 State
→ 继续执行“保存大纲草稿”

这样写可能有点长,给大家用一张图来表示

LangGraph 持久化执行:服务重启后如何恢复 Agent? 配图 1

这样做的话,“整理制作要求”和“生成演示文稿大纲”已经完成并保存,恢复时就不需要重新执行。

所以,持久化执行的关键就是保存两类信息:

  • 任务已经产生了哪些结果
  • 接下来还需要执行哪个步骤

只要这两类信息没有随着

本节试读已结束

继续学习,解锁完整课程

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

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

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

解锁完整课程 ¥499

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

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

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

保存微信二维码