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])