spring-ai-alibaba 學習(二十)——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?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91888.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sqli-labs:Less-19關卡詳細解析

1. 思路&#x1f680; 本關的SQL語句為&#xff1a; $insert"INSERT INTO security.referers (referer, ip_address) VALUES ($uagent, $IP)";注入類型&#xff1a;字符串型&#xff08;單引號包裹&#xff09;、INSERT操作提示&#xff1a;參數需以閉合關鍵參數&a…

Java小紅書源碼1:1還原uniapp_仿小紅書源碼

在內容驅動型社交平臺興起的背景下&#xff0c;小紅書作為圖文/視頻種草社區的代表&#xff0c;其產品結構與功能體驗逐漸成為眾多開發者與創業團隊的模仿藍本。本項目基于Java后端uni-app前端棧&#xff0c;完整復刻小紅書主要功能&#xff0c;支持多端&#xff08;小程序、H5…

USB Type-C PD協議一文通

原文&#xff1a;https://www.richtek.com/Design%20Support/Technical%20Document/AN056?sc_langzh-TW譯者&#xff1a;TrustZone1、概述 USB Type-C標準的出現是為了滿足不斷增長的現代設備之間的連接需要&#xff0c;它在傳統USB標準的基礎上提供了更高的電源傳輸能力和資料…

AI文檔比對和Word的“比較”功能有什么區別?

AI文檔比對工具的核心區別在于&#xff0c;它超越了Word的純文本“找不同”&#xff0c;能精準處理掃描件、表格及印章&#xff0c;并將文檔審查從被動的文本核對&#xff0c;處理大文檔也更為快速及準確。 為什么Word的“比較”功能已經不夠用了&#xff1f; 對于許多專業人士…

AI驅動SEO關鍵詞智能進化

內容概要 隨著人工智能&#xff08;AI&#xff09;技術的快速演進&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;領域正迎來前所未有的變革。本文核心探討AI如何驅動SEO關鍵詞的智能進化&#xff0c;重點解析人工智能革新關鍵詞研究與優化策略的機制&#xff0c;包括智能…

基于SpringBoot+MyBatis+MySQL+VUE實現的青年公寓服務平臺管理系統(附源碼+數據庫+畢業論文+部署教程+配套軟件)

摘 要 傳統信息的管理大部分依賴于管理人員的手工登記與管理&#xff0c;然而&#xff0c;隨著近些年信息技術的迅猛發展&#xff0c;讓許多比較老套的信息管理模式進行了更新迭代&#xff0c;房屋信息因為其管理內容繁雜&#xff0c;管理數量繁多導致手工進行處理不能滿足廣…

12.Redis 主從復制

Redis 主從復制Redis 主從復制1. Redis 主從復制架構2. 主從復制實現2.1 主從命令配置2.1.1 啟用主從同步2.1.2 查看日志觀察同步狀態2.1.3 修改 Slave 節點配置文件2.1.4 刪除主從同步3. 主從復制故障恢復3.1 Slave 節點故障和恢復3.2 Master 節點故障和恢復3.3 常見主從復制故…

微服務的編程測評系統8-題庫管理-競賽管理

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言1. 添加題目1.1 service方法1.2 畫頁面-引入富文本和代碼編輯框1.3 子組件中發送請求2. 獲取題目詳情3. 編輯題目4. 刪除題目5. Vue生命周期函數5.1 創建階段5.2…

基于springboot的學習輔導系統設計與實現

學生&#xff1a;注冊登錄&#xff0c;學習視頻&#xff0c;學習資料&#xff0c;在線交流&#xff0c;系統公告&#xff0c;個人中心&#xff0c;后臺管理教師&#xff1a;登錄&#xff0c;個人中心&#xff0c;學習視頻管理&#xff0c;學習資料管理&#xff0c;簽到記錄管理…

Kubernetes (K8s) 部署Doris

官網提供yaml地址下載部署 https://doris.apache.org/zh-CN/docs/2.0/install/cluster-deployment/k8s-deploy/install-env/禁用和關閉 swap 在部署 Doris 時&#xff0c;建議關閉 swap 分區。 通過以下命令可以永久關閉 swap 分區。 echo "vm.swappiness 0">>…

AI生成圖片工具分享!

