你是否想过,Agent 拥有永久记忆能力,即便用户退出后重新发起对话,它也能完整记住所有对话历史,始终与用户保持同频,提供如此贴心周到的服务,用户怎能不满意呢?
而实现这一强大功能并不复杂。下面,我们基于 A Langgraph 创建一个具备永久记忆的 Agent。
一、环境搭建
首先,我们要搭建运行环境,这里使用 jupyter 环境,若尚未搭建本地环境,请先完成搭建。
除环境外,还需两个重要的 api:
OpenAI 的 api,可在某宝搜索获取。
Tavily 的 api,在指定页面登录即可免费获取。使用 Tavily 的联网功能,是因为有伙伴询问如何让 RAG 联网,在此进行示例。
接着,创建名为 “yiyiai”、Python 版本为 “3.10” 的 conda 环境:
激活环境:
安装依赖包,使用 jupyter 实操,通过 langgraph 创建 Agent,tavily 提供 - tools 联网查询功能,OpenAI 作为后端大模型:
创建.env 文件,存入获取的 key 以便调用:
二、让 Agent 运行并实现记忆功能
代码已上传至会员盘,打开 jupyter 或使用顺手工具操作。进入操作环境后,在 conda 命令行窗口输入指令,自动跳转浏览器打开 jupyter-notebook,双击代码逐步操作。
以下是实现 Agent 持续记忆的关键代码及步骤:
三、记录存储
将记录存储到临时内存 memory 中,使用 SqliteSaver 实现:
给记录添加 ID(“thread_id: test_thread”):
agent_executor 是反应式代理执行器,使用 model 和一组 tools。checkpointer 参数 memory 为代理提供记忆存储机制,config 字典为代理执行器提供配置信息,“thread_id” 区分不同线程和会话。
不过,这种方式虽能让 Agent 记住用户信息,但数据量增大时,数据库会变大,大模型上下文窗口会限制性能。后续会针对此问题提供解决思路与实操方法。
我们通过 3 个实例进一步了解 Agent 记忆功能,这里仅演示示例 3:
查看工作目录,数据库就位,记录皆在其中。
此外,后续还会有系列 Agent 相关内容分享:
番外 1
Agent 拥有记忆!1 个用户 = 1 个数据库,与用户同频!(即本篇内容)
番外 2
优化持续记忆,绕过上下文限制,只记该记的!实时摘要!
番外 3
Agent 自我反思 + 评判 + 优化的实践!提供最优方案。
番外 4
用知识图谱提升 RAG - 星图提升系统性能!
所有内容,除图文介绍外,还有代码实操,并组织腾讯会议带大家动手操作。这个暑期,会梳理完整的 Agent 0-1 学习地图,助大家快速入门。
别再犹豫,动手才出真章,赶紧行动起来!