spring-ai-alibaba 学习(二十)——graph之检查点
本文介绍了graph中的检查点机制,相当于执行进度的存档点。检查点包含ID、节点信息及全局状态,用于恢复执行进度。系统通过threadId区分不同会话的检查点,支持多种存档器实现(内存、文件系统、数据库等)。以MemorySaver为例,其内部使用链表存储检查点,提供保存、获取等基本操作。检查点机制使得graph可以在任意节点中断后继续执行,确保了流程的可靠性和可恢复性。
前面学习了graph的基本概念,参数设置,特殊节点和边,今天学习一下检查点
检查点可能名称比较抽象,换个名字可能比较容易理解,进度保存点或者存档点,可以类比游戏中保存当前游戏进度的存档进度
主要用于人工介入的场景,大概流程是每个节点后保存检查点,在某些节点前或后中断,进行人工操作,操作完成后,调用恢复接口resume,graph接收用户输入并根据最近的检查点(存档)恢复执行
可以将其分为存档进度,存档执行流程和存档执行器来了解
存档进度
CheckPoint 类就好比被保存的存档,类中包含一个id(默认自动生成一个uuid),当前节点id nodeId,下一节点id nextNodeId,全局状态 Map<String, Object> state,用后三个字段来记录当前图的执行状态。
存档执行流程
graph会在开始节点记录初始检查点,并且在每个节点执行完毕后更新全局状态时保存检查点,
在中断或异常后,通过调用resume接口来恢复现场,需要再resume接口的RunnableConfig参数中设置checkPointId
每个会话有自己的threadId,不同threadId的检查点会分开管理,确保可以按不同会话来恢复进度
存档器
简单样例
StateGraph graph = ...
CompileConfig compileConfig = CompileConfig.builder()
.saverConfig(SaverConfig.builder().type(SaverConstant.FILE).register(SaverConstant.FILE, saver).build()).build();
CompiledGraph app = graph.compile(compileConfig);
存档器的设置
在前面参数设置章节有提到过,主要是在编译图时通过CompileConfig设置
CompileConfig 中包含 SaverConfig
SaverConfig中包含一个Map<String, BaseCheckpointSaver>类型的savers属性
SaverConfig提供一个register方法来注册存档器,注册的存档器会放到savers中
SaverConfig还包含一个String类型的type字段
当调用SaverConfig的无参get方法时,取savers.get(type),即savers中key为type对应值的存档器,所以type可以理解为默认存档器的key
存档器的实现类
MemorySaver:基于内存的存档器,断电后存档消失
FileSystemSaver:基于文件系统的存档器
MongoSaver:基于mongodb的存档器
RedisSaver:基于redis的存档器
VersionedMemorySaver:带版本的内存存档器,适合一个会话多次执行图的情况,每次在图的结束节点会将检查点移入历史版本
存档器内部工作原理
以MemorySaver为例了解一下Saver的内部工作原理
MemorySaver内部包含一个 Map<String, LinkedList<Checkpoint>> 类型的属性,key为threadId,值为每个节点后保存的检查点
MemorySaver实现了BaseCheckpointSaver接口,提供get、put、list、clear、release、getLast等方法
调用 put 方法时若 RunnableConfig 的 checkPointId 为空,则直接存入当前检查点,并更新 RunnableConfig 中的 checkPointId;若非空,则替换相同checkPointId的检查点(实际由于更新后的RunnableConfig被丢弃,所以checkPointId一直都是空)
调用 get 方法时若 RunnableConfig 的 checkPointId 为空,则取链表中第一条记录(最新记录);若不为空,则取对应id的 CheckPoint
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)