AI 與 LLM代理

LangGraph 檢查點與長期記憶

將 LangGraph 代理持久化到 HotKV。暫停、恢復並回溯圖狀態,並讓長期記憶可依語意搜尋。

項通過的一致性測試
81
儲存器
同步 + 非同步
即可使用
無須授權
步驟 1 / 6
安裝

一個套件同時包含 checkpointer 與儲存。需要 Python 3.10 或更新版本。

範例工作階段playing
# 安裝
$ pip install langgraph-checkpoint-hotkv
Successfully installed langgraph-checkpoint-hotkv

以真實 HotKV 指令與範例回覆呈現的動畫導覽。點擊任一步驟即可跳到該步驟。 指令與回覆維持英文,與您在 HotKV 中輸入及看到的完全一致。

問題

把狀態保存在行程記憶體中的 LangGraph 代理,一重新啟動就會失去一切。人工介入的核准無法等到隔夜,失敗的執行無法恢復,代理學到的任何事物也無法延續到下一次對話。

HotKV 如何處理

langgraph-checkpoint-hotkv 將每個圖的檢查點儲存在 HotKV。圖可以被中斷並恢復,或回溯到任何較早的步驟並從該處分支。配套的儲存則跨執行緒保存長期記憶,可依命名空間、篩選條件,或搭配嵌入模型依語意找出。

逐步說明

逐個指令看看發生了什麼事

  1. 01

    安裝

    一個套件同時包含 checkpointer 與儲存。需要 Python 3.10 或更新版本。

    pip install langgraph-checkpoint-hotkv
  2. 02

    搭配 HotKV checkpointer 編譯

    圖的每個步驟現在都會儲存在 HotKV。

    graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])
  3. 03

    執行到需要核准為止

    圖逐步執行,每一步之後都儲存檢查點,並在退款之前停下。

    graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})
  4. 04

    數小時後,重新啟動之後

    行程在隔夜重新啟動了。狀態仍在 HotKV 中,停留在同一個步驟等待。

    graph.get_state({"configurable": {"thread_id": "t-81"}}).next
  5. 05

    核准並恢復

    核准者答應後,圖從儲存的檢查點繼續執行。

    graph.invoke(None, {"configurable": {"thread_id": "t-81"}})
  6. 06

    跨執行緒記住

    長期記憶存放在儲存之中,在之後的任何對話裡都能再次找到。

    store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})
適用之處

真實世界的情境

人工介入的工作流程

退款、合約變更與正式環境部署等待人員核准,可能是幾分鐘或幾天,而不必一直開著一個行程。

長時間運行的研究代理

在第 40 步失敗的執行,可以從第 40 步恢復,而不必從頭開始。

除錯與評估

回到任何較早的檢查點,修改輸入並分支,看看代理本來會有什麼表現。

內建

您能獲得什麼

Checkpointer

HotKVSaver 與 AsyncHotKVSaver 在多次執行之間保存圖狀態,支援中斷、恢復與時間回溯。

長期儲存

HotKVStore 跨執行緒保存項目,可依命名空間、篩選條件或語意搜尋,並可選擇設定到期。

通過一致性測試

兩種儲存器都通過 LangGraph 自己的 checkpointer 一致性測試套件,涵蓋 8 項能力共 81 項測試。

不需模組,不需授權

使用 HotKV 的核心資料類型與其向量索引,無論有沒有企業授權都能運作。

Checkpointer 與儲存

python
from langgraph.checkpoint.hotkv import HotKVSaver

with HotKVSaver.from_conn_string("hotkv://localhost:6379") as checkpointer:
    graph = builder.compile(checkpointer=checkpointer)
    graph.invoke({"messages": [("user", "hi")]}, {"configurable": {"thread_id": "1"}})

常見問題

我需要企業授權嗎?

不需要。checkpointer 與儲存使用 HotKV 的核心資料類型與向量索引,在有或沒有授權的伺服器上都能運作。

支援非同步嗎?

支援。AsyncHotKVSaver 與 AsyncHotKVStore 可搭配 ainvoke 與 astream 使用。

多個應用程式可以共用一台伺服器嗎?

可以。所有內容都儲存在鍵前綴之下,預設為 langgraph,您可以依應用程式或環境更改。

相關使用情境

在您自己的工作負載上試試看

HotKV 支援 Redis 協定,因此您可以將現有的用戶端指向它,並執行這些相同的指令。