第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

LangMem:AI代理的長效記憶系統(tǒng)

什么是LangMem?

LangMem 是 LangChain 设计的一款 SDK,旨在为 AI 代理提供长期记忆。它使代理能够随着时间从其交互中学习和适应,存储对话中的重要信息,优化其提示和行为,并跨会话保持知识。总之,LangMem 帮助 AI 代理记住用户的偏好、事实和过去事件,从而在多次交互后也能提供更连贯、个性化的响应,并具有情境感知。

LangMem的主要特点包括

  • 与任何存储系统兼容的核心内存API: 一个核心内存API,可以与任何存储系统一起工作,允许你连接不同的后端(如内存或数据库)。
  • 内置的“热路径”内存工具: 内置工具,让代理在实时会话中即时保存并检索相关信息(“热路径”)。这意味着代理可以在对话进展时保存相关信息并随时检索它们。
  • 后台内存管理器: 一个后台进程,可以自动提取、汇总并更新代理的知识,不受当前对话流程的约束。这有助于代理持续改进,通过从对话中学习,即使在不同会话之间也能做到。
  • LangGraph集成: 与LangGraph的长期内存存储(LangChain的持久存储层)的原生集成。如果你使用LangChain的LangGraph平台,长期记忆默认启用,这使得记忆可以在会话之间持久保存并共享。

LangMem的目的是使AI代理更健壮,减少它们的“健忘症”。传统的LLM代理是无状态的,在会话结束或上下文窗口被超出时会丢失上下文。LangMem通过给代理提供一种记忆来解决这一问题——使它们能够回忆过去的互动,记住用户的指令/偏好,并根据经验调整其行为。这将代理从简单的反应系统转变为动态且适应性强的助手,能够随着时间的推移保持上下文的连贯性并变得更聪明且实用。

安装LangMem软件并创建一个AI助手

设置 LangMem 需要您先安装 SDK 并将其集成到您的代理中。以下是安装 LangMem 并创建一个带有长期记忆功能的 AI 代理的一步一步指南:

1. 安装 LangMem 软件开发工具包

使用pip在您的环境里安装LangMem这个语言处理工具。

运行以下命令来更新langmem包:

pip install -U langmem

确保你为所选的语言模型提供商(例如 OpenAI 或 Anthropic)设置了一个 API 密钥,并将其设置为环境变量(例如 export OPENAI_API_KEY="sk-..."export ANTHROPIC_API_KEY="sk-..."),这样代理就可以访问 LLM 了。

2. 导入所需的组件

在你的 Python 代码中,从 LangChain 的 LangGraph 库导入创建代理的函数和内存存储,同时导入 LangMem 的内存工具。

    从langgraph.prebuilt导入create_react_agent   # 代理框架模块  
    从langgraph.store.memory导入InMemoryStore    # 内存存储后端模块  
    从langmem导入create_manage_memory_tool, create_search_memory_tool  # LangMem 工具

这些是构建模块:create_react_agent 是一个用来创建具备工具支持的代理的工具,InMemoryStore 是一个简单的内存存储器,而 LangMem 的 create_manage_memory_toolcreate_search_memory_tool 则可以让代理保存和检索记忆。

3. 初始化内存

你可以为代理设置一个内存存储后端。内存存储后端指的是数据存储在内存中,而非持久化存储设备上。在最简单的情况下,你可以使用纯内存存储。

    store = 内存存储(
        index={
            "dims": 1536,  # 维度数
            "embed": "openai:text-embedding-3-small",  # 嵌入模型
        }
    )

这创建了一个内存中的向量索引(例如,这里是1536维的),用于存储记忆的嵌入。embed 参数指定了嵌入函数或模型(这里使用的是 OpenAI 提供的文本嵌入)。使用 InMemoryStore 表示代理的记忆存储在 RAM 中——这在测试时没问题,但请注意,如果程序重启,这些记忆将会丢失(稍后再详细讨论持久化)。

4. 创建一个有记忆功能的AI代理

我们现在启动代理并包含LangMem的记忆管理功能。

    agent = create_react_agent(  
        "anthropic:claude-3-5-sonnet-latest",   # 要使用的LLM模型,  
        tools=[  
            create_manage_memory_tool(namespace=('memories',)),  # 命名空间为('memories',)
            create_search_memory_tool(namespace=('memories',)),  # 命名空间为('memories',)
        ],  
        store=store,  
    ).

