LangMem 发布:任何人都能轻松构建智能体记忆!

向量数据库大模型NoSQL数据库

本文经翻译并二次整理自 LangMem SDK for agent long-term memory 一文。讲述了LangChain最新发布的记忆管理SDK: LangMem本系列合集,点击链接查看

今天,我们正式发布了 LangMem SDK——一个帮助您的代理通过长期记忆不断学习和改进的工具库。

这个 SDK 提供了一些工具,能够从对话中提取信息、通过更新提示词优化代理行为,并保持关于行为、事实和事件的长期记忆。

您可以将 LangMem 的核心 API 与任何存储系统配合使用,也能在任何代理框架中集成。它还与 LangGraph 的长期记忆层原生兼容。我们还推出了一项托管服务,提供额外的长期记忆功能,并且免费提供——如果您希望在生产环境中使用,您可以通过 此链接 注册。

我们的目标是让 任何人 都能够更容易地构建那些随着时间推移,变得更加智能和个性化的 AI 体验。这项工作建立在我们之前推出的 LangMem alpha 服务 和 LangGraph 的持久化 长期记忆层 的基础上。

安装方法很简单,只需运行:


        
        
            

          pip install -U langmem
        
      

记忆与自适应代理

代理通过记忆来学习,但其记忆的形成、存储、更新和调用方式,会影响代理能够学到哪些知识,或者执行哪些任务。在 LangChain,我们发现,首先 识别 代理所需学习的能力,并将这些能力与特定的记忆类型或方法对应起来,之后再在代理中实现这些功能,是非常重要的。在添加记忆之前,您应该先考虑以下几个问题:

  • 哪些行为应该由用户反馈学习,哪些应该是预定义的?
  • 应该跟踪哪些类型的知识或事实?
  • 什么条件下记忆应该被调用?

尽管有一些重叠,每种记忆类型在构建自适应代理时都有其独特的功能:

| 记忆类型 | 目的 | 代理示例 | 人类示例 | 典型存储方式 | | --- | --- | --- | --- | --- | | 语义记忆 | 知识与事实 | 用户偏好、知识三元组 | 知道 Python 是一种编程语言 | 配置文件或集合 | | 事件记忆 | 过去的经验 | 少量示例、过去对话的总结 | 记得第一天上班的情景 | 集合 | | 程序记忆 | 系统行为 | 核心个性和响应模式 | 知道如何骑自行车 | 提示规则或集合 |

回到上面的问题:

  • 哪些行为应该被学习,哪些应该是固定的? 您的代理行为中的某些部分可能需要根据用户反馈和经验进行调整,而其他部分应该保持一致。这个问题将帮助您决定是否需要 程序记忆 来让行为模式不断进化,还是固定的提示规则就能满足需求。这类似于 OpenAI 模型规范中的“指挥链”概念,因为学习的行为是通过与用户的互动来塑造的。
  • 应该跟踪哪些类型的知识或事实? 不同的应用场景需要不同类型的记忆持久化。您可能需要 语义记忆 来存储有关用户或领域的事实, 事件记忆 来从成功的交互中学习,或者两者结合使用。
  • 什么条件下应该回忆起记忆? 有些记忆(如核心程序记忆)是 数据独立 的——它们始终存在于提示词中。其他记忆可能是 数据相关 的,根据语义相似度来调用。有些记忆则可能根据应用上下文、相似度、时间等因素来触发回忆。

另一个需要关注的问题是记忆的隐私性。在 LangMem 中,每条记忆都有一个 命名空间 。最常见的命名空间是使用 use\_id ,以避免不同用户之间的记忆交叉。一般来说,记忆可以限定在特定的应用路由、特定的用户,或者跨团队共享,代理也可以学习所有用户的核心行为模式。记忆的共享程度由隐私和性能需求决定。

这些记忆类型旨在处理 超越单一对话的记忆 。在 LangGraph 中,给定对话或线程内的记忆已经通过检查点功能得到了合理处理(只要它不超出模型的有效上下文窗口),这充当了代理的“短期”或“工作”记忆系统。

