长期记忆存储在数据库里

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)

相关推荐
HLC++12 小时前
Linux的进程间通信
android·linux·服务器
爱笑鱼16 小时前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
爱笑鱼16 小时前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
壮哥_icon17 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化
用户693717500138418 小时前
Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%
android·前端·后端
蝉蜕日记19 小时前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
吐了啊取名字太难19 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
阿pin20 小时前
Android随笔-Retrofit
android·retrofit
想取一个与众不同的名字好难20 小时前
安卓自定义颜色选择器
android
我命由我1234521 小时前
Android 开发问题:java.lang.NoSuchMethodError:No virtual method readAllBytes()
android·java·java-ee·kotlin·android studio·android-studio·android runtime