LangFriend:一款能记住你的日记应用
本文经翻译并二次整理自LangFriend: a Journal with Long-Term Memory一文。讲述了LangChain在模型记忆功能方面进行的一次深入的应用实战,并推出了具备记忆能力的日记应用-LangFriend。
- 立即体验日记应用https://journal.langchain.com/
- 申请开发者API访问https://forms.gle/j3Aaa2ibNpg5pC4q7
我们深信,记忆功能将是大型语言模型(LLM)系统中最具潜力的一部分。生成性AI的魅力在于它能即时创造独特的内容,这在个性化用户体验方面展现出巨大潜力。这种个性化可以通过利用已有的用户信息来实现,也可以通过记住用户之前的互动并从中学习来达成。
正是这种“记忆”功能,让我们充满探索的热情。我们相信,随着用户与LLM之间互动的增多,聊天机器人将成为LLM应用的主要形式。这意味着在这些对话中,将交换更多有价值的用户信息,比如个人的喜好、朋友关系和目标等。了解这些信息,并将它们融入到应用中,将极大地提升用户体验。
在探索记忆的过程中,我们认为通过一个具体的例子来激发我们的工作是非常有帮助的。我们选择了日记应用作为这个例子,并将其命名为“LangFriend”,今天正式向大家介绍。虽然它还只是一个初步的研究版本,但我们希望收集大家的反馈,找出优点和改进空间,最终将其开源。
在本文中,我们将讨论一些关于记忆的学术研究,以及其他公司在这方面的创新工作。我们还将详细介绍我们的日记应用及其功能。如果你对记忆技术感兴趣,欢迎联系我们。
学术研究
我们发现了两篇对我们的工作颇有启发的学术论文。
首先是MemGPT。这项由加州大学伯克利分校的研究者们完成的研究表明,通过赋予LLM一些特定的功能,比如记忆特定事实和回忆相关内容,可以增强其在长对话和文档分析等任务中的实用性。
大型语言模型(LLMs)已经彻底改变了 AI,但受到有限上下文窗口的限制,阻碍了它们在像扩展对话和文档分析这样的任务中的实用性。为了在有限的上下文窗口之外使用上下文,我们提出了虚拟上下文管理,一种从传统操作系统中的层次记忆系统获取灵感的技术,它通过在物理内存和磁盘之间分页提供扩展虚拟内存的幻觉。使用这种技术,我们引入了 MemGPT(MemoryGPT),一个系统,它智能地管理不同的存储层次,以有效地在 LLM 的有限上下文窗口内提供扩展上下文。
其次是Generative Agents。。斯坦福大学的研究者们通过反思经验来形成记忆,并将这些记忆存储起来,以便在需要时程序性地检索。
我们通过消融展示了我们代理架构的组成部分——观察、规划和反思——每一个都对代理行为的可信度做出了关键贡献。通过将大型语言模型与计算交互代理融合,这项工作引入了架构和交互模式,以实现人类行为的可信模拟。
这两篇论文展示了LLM在主动使用记忆和作为背景过程两种不同方式的应用。
业界动态
一些公司在记忆技术上取得了显著进展。
Plastic Labs 正在开发像 TutorGPT 这样的项目,这是一个动态的、以心智理论为基础的教学辅助工具。
Good AI 最近开源了一个带有长期记忆功能的聊天助手Charlie。这个助手不仅能够记住用户的交互,还能在必要时检索和整合这些记忆,以提供更加个性化的服务。
乍一看,Charlie 可能与现有的 LLM 代理如 ChatGPT、Claude 和 Gemini 类似。然而,其独特的特点是实现了 LTM,使其能够 从每次交互中学习。这包括 将用户消息、助手回应和环境反馈存储和整合到 LTM 中,以便在与手头任务相关时检索。
OpenAI 也在其 ChatGPT 中加入了记忆功能,进一步提升了用户体验。
这些公司的做法展示了记忆功能可以是LLM主动调用的一部分,也可以是自动运行的背景过程。
为何选择日记应用?
我们在寻找一个适合测试长期记忆用例时,立刻想到了日记应用。我们认为,与普通聊天应用相比,日记中的互动包含更多值得记忆的信息。
在普通聊天应用中,可能充斥着许多无关紧要的交流,比如“嘿!”、“嗨”、“怎么样?”等。而在日记的环境中,人们更快地分享真实而深刻的感受和见解。
尽管如此,我们还是为这个应用添加了聊天功能。这主要是为了展示我们的应用能够学习和记住用户的信息,并利用这些信息为用户提供个性化的回应。
在这里,你可以看到应用记住了我喜欢意大利菜,以及我在锻炼后感到精神焕发的信息。
应用界面截图
当你发表了第一篇日记并与我们的助手进行交流后,你会在导航栏中看到一个“记忆”按钮。点击它,你将看到我们从你的日记中提取的所有重要记忆。
记忆列表界面截图
你会注意到,这个列表并不长,只包含了最重要的事实。实际上,我们在后台从你的日记中提取了更多的信息,并且你可以搜索所有的记忆!
开始在“搜索记忆...”输入框中输入关键词,你将实时看到LangFriend为你保存的各种事实:
搜索记忆界面截图
个性化设置
我们希望LangFriend能够吸引各种用户。因此,我们允许用户自定义系统消息,这是与我们的助手进行所有聊天的前缀和基调。我们提供了一个默认设置,但如果你想要一些不同的东西,你可以根据自己的喜好进行调整。
找到系统提示,访问“日志”页面并点击“配置”按钮进行更改。这里会弹出一个对话框,你可以在这里编辑你的系统提示。
配置界面截图
所有更改都将在会话之间保留,并将成为你未来所有聊天对话的前缀。
总结
LangFriend是一个充满潜力的研究预览版,它展示了将长期记忆整合到LLM应用中的巨大潜力。通过专注于日记应用,我们旨在捕获用户的有意义信息,提供个性化的回应,从而增强用户体验。受到学术研究和业界创新的启发,LangFriend证明了记忆可以被积极地使用,也可以作为背景过程整合进来,创造出引人入胜、能够适应用户需求的交互体验。我们很兴奋地邀请社区来体验LangFriend,提供反馈,并与我们一起推动LLM应用中记忆技术的边界,释放生成性AI的全部潜力,为用户带来更强大、更个性化、更有意义的体验。