这与标准的 RAG 系统有所不同,具体体现在两个方面:首先是信息获取的方式:是通过交互,而不是通过离线数据摄取。其次是优先处理的信息类型。接下来,我们将详细介绍这些记忆类型。

语义记忆:事实

语义记忆 存储关键的事实和它们之间的关系,以及其他能为代理提供支持的信息。它让代理能够记住那些模型无法“预训练”的重要细节,而这些信息在网页搜索或通用检索器中是无法获取的。

picture.image

img


        
        
            

          memories = [
            

              ExtractedMemory(
            

                  id=
          
 "27e96a9d-8e53-4031-865e-5ec50c1f7ad5"
 
          ,
            

                  content=Memory(
            

                      content=
          
 "Alice 管理着 ML 团队,并且指导 Bob,Bob 也是团队成员。"
 
            

                  ),
            

              ),
            

              ExtractedMemory(
            

                  id=
          
 "e2f6b646-cdf1-4be1-bb40-0fd91d25d00f"
 
          ,
            

                  content=Memory(
            

                      content=
          
 "Bob 现在领导 ML 团队并负责 NLP 项目。"
 
            

                  ),
            

              ),
            

          ]
            

        
      

在我们经验中,语义记忆是工程师在首次寻求添加记忆层时最常想要的记忆类型(可能在短期“对话历史”记忆之后)。

它(可以说)与传统的 RAG 系统最为相似。如果某些知识可以从其他存储(如文档、代码库等)中获取,且该存储被认为是权威来源(而非交互本身),那么您的代理可以通过直接检索该知识库中的信息来正常工作。或者,您也可以定期将这些知识引入语义记忆系统。如果这些知识涉及个性化(关于用户的)或者是原材料中找不到的概念关系,那么语义记忆将非常适合您的需求。

程序记忆:行为的演变

程序记忆代表了内化的 如何做 的知识。它与事件记忆的不同之处在于,它专注于一般化的技能、规则和行为。对于 AI 代理,程序记忆是保存在模型权重、代理代码和代理提示中的,决定了代理的功能。在 LangMem 中,我们将程序记忆视为通过更新代理提示来保存的学习到的指令。

picture.image

img


        
        
            

          
 """
   

 你是一个乐于助人的助手..
   

     如果用户询问天文学问题,使用真实世界的例子和当前的科学数据清晰地解释相关话题。
   

     在有帮助时使用视觉参考,并根据用户的知识水平做出调整。
   

     平衡实际的天文观察和理论概念,基于用户需求提供观测建议或技术解释。
   

 """
 
            

        
      

优化器会根据成功与不成功的交互,识别出有效的行为模式,并更新系统提示来强化这些行为。这形成了一个反馈回路,使代理的核心指令根据观察到的表现不断演变。

事件记忆:经历与事件

事件记忆存储的是过去交互的记忆。它与程序记忆的不同之处在于,它专注于回忆 具体的 经历,而不是一般化的知识。它也与语义记忆不同,因为它关注的是过去的事件,而不是普遍的事实,它回答的是“代理如何解决了一个特定的问题”,而不仅仅是“答案是什么”。事件记忆通常以少量示例的形式存在,每个示例都提炼自较长的原始交互。目前,LangMem 还不支持专门为事件记忆设计的实用工具。

立即体验

您可以通过查看 文档 ,了解更多关于如何使用 LangMem 实现自定义记忆系统的示例,包括以下内容:

  • 创建一个能够主动管理自己记忆的代理
  • 在代理之间共享记忆
  • 为记忆命名空间,以便按用户或团队组织信息
  • 将 LangMem 集成到您自定义的框架中

通过这种方式,LangMem SDK 为代理提供了一个全新的长期记忆管理系统,使得 AI 代理能够在长期互动中不断进化,变得更加智能与个性化。每种记忆类型的设计都紧密围绕着代理行为的提升与优化,您可以根据具体的应用场景来选择合适的记忆方式,提升您的代理能力。

今天的内容就到这里,如果老铁觉得还行,可以来一波三连,感谢!

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论