AIとLLMエージェント

LangGraphチェックポイント

LangGraphエージェントをHotKVで永続化します。グラフの状態を一時停止、再開、巻き戻しでき、長期メモリは意味で検索できます。

合格した適合テスト
81
セーバー
同期 + 非同期
ライセンス
不要
ステップ 1 / 6
インストール

チェックポインターとストアは1つのパッケージです。Python 3.10以降が必要です。

サンプルセッションplaying
# インストール
$ pip install langgraph-checkpoint-hotkv
Successfully installed langgraph-checkpoint-hotkv

実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。

課題

状態をプロセスのメモリに保持するLangGraphエージェントは、再起動するとすべてを失います。人間による承認を一晩待つことはできず、失敗した実行は再開できず、エージェントが学んだことは次の会話まで残りません。

HotKVでの解決方法

langgraph-checkpoint-hotkvは、各グラフのチェックポイントをHotKVに保存します。グラフは中断して再開することも、以前の任意のステップまで巻き戻してそこから分岐させることもできます。付属のストアはスレッドをまたいで長期メモリを保持し、ネームスペース、フィルター、または埋め込みモデルを使えば意味で見つけられます。

ステップごとに

コマンドごとに何が起きるか

  1. 01

    インストール

    チェックポインターとストアは1つのパッケージです。Python 3.10以降が必要です。

    pip install langgraph-checkpoint-hotkv
  2. 02

    HotKVのチェックポインターでコンパイル

    これで、グラフのすべてのステップが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から再開します。

デバッグと評価

以前の任意のチェックポイントに戻り、入力を変えて分岐させることで、エージェントがどう振る舞ったかを確かめられます。

標準搭載

得られるもの

チェックポインター

HotKVSaverとAsyncHotKVSaverは、中断、再開、巻き戻しに対応し、実行の合間もグラフの状態を保持します。

長期ストア

HotKVStoreはスレッドをまたいでアイテムを保持し、ネームスペース、フィルター、意味で検索でき、有効期限も設定できます。

適合テスト済み

LangGraph自身のチェックポインター適合テストスイート(8つの機能にわたる81件のテスト)に、両方のセーバーで合格しています。

モジュールもライセンスも不要

HotKVのコアデータ型とベクトルインデックスを使い、Enterpriseライセンスの有無にかかわらず動作します。

チェックポインターとストア

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"}})
リファレンス:hotkv-langgraph on GitHub

よくある質問

Enterpriseライセンスは必要ですか?

いいえ。チェックポインターとストアはHotKVのコアデータ型とベクトルインデックスを使い、ライセンスの有無にかかわらずサーバー上で動作します。

非同期には対応していますか?

はい。AsyncHotKVSaverとAsyncHotKVStoreは、ainvokeとastreamで動作します。

複数のアプリで1台のサーバーを共有できますか?

はい。すべてはキープレフィックス(デフォルトはlanggraph)の下に保存され、アプリケーションや環境ごとに変更できます。

関連するユースケース

ご自身のワークロードで試してみましょう

HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。