菜单

内存系统

相关源文件

MetaGPT 整合了多种内存系统,使代理能够维护上下文、存储知识并通过重用过去的计算来提高效率。本文档将解释三个关键内存系统(BrainMemory、RoleZeroLongTermMemory 和 Experience Pool)的架构和功能。这些系统协同工作,为 MetaGPT 的代理提供短期和长期记忆能力。

有关整体消息传递架构的信息,请参阅 消息传递系统

内存系统架构

MetaGPT 的内存系统在代理框架内服务于不同的目的

来源:metagpt/memory/brain_memory.py metagpt/memory/role_zero_memory.py metagpt/exp_pool/manager.py

BrainMemory

BrainMemory 是 Assistant 等角色使用的主要内存系统。它处理对话历史记录、存储知识、总结长对话,并通过用于关联和重写文本的方法提供上下文感知能力。

BrainMemory 类结构

来源:metagpt/memory/brain_memory.py26-345

主要功能

  1. 历史和知识管理:将对话历史和知识存储为 Message 对象的列表

  2. 添加消息:提供将用户消息或助手消息添加到历史记录的方法

  3. 摘要:可以对长对话历史进行摘要,以节省 token 并保持上下文

  4. Redis 集成:可以使用 Redis 持久地存储和检索内存

  5. 上下文感知:可以判断两个文本是否相关,并根据上下文重写句子

来源:metagpt/memory/brain_memory.py45-58 metagpt/memory/brain_memory.py130-151 metagpt/memory/brain_memory.py63-86 metagpt/memory/brain_memory.py198-246

BrainMemory 工作流程

来源:metagpt/roles/assistant.py117-130 metagpt/memory/brain_memory.py45-58 metagpt/memory/brain_memory.py87-101

RoleZeroLongTermMemory

RoleZeroLongTermMemory 扩展了基础 Memory 类,以提供短期和长期记忆能力。它使用 RAG(检索增强生成)引擎进行长期存储和检索,使代理能够在更长的交互过程中维护上下文。

RoleZeroLongTermMemory 类结构

来源:metagpt/memory/role_zero_memory.py24-201

主要功能

  1. 双内存管理:维护短期和长期内存存储

  2. 自动内存传输:当短期容量达到上限时,将旧消息传输到长期内存

  3. 可配置容量:控制内存容量和检索参数

  4. 上下文检索:根据当前上下文检索相关的长期记忆

来源:metagpt/memory/role_zero_memory.py31-44 metagpt/memory/role_zero_memory.py119-142 metagpt/memory/role_zero_memory.py144-171

RoleZeroLongTermMemory 工作流程

来源:metagpt/memory/role_zero_memory.py71-95 metagpt/memory/role_zero_memory.py119-171

Experience Pool

Experience Pool 提供了一种函数输出的缓存机制,允许 MetaGPT 在遇到类似输入时重用过去的计算。它包括用于存储、评估和检索经验的组件。

Experience Pool 组件

来源:metagpt/exp_pool/manager.py18-233 metagpt/exp_pool/schema.py62-77 metagpt/exp_pool/decorator.py97-228

Experience 缓存流程

来源:metagpt/exp_pool/decorator.py29-94 metagpt/exp_pool/decorator.py137-169

主要功能

  1. 函数输出缓存:缓存函数输出以避免重复计算

  2. 可定制检索:可以使用不同的查询类型和存储后端

  3. 质量评估:对经验进行评分以评估其质量

  4. 简单接口:易于使用的装饰器语法来缓存函数输出

  5. 配置选项:Experience Pool 的广泛配置选项

来源:metagpt/exp_pool/decorator.py29-94 metagpt/exp_pool/schema.py16-22 metagpt/exp_pool/scorers/simple.py47-65 config/config2.example.yaml84-92

与角色的集成

MetaGPT 中的内存系统与角色集成,以提供上下文感知和高效操作。Assistant 角色是与 BrainMemory 集成的典型示例。

Assistant 角色与 BrainMemory 的集成

来源:metagpt/roles/assistant.py37-139 metagpt/actions/talk_action.py16-168

关键集成点

  1. Assistant 中的 Memory 字段:BrainMemory 直接集成到 Assistant 类中

  2. 记忆精炼:助手通过 BrainMemory 处理用户输入以保持上下文。

  3. 行动记忆:记忆内容用于为行动提供上下文。

  4. 响应存储:助手将响应存储回记忆中。

来源: metagpt/roles/assistant.py45 metagpt/roles/assistant.py117-130 metagpt/roles/assistant.py100-102 metagpt/roles/assistant.py82

配置

MetaGPT 中的内存系统可以通过配置文件进行高度配置。

BrainMemory 配置

RoleZero 记忆配置

经验池配置

来源: config/config2.example.yaml70-76 config/config2.example.yaml93-98 config/config2.example.yaml84-92

总结

MetaGPT 的内存系统为代理记忆管理提供了一个全面的解决方案。

记忆系统主要用途主要功能存储机制
BrainMemory角色的对话上下文历史记录存储、摘要、上下文感知内存 + Redis
RoleZeroLongTermMemoryRoleZero 的扩展上下文双重记忆(短期+长期)、RAG检索内存 + RAG引擎
Experience Pool函数输出缓存装饰器接口、质量评估、语义检索BM25 或 Chroma

这些内存系统共同使 MetaGPT 代理能够在交互中保持上下文、检索相关的历史信息以及有效地重用先前的计算,从而实现更连贯、更具上下文意识且更高效的代理行为。

来源:metagpt/memory/brain_memory.py metagpt/memory/role_zero_memory.py metagpt/exp_pool/manager.py