Checkpointer 基础:把图的状态存下来
个人主页 for_ever_love__ 欢迎各位大佬莅临其他栏目: 大模型开发从0到1 其他栏目: iOS项目总结大全 其他栏目: 我想学python了 其他栏目: iOS UI 文章目录Checkpointer 基础把图的状态存下来一、MemorySaver 最快上手二、状态存在哪、怎么取三、为什么需要它四、MemorySaver 只是起点Checkpointer 基础把图的状态存下来默认情况下LangGraph 跑完一张图状态就随进程消失了——下一次invoke又是全新开始。要让图「记得」上一次跑到哪、状态是什么就得用Checkpointer检查点它在每个超级步super-step之后把当前状态按thread_id快照存起来。一、MemorySaver 最快上手fromlanggraph.checkpoint.memoryimportMemorySaverfromlanggraph.graphimportStateGraph,START,END# ... 定义好 graphadd_node / add_edge...appgraph.compile(checkpointerMemorySaver())config{configurable:{thread_id:user-1}}app.invoke({x:1},config)两个关键点①compile时传入 checkpointer② 调用时带上config里的thread_id。同一个thread_id下的所有运行共享同一份持久状态。二、状态存在哪、怎么取检查点按(thread_id, checkpoint_id)组织。你可以事后把某次运行的状态取出来stateapp.get_state(config)print(state.values)# 当前完整状态print(state.next)# 下一步要跑的节点若中断则为非空元组state.values就是那张图跑完、或跑到某处时的完整 State。三、为什么需要它多轮对话同一 thread_id 下messages 不断追加无需手动把历史传来传去可恢复图跑到一半崩了用同一个 config 再 invoke 能接着跑可观测每一步都有快照配合 Studio 能回看整条轨迹见「可视化调试」篇人机协同前提interrupt / 断点恢复都依赖检查点把状态留下来。四、MemorySaver 只是起点MemorySaver把状态存在内存里进程一关就没了只适合本地调试。上生产要用持久后端PostgresSaver、SqliteSaver、RedisSaver等见「持久化上生产」篇。它们 API 完全一致只是把存储换成了数据库。一句话Checkpointer 是 LangGraph 从「一次性脚本」升级为「有状态服务」的开关。只要compile(checkpointer...) 每次带thread_id图就开始「记事」了。