持久化让 LangGraph 应用能够在单次图运行之外保留有用的信息。这在智能体需要继续对话、在中断后恢复、从故障中恢复或跨交互记住信息时尤为重要。
LangGraph 提供了两种互补的持久化系统:
- - **检查点程序** 将线程的图状态持久化为检查点。用于短期、线程范围的记忆,包括对话连续性、人机交互工作流、时间旅行和容错。
- - **存储** 在图状态之外持久化应用定义的数据。用于长期、跨线程的记忆,包括用户偏好、事实和共享知识。
大多数应用可以同时使用两者: 检查点程序 跟踪当前线程,而 存储 跨线程跟踪持久化信息。
快速入门
使用检查点程序、存储或两者同时编译你的图:
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.store.memory import InMemoryStore
checkpointer = InMemorySaver()
store = InMemoryStore()
graph = builder.compile(checkpointer=checkpointer, store=store)
result = graph.invoke(
{"messages": [{"role": "user", "content": "Hi, my name is Bob."}]},
{"configurable": {"thread_id": "thread-1"}},
)
检查点程序 vs. 存储
| 检查点程序 | 存储 | |
|---|---|---|
| 持久化内容 | 图状态快照 | 应用定义的键值数据 |
| 范围 | 单个线程 | 跨线程 |
| 记忆类型 | 短期、线程范围的记忆 | 长期、跨线程的记忆 |
| 用途 | 对话连续性、人机交互、时间旅行和容错 | 用户偏好、事实和共享知识 |
| 访问模式 | 传入 thread_id 到图配置中 | 从节点或应用代码中读写数据 |
| 完整指南 | 检查点程序 | 存储 |