AI智能体的记忆

对智能体来说,记忆不仅仅是一个存储问题,它是一个用户体验问题。通过模拟人类记忆的方式,使用短期上下文和长期知识,智能体变得更高效、可靠和有吸引力。

AI智能体的记忆
AI编程/Vibe Coding 遇到问题需要帮助的,联系微信 ezpoda,免费咨询。

大多数智能体的记忆问题不如策略问题严重。它们要么在回合之间什么都不记住,要么试图记住所有内容,然后把所有内容都塞回提示中,希望模型能够理清头绪。这导致交互感觉通用,从嘈杂的上下文中产生幻觉,并增加延迟和成本。

人类的工作方式明显不同。在当下,我们携带丰富的上下文,比如谁说了什么,房间里的气氛,以及我们的感受。随着时间的推移,这些细节会消失,剩下的是对发生了什么、对方喜欢或不喜欢什么的粗略总结,以及下次见面时重要的几个事实。

这个故事是为构建LLM驱动智能体的开发者和从业者编写的,他们希望自己的系统感觉更像真正的伴侣,而不是无状态的聊天机器人。您将通过一个具体的真实世界交互,将其转换为智能体的短期和长期记忆心理模型,然后使用AWS Strands和真实代码实现三个MVP,从无记忆到类人记忆。最后,您将知道如何设计和发布一个伴侣智能体,记住用户是谁,他们关心什么,以及您在会话中讨论的内容。

1、真实世界场景

想象您正在从SFO飞往NYC的航班上。到达座位后,您注意到别人坐在那里。您请他们移动到指定的座位,他们同意了。这个小对话成为破冰器,您开始了对话。

您了解到这个人来自NYC,在SFO访问了一周。您问他们喜欢这个城市吗,他们分享了他们的经验。下面是对话的片段:

如您所见,对话相当简单直接。如果有人在几小时后问您谈论了什么,您几乎能够回忆起每一个细节,包括对话的流程、上下文,甚至感觉。

但几天后,大部分细节会消失。您仍然记得的是重要的亮点:James对SFO的喜爱,他的贝类过敏,以及他在NYC的披萨推荐。

我们可以使用这个例子来分解单个交互如何自然映射到智能体的不同记忆类型。

2、记忆类型

您可以在智能体中实现两种主要类型的记忆

2.1 短期记忆

这个记忆与当前对话或任务相关。它捕获智能体现在需要保持专注和响应的所有内容。在我们的真实世界例子中,这对应于您在航班上与James交谈时的记忆。

2.2 长期记忆

这个记忆代表被分解为关键细节、高价值信息的过去体验。由于人类和智能体都无法永远保留每个细节,长期记忆只存储最重要的内容。在我们的例子中,这将包括:

  • 对话摘要: 对话是关于什么的,持续了多长时间,以及讨论的最重要点。
  • 偏好: James对SFO的喜爱,他对贝类的过敏,以及他给您的建议。
  • 语义记忆: 对话中提到的概念的一般知识和含义,如披萨、墨西哥卷饼或蛤蜊浓汤。

3、伴侣智能体

既然我们有了用例和不同记忆类型的心智模型,让我们通过构建伴侣智能体来测试它。为了简单起见,我们将用James替换为一个可以积极参与对话并记住分享细节的智能体。我们将使用AWS Strands构建这个伴侣智能体。

注意:本博客中使用的所有代码示例都在这里可用

3.1 [MVP-1]:无记忆

在这个MVP中,我们将构建一个可以帮助您进行对话的伴侣智能体。我们故意不存储或使用历史对话来构建这个智能体,代码如下所示:

如您所见,即使我介绍自己是Hari,智能体也无法记住。当我问智能体我是谁时,它回答不确定。与人类交互相比,这就像遇到一个介绍自己的人,然后在下次见面时立即忘记他们的名字。这很尴尬、令人沮丧,并打破了对话的流程。这正是完全没有记忆时的智能体体验。

3.2 [MVP-2]:短期记忆

既然我们有一个无记忆运行的MVP智能体,让我们通过添加短期记忆来改进它。为了简单起见,我们将所有用户和智能体消息存储在列表中,并将它们作为系统提示的一部分传递给智能体。这允许智能体引用到目前为止的对话并回忆当前会话中讨论的关键细节。

如您所见,智能体现在可以记住我的名字和对话细节。当我问智能体我是谁时,它正确地回答我是Hari。这很好,但我们还没有完全达到目标。现在想象几天后再次遇到同一个人,却发现他们对您之前的对话没有记忆,您必须从头开始,这将非常令人失望。这正是当您必须在多个会话中重复相同信息时的智能体体验。

3.3 [MVP-3]:长期记忆

既然我们有了一个具有短期记忆的MVP智能体,让我们通过添加长期记忆来采取下一步。在每个对话结束时,我们将处理来自该会话的完整对话历史并生成一组长期记忆工件:

  • 对话摘要: 对话是关于什么的概览,包括关键细节和重要时刻。
  • 偏好: 用户在对话中显露的喜好、厌恶和其他个人偏好。
  • 语义记忆: 对话中提到的重要术语、概念或实体,以及它们的含义和上下文。

这些工件使用LLM生成,可以存储在文件系统或向量存储中以实现高效检索。如果给定用户的工件已经存在,我们通过将现有记忆与新对话历史合并来重新生成它们,确保记忆保持最新。在我们的例子中,每当用户在伴侣智能体中输入"generate"命令时,我们生成这些长期记忆工件并在未来的对话中使用它。

如您所见,当用户输入"generate"命令时,智能体生成长期记忆工件并在未来的对话中使用它。这是一个更人性化、更有吸引力的体验。

4、结束语

对智能体来说,记忆不仅仅是一个存储问题,它是一个用户体验问题。通过模拟人类记忆的方式,使用短期上下文和长期知识,智能体变得更高效、可靠和有吸引力。

一个实用的路径很直接:从无记忆开始了解基线,添加短期记忆修复会话内的"金鱼"行为,然后引入捕获跨会话摘要、偏好和语义知识的长期记忆工件。从那里,您可以迭代:定义明确保存规则,积极修剪以避免提示膨胀,并继续用真实对话测试,就像激发这个伴侣智能体的SFO-NYC航班一样。

如果您今天正在构建自己的智能体,请考虑这些下一步:

  • 决定什么绝对需要在会话之间记住(身份、偏好、重复任务)。
  • 实现一个简单的工件生成器,将原始记录转换为存储在数据库或向量存储中的摘要、偏好和语义记忆。
  • 添加轻量级评估,这样您可以定期检查智能体记住的内容,优化提取提示,并删除低价值记忆。

做得好的结果是一个感觉不像无状态界面,而更像每次谈话时都更了解您一点的人。


原文链接:Building Human-Like Agents with Right Memory

汇智网翻译整理,转载请标明出处