尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

langgraph中的短时记忆实现

langgraph中的短时记忆实现 1. checkpointer编译时指定checkpointer参数 可以实现储存在内存中的短记忆2. memorysaver指定checkpointermemorysaver()可以实现一般的记忆 适合本地调试使用 功能较差 原理是把对话内容记住 invoke时并入stateps图输入时需要指定线程id 分id实现记忆config {configurable: {thread_id: 2}} for chunk in graph_with_memory.stream({messages: [请问我叫什么]}, config, stream_modedebug): if chunk[type] checkpoint: # print(chunk) print(fThread id:{chunk[payload][config][configurable][thread_id]}) print(fCheckPoint id :{chunk[payload][config][configurable][checkpoint_id]}) for message in chunk[payload][values][messages]: print(fMessage id:{message.id}Message content:{message.content})3. sqlitesaverSqliteSaver.from_conn_string(:memory:) 这个意思是创建一个上下文管理器 会自动把记忆写入数据库 位置是memory即内存 是用string传入的这个东西需要一个关闭操作实践上会用两种方式自动关闭 完成善后工作with语句和exitstack3.1. 用with的sqlitesaverfrom langgraph.checkpoint.sqlite import SqliteSaver from langgraph.prebuilt import create_react_agent with SqliteSaver.from_conn_string(:memory:) as checkpointer: graph create_react_agent(llm, toolstools, checkpointercheckpointer) display(Image(graph.get_graph().draw_mermaid_png())) config {configurable: {thread_id: 11}} for chunk in graph.stream({messages: [你好我叫西瓜老师]}, config, stream_modevalues): chunk[messages][-1].pretty_print() for chunk in graph.stream({messages: [请问我叫什么]}, config, stream_modevalues): chunk[messages][-1].pretty_print()使用with完成自动开启和关闭数据库这样的缺点在于只在一个缩进块保持记忆 后续就自动关闭了3.2. 用exitstack创建一个exitstackSqliteSaver.from_conn_string(:memory:) 相当于压栈了exit操作当所有事情完成 完成exitstack.close() 就会执行exit操作此时不需要局限在同个缩进块了stack ExitStack() checkpointer stack.enter_context(SqliteSaver.from_conn_string(:memory:)) graph create_agent(llm, toolstools, checkpointercheckpointer) config {configurable: {thread_id: 11}} for chunk in graph.stream({messages: [我叫1]}, config, stream_modevalues): chunk[messages][-1].pretty_print() for chunk in graph.stream({messages: [请问我叫什么]}, config, stream_modevalues): chunk[messages][-1].pretty_print() stack.close()
返回列表