LangFriend: a Journal with Long-Term Memory

LangFriend:具有长期记忆的期刊

6 分钟阅读

在 LangChain,我们最感兴趣的概念之一就是记忆。每当我们对某个概念感兴趣时,我们都喜欢构建一个示例应用程序来展示该概念。对于记忆,我们决定构建一个日记应用程序!我们托管了一个任何人都可以试用的版本。我们也开始与一些 alpha 用户合作开发面向开发者的 API。如果您对此感兴趣,请在下方注册。

重要链接

💡
我们还将于 2024 年 4 月 6 日与 New Computer、MongoDB 和 Anthropic 合作举办一场与记忆相关的黑客马拉松。在此注册

我们最看好的 LLM 系统组件之一是记忆。生成式 AI 的许多强大之处在于其能够动态生成独特内容的能力。这对于定制用户体验来说非常强大。这可以通过利用有关用户的现有信息来完成,也可以通过记住之前的用户互动并从中学习来完成。

我们对探索这种类型的“记忆”感到兴奋。我们认为,用户和 LLM 之间将发生越来越多的互动 - 聊天机器人是 LLM 应用程序的主要形式。这意味着在这些对话中将交换越来越多有价值的用户信息 - 一个人的喜好或厌恶,他们的朋友是谁,他们的目标是什么。学习这些属性 - 然后将它们融入回应用程序中可以大大改善用户体验。

在探索记忆时,我们认为创建一个用例示例来激发和奠定我们大部分工作的基础将很有帮助。我们选择了一个日记应用程序作为这个用例。我们将这个日记应用程序命名为“LangFriend”,并于今天向公众开放。虽然这仍然只是一个初步的研究预览版,但我们希望收集社区对哪些方面运行良好以及如何改进的反馈,然后再开源。

在这篇文章中,我们将简要讨论之前在记忆方面的学术工作、其他公司正在做的有趣的事情,以及我们为什么选择日记应用程序作为重点。然后,我们将深入探讨日记应用程序,详细介绍其功能。如果您有兴趣与我们一起探索记忆,请在此处联系我们。

学术工作

我们发现有两篇主要的学术论文对我们关于记忆的工作具有启发意义。

第一篇:MemGPT。来自加州大学伯克利分校的研究人员,这篇论文的 TLDR(Too Long; Didn't Read,太长没看) 总结是,他们赋予 LLM 调用几个函数的能力。这些函数可以执行诸如记住特定事实、回忆相关事物等操作。

大型语言模型 (LLM) 彻底改变了 AI,但受到有限上下文窗口的限制,阻碍了它们在扩展对话和文档分析等任务中的实用性。为了能够使用超出有限上下文窗口的上下文,我们提出了一种虚拟上下文管理技术,该技术借鉴了传统操作系统中分层内存系统的灵感,这些系统通过物理内存和磁盘之间的分页提供了扩展虚拟内存的错觉。使用这项技术,我们推出了 MemGPT(MemoryGPT),一个智能管理不同存储层以在 LLM 有限的上下文窗口内有效提供扩展上下文的系统

第二篇:生成式智能体。来自斯坦福大学的研究人员,这篇论文的 TLDR 总结是,他们使用对经验的反思来形成记忆,然后以编程方式存储和检索这些记忆。

我们通过消融实验证明,我们的智能体架构的组成部分——观察、计划和反思——都对智能体行为的可信度做出了关键贡献。通过将大型语言模型与计算交互式智能体融合,这项工作引入了架构和交互模式,以实现对人类行为的可信模拟。

这两篇论文之间一个有趣的差异是 LLM 主动决定使用记忆的程度,以及它是更像后台进程的程度。MemGPT 强制 LLM 使用记忆功能,而生成式智能体更像是一个后台进程。

公司

有一些公司在记忆方面做了很棒的事情。

Plastic Labs 是一家初创公司,正在构建像 TutorGPT 这样的项目。

LangChain LLM 应用程序。用于心智理论驱动的辅导的动态元提示。

Good AI 是一家初创公司,刚刚开源了一个具有长期记忆的聊天助手。

乍一看,Charlie 可能类似于现有的 LLM 智能体,如 ChatGPT、Claude 和 Gemini。然而,其独特的特点是 LTM 的实现,使其能够从每次互动中学习。这包括将用户消息、助手回复和环境反馈存储并整合到 LTM 中,以便在未来与手头任务相关时检索。

OpenAI 最近将记忆功能整合到 ChatGPT 中。

看看这些公司也显示了将记忆实现为 LLM 需要有意识地调用的主动行为 (ChatGPT) 与自动整合的后台进程 (TutorGPT) 之间的区别。

为什么选择日记应用程序?

在思考实现哪个好的用例来测试长期记忆时,日记应用程序跃入脑海。主要原因是我们相信这个应用程序中的互动将包含比标准聊天应用程序更相关的记忆信息。

对于标准聊天应用程序,可能会有很多多余的交流 - “嘿!”,“嗨”,“干什么呢”等等。在日记设置中,您可以更快地进入分享真实、有趣的情感和见解的阶段。

尽管如此 - 我们仍然想在这个应用程序中添加一个聊天组件。主要原因是表明我们的应用程序正在学习和记住有关用户的信息。它将能够使用此信息来制作个性化的用户回复。

在这里你可以看到它记得我是意大利美食的爱好者,以及我在锻炼后感觉神清气爽。

添加您的第一篇日记并与我们的伙伴聊天后,您将在导航栏中看到一个“记忆”按钮出现。点击此按钮将显示我们能够从您的日记中提取的所有主要记忆。

您会注意到列表很精简,并且不包含太多信息。这些只是我们提取的最重要、最高级别的事实。在幕后,我们从您的条目中提取的事实比这多得多,您可以搜索所有这些事实!

开始在“搜索记忆...”输入框中键入内容,您将实时看到 LangFriend 正在存储的关于您的各种事实

自定义

我们希望使 LangFriend 对所有用户都尽可能具有吸引力。因此,我们允许任何人更新系统消息,该消息前置并设定与我们的伙伴所有聊天的基调。默认消息已包含在内,我们精心制作了该消息以适应许多用户的需求。但是,如果您正在寻找稍微或完全不同的东西,您可以根据需要更改尽可能少或尽可能多的内容。

找到系统提示,并通过访问“日志”页面并单击“配置”按钮来更新它。从这里,将弹出一个对话框,其中包含您的系统提示。

所做的任何更改都将在会话之间持续存在,并将前置您未来的所有聊天对话!

结论

LangFriend 是一个令人兴奋的研究预览版,展示了将长期记忆融入 LLM 应用程序的潜力。通过专注于日记应用程序,我们旨在捕获有意义的用户信息,以提供个性化的响应并增强用户体验。LangFriend 受到该领域学术工作和创新公司的启发,展示了如何主动利用记忆或将其作为后台进程整合,以创建引人入胜且适应性强的互动。我们很高兴邀请社区探索 LangFriend,提供反馈,并与我们一起推动 LLM 应用程序中记忆的可能性边界,从而释放生成式 AI 的全部潜力,以获得更强大、个性化和有意义的用户体验。