换一段对话还能记住偏好,Agno 用 user_id 串起个人记忆

开源项目猫目发布于 来源:Agno 官方资料
官方 Sarah 样例把邮件通知与早会偏好带到另一会话;记忆、聊天记录和业务状态各有存放范围。
换一段对话还能记住偏好,Agno 用 user_id 串起个人记忆

为什么值得关注

将跨会话仍有用的用户偏好保存为可读取记录,帮助个人助手接续服务,同时避免把所有历史原样重放。

适合谁:开发个人助手或长期客户服务、需要跨会话偏好记忆的开发者

这次有哪些亮点

  • 同一user_id跨不同session_id加载记忆
  • 自动提取与由模型调用工具更新是两种明确模式

使用前需要知道

记忆可能提取错误或过时,需要查看、修订与删除路径;user_id必须由应用稳定绑定,保存位置和模型请求数据流需按实际配置判断。

用户已经说过“项目更新用邮件,会议尽量放上午”,换一段对话又得重复一遍,个人助手就很难形成连续体验。Agno 的 memory 功能,用一个很短的官方样例说明了怎样把这种偏好留到下一次会话。

这里保存的不是整段聊天,而是从中提取、以后仍可能有用的用户事实。对正在开发客户助手或个人助理的人,关键问题也从“模型记不记得”变成“记忆属于谁,保存在什么地方,何时更新”。

同一个用户,不同的会话

官方示例让 Sarah 在 onboarding 会话中说出邮件通知与上午开会的偏好;随后进入 project-planning,询问应该怎样安排和发送项目更新。两次使用不同 session_id,但保持 user_id='sarah'。

示例使用数据库保存记忆,并开启 update_memory_on_run=True。第一次运行提取有用事实,第二次按相同 user_id 加载到模型上下文。这个身份连接才是跨会话接续的基础,不是两个聊天窗口碰巧使用同一个模型。

实际应用应由已登录的用户身份生成稳定 user_id,而不是把名字直接当成可靠账户标识。不同用户的记录能否隔开,首先取决于应用怎样传入与检查这个身份。

三类“记住”,不要放到一个抽屉

文档将 memory、chat history 与 session state 分开。memory 是跨会话的用户偏好和长期目标;history 是某个会话里发生过的消息与工具调用;state 则是代码管理的购物车、工单状态或任务进度。

这份区分很实用:一个客服助手可以用 memory 记沟通偏好,用 history 理解当前工单,用 state 保存处理到哪一步。不能因为用户说过“退货吧”,就在个人记忆里写下“退款已完成”,然后让后续会话把它当成业务事实。

自动提取,还是让代理决定更新

Agno 提供两种模式。自动模式在运行时做一致的记忆提取;agentic 模式则给模型更新记忆的工具,由它决定何时调用。两者同时开启时,文档说明以 agentic 模式为先,不再执行自动提取步骤。

选择哪一种,影响的是记忆怎样形成。每次输入都适合提取偏好的助手,可以用自动路径;需要模型结合任务判断的应用,则要看工具驱动的更新过程。两种都需要考虑用户纠正旧信息时怎样更新,而不是只不断追加。

开发者还可以调用 get_user_memories 读回记录,查看记忆 ID 与文本。默认表名为 agno_memories,具体存储随数据库配置变化。这给用户资料页、调试和删除流程提供了可以操作的材料。

Agno README把 SDK、AgentOS 运行时和界面分开,代码采用 Apache-2.0。数据库与模型提供方仍需配置,本地保存并不代表模型请求一定离线。真正值得建立的是一套能回看和修订的偏好记录,让下一次服务接得上,也让错误记忆有地方改。

原始资料:Agno 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享