Backends / 后端Note 24
01 StateBackend
学习目标
学习目标
理解一句话:StateBackend 把文件保存在当前 thread 的 LangGraph state 中。
示例
示例只做两件事:
- 在 thread
state-backend-demo中写入/note.txt。 - 使用同一个 thread 再次调用 Agent,读取
/note.txt。
关键配置:
agent = create_deep_agent(
model=gpt_model,
backend=StateBackend(),
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": "state-backend-demo"}}
StateBackend():文件进入 Agent state。InMemorySaver():保存每次运行后的 state。thread_id:决定读取哪一个 thread 的 state。
运行
在项目根目录执行:
uv run python deepagent_src/backend_teach/01_state_backend.py
运行会调用模型两次,产生 API 费用。
观察重点
第二次调用能读到第一次写入的文件,因为两次调用使用了同一个 thread_id。
如果把第二次调用的 thread_id 改掉,它就读不到原 thread 中的 /note.txt。
生命周期
当前示例使用 InMemorySaver:
- 同一 Python 进程内可以跨多次调用保存文件。
- 程序退出后,内存 checkpoint 消失。
- 需要重启后继续保存时,应换成持久化 checkpointer。
StateBackend 适合什么
- Agent 临时草稿
- 中间分析结果
- 大工具输出的临时存放
- supervisor 与 subagent 共享本次 thread 的文件
不适合跨用户、跨 thread 的长期记忆;这种需求后面学习 StoreBackend。
相关资源
查看示例代码:deepagent_src/backend_teach/01_state_backend.py
import os os.environ["LANGSMITH_TRACING"] = "false" from deepagents import create_deep_agent from deepagents.backends import StateBackend from langgraph.checkpoint.memory import InMemorySaver from deepagent_src.llms import gpt_model def main(): agent = create_deep_agent( model=gpt_model, backend=StateBackend(), checkpointer=InMemorySaver(), ) config = {"configurable": {"thread_id": "state-backend-demo"}} agent.invoke( {"messages": [{"role": "user", "content": "把‘我正在学习 StateBackend’写入 /note.txt"}]}, config, ) result = agent.invoke( {"messages": [{"role": "user", "content": "读取 /note.txt,并告诉我文件内容"}]}, config, ) print(result["messages"][-1].content) if __name__ == "__main__": main()