CZL在線工具箱近日推出了一款基于Cloudflare Workers AI的免費在線AI圖片生成服務。該服務采用**Stable Diffusion XL&#xff08;SDXL&#xff09;**模型&#xff0c;為用戶提供高質量、逼真的圖像生成體驗。 核心特性 全球GPU網絡&#xff1a;基于Cloudflare全球分布式GPU網…

Spring Batch的2種STEP定義方式

Spring Batch的2種STEP定義方式 1. 第一種&#xff1a;基于Chunk-Oriented Processing&#xff08;read&#xff0c;process&#xff0c;write&#xff09;形式 適用場景&#xff1a; 大數據量批處理&#xff1a;適合需要分批次讀取、處理并寫入大量數據的場景&#xff08;如數…

前端JS-調用單刪接口來刪除多個選中文件

當開發中遇到&#xff1a;服務端沒有刪除多個文件功能接口&#xff0c;只有單個刪除文件功能接口時&#xff0c;會遇到如何多選刪除文件效果最佳。await Promise.all(selectedDocPaths.map(async (path) > {try {await fileDelete(path)} catch (err) {throw new Error(刪除…

機器學習——過采樣(OverSampling),解決類別不平衡問題,案例:邏輯回歸 信用卡欺詐檢測

下采樣&#xff1a;機器學習——下采樣&#xff08;UnderSampling&#xff09;&#xff0c;解決類別不平衡問題&#xff0c;案例&#xff1a;邏輯回歸 信用卡欺詐檢測-CSDN博客 &#xff08;完整代碼在底部&#xff09; 解決樣本不平衡問題&#xff1a;SMOTE 過采樣實戰講解 …

Ettus USRP X440 進行“超短波個人衛星信號的偵查與干擾”任務

結合 Ettus USRP X440 進行“超短波個人衛星信號的偵查與干擾”任務&#xff0c;可以構建一個高性能、靈活可編程的電子對抗系統原型平臺。以下是面向科研/工程/軍用驗證場景的構思和技術文案&#xff1a; &#x1f6f0;? 項目名稱建議&#xff08;可選&#xff09;&#xff1…

如何在出售Windows11/10/8/7前徹底清除電腦數據

為了保護您的個人數據&#xff0c;在出售電腦前徹底清除數據是一個明智之舉。然而&#xff0c;僅僅刪除文件是不夠的&#xff0c;因為恢復工具通常可以恢復它們。因此&#xff0c;本指南分享了如何在出售電腦前清除數據&#xff0c;包括 Windows 11/10/8/7&#xff0c;確保您的…

Go語言實戰案例:多協程并發下載網頁內容

本文是《Go語言100個實戰案例 網絡與并發篇》第6篇&#xff0c;實戰演示如何使用 Goroutine 和 Channel&#xff0c;實現多協程并發抓取網頁內容&#xff0c;提升網絡請求效率&#xff0c;為構建爬蟲、內容聚合器、API 批量采集器打下基礎。一、實戰背景在互聯網項目中&#x…

分享鏈接實現狀態共享

有這么一個場景&#xff1a;就是有一些列表頁面&#xff0c;然后上面是有一些篩選項的&#xff0c;我去對這個列表做了一些篩選出來一個結果&#xff0c;然后我想把這個鏈接&#xff0c;或者說把這個篩選結構給分享出去&#xff0c;讓別人在打開這個頁面的時候&#xff0c;也是…

Fay數字人如何使用GPT-SOVITS進行TTS轉換以及遇到的一些問題

一、GPT-SoVITS 簡介 GPT-SoVITS 是一款開源的語音合成&#xff08;TTS&#xff09;工具&#xff0c;結合了 GPT 模型的文本理解能力與 SoVITS&#xff08;Sound of Voice In Text-to-Speech&#xff09;的聲紋模擬技術&#xff0c;能夠實現高自然度、個性化的語音合成。它支持…

HTML 顏色值

HTML 顏色值 引言 在網頁設計和開發中,顏色是一個重要的元素,它能夠幫助用戶更好地理解內容,提升視覺效果。HTML 顏色值是用于指定網頁中元素顏色的一種標準表示方法。本文將詳細介紹 HTML 顏色值的種類、表示方法以及在實際應用中的使用技巧。 HTML 顏色值種類 HTML 顏…