关于 MemGPT Sample
这是一个基于 Spring Boot 的概念验证项目,实现简化版 MemGPT Agent,并通过 REST 或 MCP 提供功能,适合探索 Agent 记忆机制的开发者;项目还包含可连接两种接口的命令行聊天应用。
主要功能
- 01Agent 配置与状态管理
- 02核心记忆与归档记忆
- 03消息检索、摘要和归档
- 04REST 与 MCP 服务接口
- 05命令行聊天应用
适用场景
- 01探索简化版 MemGPT 实现
- 02通过 REST 或 MCP 运行 Agent
- 03体验带 Agent 记忆的聊天
MCP 相关
项目将核心 Agent 封装为 MCP 服务。聊天应用可直接通过该服务交互,也可仅用它管理上下文窗口记忆并自行处理补全。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MemGPT 示例
本项目是一个概念验证,实现了对 MemGPT 研究论文的简化版本:论文。它将这一概念实现为 Agent,并展示了如何将其集成为简单的 REST 服务或 MCP 服务。
概述
本项目使用 Spring Boot 和 Spring AI 实现 MemGPT 概念,并将其功能作为 REST 服务和 MCP 服务提供。此外,项目还包含一个简单的命令行 ChatBot 应用,可通过上述任一机制集成 Agent。本项目由以下子项目组成:
- core-agent:定义并实现 MemGPT 接口,其中包括配置 API。
- restful-agent-app:围绕 Agent 的封装服务,通过简单的 REST 接口提供其功能。
- memgpt-mcp-server:围绕 Agent 的封装服务,将其作为 MCP 服务提供。
- simple-chat-bot-app:基于命令行的聊天应用,通过 REST 或 MCP 接口与 Agent 通信。
前提条件
- Java 17 或更高版本
- Gradle
- OpenAI API 密钥
Core Agent
core-agent 是包含 MemGPT Agent 接口和实现的组件。它负责维护 Agent 的配置和状态,包括:
- 系统提示词
- 工具
- 核心记忆
- 归档记忆
- 消息持久化,包括上下文窗口之外的消息
它还负责核心 Agent 功能,包括但不限于:
- 消息编译
- 大模型通信
- 工具调用
- 记忆管理,包括上下文窗口的自我编辑
- 消息检索和归档
- 消息摘要
对外,Agent 通过三个主要接口提供功能:
- AgentManager:配置并维护 Agent 实例。
- AgentLoader:实例化 Agent 实例。
- Agent:定义核心 Agent 聊天功能。
运行应用
simple-chat-bot-app 可与 restful-agent-app 或 mgmgpt-mcp-server 通信。选择希望 ChatBot 应用与之通信的服务应用,配置并运行该应用。然后,将 ChatBot 应用配置为使用所选服务应用,并运行它。
服务应用
MCP 和 REST 服务应用都只是对核心 Agent 进行封装,因此配置相同。按照以下步骤运行所选的任一服务应用。
- 设置 OpenAPI 密钥环境变量
export OPENAI_API_KEY=your-api-key
- 构建应用
./gradlew :restful-agent-app:build
或
./gradlew :memgpt-mcp-server:build
- 运行服务应用
java -jar ./restful-agent-app/build/libs/restful-agent-app-0.0.1-SNAPSHOT.jar
或
java -jar ./memgpt-mcp-server/build/libs/memgpt-mcp-server-0.0.1-SNAPSHOT.jar
服务应用启动后,即可接收来自 ChatBot 应用的请求。
归档记忆
MemGPT 归档记忆需要使用向量存储和 Embeddings 模型。默认情况下,归档记忆处于禁用状态,但你可以启用 pgvector Spring 配置文件来激活它。如果使用 OpenAI 作为 Embeddings 提供方,并使用 postgres 作为数据库,则无需额外配置。其他提供方可能需要额外配置,这超出了本 README 的范围。
聊天机器人应用
聊天机器人应用可以与 REST 应用或 MCP 服务应用通信;默认情况下,它会尝试与 REST 应用通信。连接到 MCP 服务时,聊天机器人可以直接与 MCP 服务通信,由其管理上下文窗口并创建聊天补全;也可以使用自定义的 Spring AI Advisor,仅管理上下文窗口记忆,并自行处理聊天补全的创建。
按照以下步骤配置并运行聊天机器人应用:
- 设置 OpenAPI Key 环境变量
export OPENAI_API_KEY=your-api-key
- 配置目标服务应用(如果目标是 REST 应用,则可跳过)。
编辑 simple-chat-bot-app\src\main\resource\application.yaml 文件,并根据目标服务应用,将 spring.profiles.active 设置为以下值。
- rest(默认): 通过 REST API 使用 MemGPT 服务生成聊天补全。
- mcp: 通过 MCP API 使用 MemGPT 服务生成聊天补全。
- restadvisor: 直接与 LLM 通信以生成聊天补全,并通过 RESTful API 使用 MemGPT 服务仅管理记忆。
- mdcadvisor: 直接与 LLM 通信以生成聊天补全,并通过 MCP API 使用 MemGPT 服务仅管理记忆。
- 构建应用
./gradlew :simple-chat-bot-app:build
- 运行聊天机器人应用
java -jar ./simple-chat-bot-app/build/libs/simple-chat-bot-app-0.0.1-SNAPSHOT.jar
应用首先会要求输入 User ID,可以是任意值;它主要用作聊天会话的唯一标识符。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。