长期记忆存储在数据库里

from langchain.agents import create_agent,AgentState

from langgraph.checkpoint.memory import InMemorySaver

from langgraph.checkpoint.mysql.pymysql import PyMySQLSaver

from langgraph.store.memory import InMemoryStore

from langgraph.prebuilt import ToolRuntime

from langgraph.store.mysql import PyMySQLStore

from init_llm import deepseek_llm

from langchain_core.tools import tool

DB_URI="mysql+pymsql://root:xx@43.15.1.88:3306/langchain_db?charset=utf8mb4"

with (PyMySQLSaver.from_conn_string(DB_URI) as checkpointer,

PyMySQLStore.from_conn_string(DB_URI) as store):

checkpointer.setup()

store.setup()

store.put(

("users",),

"user_123",

{"name":"张三","age":18,"city":'北京',"hobby":"旅游"}

)

store.put(

("users",),

"user_456",

{"name": "李四", "age": 30, "city": '南京', "hobby": "足球"}

)

@tool

def get_user_info(runtime:ToolRuntime) -> str:

"""从长期获取用户信息"""

print('111111111111111111111111111111111')

store=runtime.store

user_data=store.get(("users",),"user_123")

if user_data:

print("user_data:",user_data)

value=user_data.value

return f"用户姓名:{value'name'},用户年龄:{value'age'},用户城市:{value'city'},用户爱好:{value'hobby'}"

else:

return f"用户信息不存在"

agent=create_agent(

model=deepseek_llm,

tools=get_user_info,

store=store #长期记忆存储

)

config1={"configurable": {"thread_id":"session01"}}

config2={"configurable": {"thread_id":"session02"}}

resp=agent.invoke({"messages":{"role":"user","content":"?""},"user_id":'user01',"hobby":'篮球','羽毛球',"other_info":{'age':28}},config=config1)

print(resp'messages'-1)

#resp=agent.invoke({"messages":{"role":"user","content":"我叫张三,你是谁?""}},config=config1)

resp=agent.invoke({"messages":{"role":"user","content":"获取我的信息?"}},config=config1)

print(resp'messages'-1)

resp=agent.invoke({"messages":{"role":"user","content":"获取我的信息?"}},config=config2)

print(resp'messages'-1)

相关推荐
阿pin1 小时前
Android随笔-Serializable与Parcelable
android·serializable·parcelable
天空之城--2 小时前
Android 事件分发机制深度解析——原理、源码与实战综合总结
android
阿pin2 小时前
Android随笔-AIDL
android·开发语言·aidl
2501_916007473 小时前
Bundle ID 注册与管理 App ID 创建指南 命名规则 权限开关与删除注意事项
android·ios·小程序·https·uni-app·iphone·webview
雨白3 小时前
面向对象六大基本原则实战:从零重构支持引擎切换的网络框架
android·架构
张赐荣4 小时前
Android TalkBack 无障碍优化: 为控件自定义转子导航动作
android·microsoft
天空之城--6 小时前
Android Flutter行业动态与学习参考(2026年8月)
android·flutter
quantdash_cc7 小时前
基于 QuantDash 5 分钟 K 线的网格交易策略参数网格搜索寻优实战
android·开发语言·pandas·量化·quantdash
杉氧8 小时前
原生交互:如何在 Flutter 中嵌入 Android/iOS 原生组件并解决手势冲突
android·flutter·dart
Android打工仔8 小时前
Continuation 的链式关系 —— 一个 suspend 函数如何把结果交还给调用者?
android·kotlin