SuperAPI AI 工具集

langgraph-persistence

智能体与模型

查看项目

更新于 10-15 23:48

技能介绍

用途:为 LangGraph 图添加状态持久化能力,支持保存/加载每个 super-step 的图状态、记住对话、回溯历史,以及配置子图检查点作用域。

主要能力:检查点(Checkpointer)在每个 super-step 保存与加载图状态;线程 ID(thread_id)标识独立的检查点序列(即不同对话);Store 提供跨线程的长期记忆(用户偏好、事实)。两类记忆:短期(checkpointer,线程级对话历史)与长期(store,跨线程偏好与事实)。检查点后端:InMemorySaver 用于测试开发(非生产就绪)、SqliteSaver 用于本地开发(部分就绪)、PostgresSaver 用于生产(就绪)。支持状态历史与时间旅行:get_state_history 浏览检查点、从过去检查点重放、update_state 分叉或修改状态后恢复。子图检查点作用域:compile(checkpointer=False) 无需中断与持久化;省略 checkpointer(默认)支持 interrupt() 但不跨调用记忆;checkpointer=True 支持跨调用多轮记忆,但同一节点内并行调用同一有状态子图会命名空间冲突。并行有状态子图需用唯一节点名包装以隔离命名空间。

使用方式:编译图时传入 checkpointer,调用时始终提供 thread_id,例如 config = {"configurable": {"thread_id": "conversation-1"}}。生产环境用 PostgresSaver.from_conn_string(os.environ["DATABASE_URL"]),部署时运行一次 setup() 建表。长期记忆用 InMemoryStore,通过 runtime.store 在节点内访问,编译时同时传入 checkpointer 与 store。update_state 会经过 reducer,需替换时用 Overwrite。

适用场景:多轮对话、需要人工介入中断、历史回溯与分叉、跨会话用户偏好记忆、并行子智能体。

限制:InMemorySaver 重启丢数据,生产应换 PostgresSaver;忘记 thread_id 状态不持久;update_state 不绕过 reducer;有状态子图不可在同一节点内并行重复调用;节点内不能直接访问 store,须经 runtime.store。