智能体记忆库怎么搭建?用 LangGraph 区分会话状态与跨会话存储

用 LangGraph 的 checkpointer 与 store 分开验证会话状态和跨会话用户偏好。

智能体“记住上一轮对话”和“跨会话记住用户偏好”是两类不同的数据。在 LangGraph 中,checkpointer 以 thread_id 保存会话状态;store 用自定命名空间保存跨会话资料。把用户 ID 当作 thread_id 共用,会混淆多次独立对话;只用会话状态,也不会自动得到长期偏好库。

先验证会话状态

以下是依据 LangGraph Memory 官方文档整理的最小演示。先安装当前版 langgraph,保存为 memory_demo.py。本例不调用大模型,用字符串状态验证存储边界,避免把模型回答误当作记忆测试。

智能体记忆库怎么搭建?用 LangGraph 区分会话状态与跨会话存储

from typing import Annotated, TypedDict
import operator
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.graph import StateGraph, START
from langgraph.store.memory import InMemoryStore

class State(TypedDict):
    question: str
    history: Annotated[list[str], operator.add]

def record(state: State) -> dict:
    return {"history": [state["question"]]}

builder = StateGraph(State)
builder.add_node("record", record)
builder.add_edge(START, "record")
graph = builder.compile(checkpointer=InMemorySaver())

thread_a = {"configurable": {"thread_id": "user-7-session-a"}}
thread_b = {"configurable": {"thread_id": "user-7-session-b"}}
print(graph.invoke({"question": "第一问", "history": []}, thread_a)["history"])
print(graph.invoke({"question": "第二问"}, thread_a)["history"])
print(graph.invoke({"question": "另一会话", "history": []}, thread_b)["history"])

预期同一 thread 的第二次输出含“第一问、第二问”,新 thread 只含“另一会话”。这验证的是图状态持续,不代表模型已学会推理或自动压缩长对话;长对话仍需处理上下文长度。

再验证跨会话的用户偏好

在同一脚本末尾追加以下代码。user_id 应来自可信的登录态或服务端鉴权,不能直接相信请求中自报的 ID。

store = InMemoryStore()
namespace = ("users", "user-7", "preferences")
store.put(namespace, "theme", {"value": "dark"})
saved = store.get(namespace, "theme")
print(saved.value)

another_thread = {"configurable": {"thread_id": "user-7-session-c"}}
print(graph.invoke({"question": "新会话", "history": []}, another_thread)["history"])
print(store.get(namespace, "theme").value)

预期新会话的 history 不含前两问,但同一用户命名空间仍能取到 {"value": "dark"}。这个最小例子在图外读写 store,实际 Agent 可在节点中通过运行时访问 store;必须先确定哪些偏好值得保存、如何征得同意、如何删除和隔离用户数据。不同用户应使用不同命名空间,并用测试确认不能跨用户读取。

InMemorySaver 与 InMemoryStore 只适合进程内演示,进程结束数据会消失;生产环境按官方文档改用数据库支持的 checkpointer 和 store。本文脚本在独立本地环境运行通过,未在读者项目执行;依赖版本变化时先以官方当前示例核对导入与调用。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/29919.html

赞 (0)
AI小管家的头像AI小管家
AI 知识库工具怎么选?Dify 与 RAGFlow 的建库、调试和工作流比较
上一篇 8小时前
Dify 知识库更新后仍召回旧文怎么办?停用旧文并验证新版本
下一篇 8小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部