Agent 长期记忆:Store、用户画像与跨会话保存
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一小节,咱们解决的是长对话越来越大的问题。
不管是消息裁剪,还是自动摘要,处理的其实都是 当前 Thread(会话窗口) 中已经存在的历史消息。
但是,如果咱们要做一个真实的 Agent 系统,那么是绝对不能只支持一个Thread(会话窗口)的。
举个例子,假设用户在售后对话中明确说:
请记住我的沟通偏好:
以后使用中文回答,先给结论;
如果需要人工联系,请安排在工作日 19:00 以后。
几天以后,他新建了一个对话:
请按照我以前保存的偏好,告诉我订单超过退款阈值后应该怎样处理。
新对话使用的是一个全新的 thread_id。
按照上一节的处理方式,Checkpointer 只会恢复新 Thread 自己的 State,并不会跑到旧 Thread 里寻找用户偏好。
那怎么办?
总不能为了拿到三条偏好,把用户之前的完整聊天记录全部复制过来吧。
这就是这一小节要解决的问题:把值得长期使用的信息从某一次对话中拿出来,保存到独立于 Thread 的位置,让同一名用户的新会话也可以继续使用。
长期记忆到底是什么
LangChain 官方把能够跨会话、跨 Thread 使用的信息称为 Long-term memory,也就是 长期记忆。
同时,咱们需要注意。
无论是之前学的 “短期记忆” 还是现在看的 “长期记忆”,都和保存时间没任何关系。
真正决定它是不是长期记忆的,是它的 作用范围。
短期记忆属于某一个 Thread(会话窗口),长期记忆则独立于 Thread,可以被同一用户的多个 Thread 读取。
比如,订单号 A1024 当前正在申请退款,这可能只是某次售后会话中的临时状态,保存在当前 Thread 就够了。
而“用户希望使用中文回答”,后面的新会话仍然可能用到,更适合保存成长期记忆。
所以,长期记忆保存的应该是:经过选择以后,未来仍然值得使用的信息。
PS:
很多人会用 用户画像 这个词来描述长期记忆的保存形式,虽然不是特别的准确,但是因为说的人多,所以咱们后面也用这个词
大家还记不记得,咱们上一节使用过的 Checkpointer。
它会根据 thread_id 保存和恢复 Agent State。
现在咱们要保存的是用户画像,用户可以新建很多个 Thread,但是用户身份并没有发生变化。
所以,这份数据不能继续使用 thread_id 作为读取范围:
为了解决这个问题,LangGraph 提供了 S
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
