微信扫码
和创始人交个朋友
我要投稿
LangMem SDK——让AI代理拥有长期记忆,不断学习和进化! 核心内容: 1. LangMem SDK功能介绍:从对话中提取信息,保持长期记忆 2. 集成与兼容性:与任何存储系统和代理框架配合使用 3. 记忆类型与代理学习:语义记忆等记忆类型在自适应代理中的作用
❝本文经翻译并二次整理自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,我们发现,首先识别代理所需学习的能力,并将这些能力与特定的记忆类型或方法对应起来,之后再在代理中实现这些功能,是非常重要的。在添加记忆之前,您应该先考虑以下几个问题:
尽管有一些重叠,每种记忆类型在构建自适应代理时都有其独特的功能:
回到上面的问题:
哪些行为应该被学习,哪些应该是固定的? 您的代理行为中的某些部分可能需要根据用户反馈和经验进行调整,而其他部分应该保持一致。这个问题将帮助您决定是否需要程序记忆来让行为模式不断进化,还是固定的提示规则就能满足需求。这类似于 OpenAI 模型规范中的“指挥链”概念,因为学习的行为是通过与用户的互动来塑造的。
应该跟踪哪些类型的知识或事实? 不同的应用场景需要不同类型的记忆持久化。您可能需要语义记忆来存储有关用户或领域的事实,事件记忆来从成功的交互中学习,或者两者结合使用。
什么条件下应该回忆起记忆? 有些记忆(如核心程序记忆)是数据独立的——它们始终存在于提示词中。其他记忆可能是数据相关的,根据语义相似度来调用。有些记忆则可能根据应用上下文、相似度、时间等因素来触发回忆。
另一个需要关注的问题是记忆的隐私性。在 LangMem 中,每条记忆都有一个命名空间。最常见的命名空间是使用 use_id
,以避免不同用户之间的记忆交叉。一般来说,记忆可以限定在特定的应用路由、特定的用户,或者跨团队共享,代理也可以学习所有用户的核心行为模式。记忆的共享程度由隐私和性能需求决定。
这些记忆类型旨在处理超越单一对话的记忆。在 LangGraph 中,给定对话或线程内的记忆已经通过检查点功能得到了合理处理(只要它不超出模型的有效上下文窗口),这充当了代理的“短期”或“工作”记忆系统。
这与标准的 RAG 系统有所不同,具体体现在两个方面:首先是信息获取的方式:是通过交互,而不是通过离线数据摄取。其次是优先处理的信息类型。接下来,我们将详细介绍这些记忆类型。
语义记忆存储关键的事实和它们之间的关系,以及其他能为代理提供支持的信息。它让代理能够记住那些模型无法“预训练”的重要细节,而这些信息在网页搜索或通用检索器中是无法获取的。
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 中,我们将程序记忆视为通过更新代理提示来保存的学习到的指令。
"""
你是一个乐于助人的助手..
如果用户询问天文学问题,使用真实世界的例子和当前的科学数据清晰地解释相关话题。
在有帮助时使用视觉参考,并根据用户的知识水平做出调整。
平衡实际的天文观察和理论概念,基于用户需求提供观测建议或技术解释。
"""
优化器会根据成功与不成功的交互,识别出有效的行为模式,并更新系统提示来强化这些行为。这形成了一个反馈回路,使代理的核心指令根据观察到的表现不断演变。
事件记忆存储的是过去交互的记忆。它与程序记忆的不同之处在于,它专注于回忆具体的经历,而不是一般化的知识。它也与语义记忆不同,因为它关注的是过去的事件,而不是普遍的事实,它回答的是“代理如何解决了一个特定的问题”,而不仅仅是“答案是什么”。事件记忆通常以少量示例的形式存在,每个示例都提炼自较长的原始交互。目前,LangMem 还不支持专门为事件记忆设计的实用工具。
您可以通过查看 文档,了解更多关于如何使用 LangMem 实现自定义记忆系统的示例,包括以下内容:
通过这种方式,LangMem SDK 为代理提供了一个全新的长期记忆管理系统,使得 AI 代理能够在长期互动中不断进化,变得更加智能与个性化。每种记忆类型的设计都紧密围绕着代理行为的提升与优化,您可以根据具体的应用场景来选择合适的记忆方式,提升您的代理能力。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-21
deepseekers 第一个全面拥抱 deepseek 的国产 AI Agent 框架
2025-02-19
深入探究Langchain v0.3:全面解读
2025-02-18
走进Langchain:全面解析
2025-02-17
基于LangChain爬虫增强RAG应用
2025-02-13
LangChat实战DeepSeek-R1模型
2025-02-05
揭秘LangGraph!如何一步一步构建动态订单管理系统?
2025-01-22
LangChain实战 | OutputParser:让大模型输出从 “鸡肋” 变 “瑰宝” 的关键!
2025-01-21
Ambient Agent: 让 AI 主动工作的新范式
2024-10-10
2024-04-08
2024-06-03
2024-08-18
2024-09-04
2024-07-13
2024-04-08
2024-06-24
2024-07-10
2024-04-17
2025-02-05
2024-12-02
2024-11-25
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04