在这个代码中,我们创建了一个使用Anthropic Claude模型(你可以使用任何支持的LLM)的React风格的代理。我们传入一个工具列表:create_manage_memory_tool(允许代理在对话过程中保存新信息)和create_search_memory_tool(使其能够通过语义搜索查找旧信息)。这两个工具都使用了一个命名空间(这里为 "memories")来标记记忆记录。我们还提供了初始化的store,这样代理就知道在哪里保存/检索其长期记忆。经过这一步后,代理已经准备就绪,具备了长期记忆功能。

5. 与代理互动并检查内存使用情况

像平时一样和这个代理对话。LangMem工具会在后台运行,代理会自行决定何时存储或检索,你无需使用特殊命令,只需正常对话即可。

例如,你可以指示代理:“记得我喜欢暗模式。” 这个用户消息会触发代理的记忆管理工具来存储这一偏好。稍后,如果你问 “我的照明偏好是什么?” ,代理可以使用搜索记忆工具找到存储的事实并相应地回答。在这种情况下,代理会回答类似: “你之前说过你喜欢暗模式。” 这表明代理记住了我们之前的对话内容。

幕后,LangMem的内存管理工具提取了关键信息(用户偏好暗模式)并将其保存到内存存储里。当有人问起“照明偏好”时,搜索内存工具进行了相似性查找。所有这些都在代理内部自动完成——开发人员无需为每个记忆手动编写存储和检索逻辑。

保持 LangMem 记忆的持久性

默认情况下,如果你使用的是内存存储,代理的记忆不会持久存在超出进程的运行时间。换句话说,如果服务器重启,所有 InMemoryStore 中的记忆都会被清除。要使代理的长期记忆真正持久(跨越重启或不同部署),你需要使用持久化存储解决方案。以下是一些持久化 LangMem 数据的最佳实践和技术方案:

在生产中使用基于数据库的存储

将易失的内存存储替换为持久化的数据库或向量存储。LangChain 提供了 AsyncPostgresStore(以及同步的 PostgresStore),这些存储使用 PostgreSQL 将记忆持久化到磁盘上。实际上,你需要通过连接字符串(connection string)将此存储连接到你的数据库,并在创建代理时将其用作 InMemoryStore 的替代。

例如,你可以创建一个基于 Postgres 的存储,并运行配置来初始化表格。

    from langgraph.store.postgres import AsyncPostgresStore  
    store = await AsyncPostgresStore.from_conn_string("postgresql://user:password@host:5432/dbname")  
    await store.setup()  # 运行数据库迁移

这确保数据被写入数据库并在不同会话之间保持持久性。(如上所述,在上述代码片段中,setup() 运行所需的迁移——通常只需运行一次。)

管理你记忆的命名空间和范围

LangMem 将每个记忆条目与一个 命名空间 相关联,你可以将其视为记忆的“分区”或“标签”。使用命名空间来隔离不同的环境或用户是一种良好的实践。例如,如果你的代理为多个用户提供服务,可以在每个用户的 ID 前面加上命名空间,以区分他们的记忆。这可以防止用户间的数据交叉污染,并保护隐私。

同样,你可能会为不同类型的记忆使用不同的命名空间(例如 "偏好""事实"),这取决于你的应用的具体情况。适当的命名空间有助于在数据库中存储持久内存时保持其条理清晰。这样可以在数据库中更好地组织持久内存。

发挥LangMem存储的灵活性

LangMem的内存API是与存储无关的,因此你可以根据需要集成其他持久化机制。重要的是存储后端能保存内存项并支持语义搜索(比如通过嵌入技术)。

如果不使用内置的Postgres存储,你可以连接一个向量数据库,甚至是一个简单的文件或键值存储系统,只要实现了保存和检索记忆的接口即可。LangMem工具可以与任何遵循预期模式(存储内容及其嵌入,以便进行检索)的自定义存储一起使用。

保持并优化长期的记忆

随着时间的推移,您的代理进行互动,存储的记忆量会逐渐增加。一个好做法是定期整理或总结旧的记忆,以确保代理的活跃记忆保持最新和相关。LangMem的后台记忆管理器可以协助这一过程,通过提取关键信息并在后台清理冗余。

此外,考虑存储什么:关注重要事实或成功的互动模式,而不是每一个细节,以保持记忆存储的有效性。这确保了长期记忆成为一个有用的资产而不是杂乱无章的记录。

通过遵循这些实践,您可以可靠地保持 LangMem 数据持久。简而言之,使用持久性存储后端(如数据库)进行长期保留,使记忆条目更清晰和更安全,并使用 LangMem 提供的工具来管理内存的生命周期。正确的设置下,您的 AI 代理将在每次运行之间保留知识,并在每次交互中不断改进,实现基于长期记忆的智能承诺。

来源:

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消