15天学会AI应用开发(十八)使用LangGraph实现精确记忆功能
对于AI应用的精确记忆需求,LangChain支持在调用create_agent时输入store参数,以指定数据存储方式,接下来介绍如何通过store参数存取用户的偏好信息。
一、创建智能体实例时的输入参数
上一篇文章调用create_agent时,仅用到了少数几个参数,为方便后续的函数引用,下面逐一说明create_agent的常见输入参数:
model:智能体推理所需的大模型实例。
tools:智能体可调用的工具集合,如计算器、搜索、数据库等。
system_prompt:智能体的提示词信息,可规定智能体的特定行为。
middleware:给智能体的执行链路挂载全局拦截处理器,在大模型调用、工具执行、消息流转的前后统一做切面处理,无需修改智能体的主要逻辑。可用于压缩历史记录、统一打印日志、过滤输入输出、限制请求流量、异常统一捕获等等。
context_schema:智能体会话的上下文信息,包括用户ID、租户信息、数据库连接、访问权限等等。
checkpointer:智能体的状态快照持久化管理器,可开启会话记忆、断点续跑、状态存档能力。不传该参数则智能体完全无状态,每轮调用后会清空所有历史对话与工具执行记录。
store:智能体的数据存储器,可长期记忆用户的业务数据。为InMemoryStore实例时,表示数据保存在内存中;为SqliteStore实例时,表示数据保存在Sqlite。
debug:是否打印调试日志。
二、存储工具Store的常见用法
不管InMemoryStore还是SqliteStore,都基于BaseStore,且拥有统一的存取方法,说明如下:
put:往指定键名存入对应的键值。
get:从指定键名获取对应的键值。
delete:删除指定键名及其对应的键值。
search:按照指定条件搜索对应的键名及其键值。
比如下面的代码就定义了存取用户偏好的两个工具方法:
三、使用InMemoryStore记住用户偏好
在命令行窗口执行下面命令,即可安装LangChain及其用到的Ollama插件,以及记忆功能需要的LangGraph:
由于之前使用的离线大模型Qwen2:1.5B不支持tool工具调用,因此得下载支持tool工具调用的离线大模型Qwen2.5:3B,也就是在命令行窗口执行下面命令,即可下载大模型qwen2.5:3b:
等待大模型下载完毕,在命令行窗口执行下面命令,即可启动Ollama并加载大模型:
在Python代码开头添加下面的导包语句,表示引入LangChain的智能体组件create_agent、人类消息组件HumanMessage、LangChain的大模型工具OllamaLLM,以及LangGraph的内存存储组件InMemoryStore:
在OllamaLLM的构造方法中填写model参数,指定当前引用的离线大模型名称,如下:
然后编写下面的LangChain调用代码,先调用create_agent创建支持内存存取的智能体实例,再通过智能体实例的invoke实例调用离线大模型,示例代码如下:
运行上面的Python代码,根据提示先后输入问题内容“我喜欢绿色”、“我喜欢什么颜色?”,输出日志结果如下:
由日志信息发现,AI应用在第一个问答中得知用户喜欢绿色,在第二个问答中正确回忆起用户的偏好颜色。可见通过LangGraph的内存存储组件InMemoryStore,初步实现了用户偏好的精确记忆功能。
本系列的AI应用开发文章目录为《
浙公网安备 33010602011771号