30 秒看懂
在这段 2023 年的教程中,Matthew Berman 在 RunPod GPU 上配置 Dolphin 2.0 Mistral 7B,并将 MemGPT 连接到 text-generation-webui 的 API。他做了一个简短测试,让智能体保存并回忆他的名字。此后该项目已发展为 Letta,因此演示中的命令和界面属于历史资料,并非当前安装指南。
- 1使用远程 GPU 演示Berman 使用 RunPod,因为他的电脑难以一边录制一边运行推理;他也说明了在本机使用相同基本方案的方法。
- 2加载开放权重模型他将 Dolphin 2.0 Mistral 7B 下载到 text-generation-webui,并使用 Transformers 加载器加载。
- 3让 MemGPT 指向 API历史配置使用 OPENAI_API_BASE 指向 5000 端口的端点,并将后端设为 BACKEND_TYPE=webui。
- 4用名字测试记忆智能体保存名字 Matt,并在提问时正确回答。这只是一个小型演示,并非全面的记忆评估。
要点建议
- 演示中的模型运行在远程 RunPod GPU 上;主持人表示,配置合适的本机也能运行类似方案。
- text-generation-webui 通过 API 提供模型服务,历史版本的 MemGPT 客户端可以调用该 API。
- 视频中的记忆测试只展示了一次简短交互中保存和回忆名字,并不能证明记忆在一般情况下可靠。
- 原版 MemGPT 项目已发展为 Letta,历史命令和菜单可能不再适用。
按章节阅读整理后的全文
本地模型支持与 RunPod 配置
Berman 介绍新加入的模型支持,并解释为何演示使用云端 GPU。他部署 RunPod 实例,指出界面和 API 的端口。
自我上次介绍之后,MemGPT 团队增加了对本地语言模型的支持和 AutoGPT 集成。我想展示如何将开放权重模型连接到 MemGPT;AutoGen 集成将在另一段视频中介绍。
我使用 RunPod,因为同时运行推理和录制视频会让我的电脑负担过重。如果自己的电脑资源足够,也可以使用相同的基本方法:由 text-generation-webui 托管模型,提供 API 给 MemGPT 调用。不过,在这次演示中,模型运行在远程 RunPod GPU 上。
在 RunPod 上,我选择 Secure Cloud 和 RTX A6000,然后部署实例。模板开放 7860 端口作为网页界面,5000 端口作为 API。实例准备好后,我连接 7860 端口的 HTTP 服务,下载并配置模型。
下载并加载模型
他通过 text-generation-webui 下载 Dolphin 2.0 Mistral 7B,使用 Transformers 加载,并说明教程使用的 API。
我选择的模型是 Dolphin 2.0 Mistral 7B。MemGPT 作者告诉我,Airoboros 提示模板通常效果不错,但为了演示流程,我使用这个较小的模型。在 text-generation-webui 的模型标签页中,我粘贴模型标识符并开始下载。当时这些软件还很新,我也感谢 MemGPT 作者 Charles 和 Vivian 帮忙解决错误。

下载完成后,由于这个模型没有量化,我选择 Transformers 加载器。我刷新模型列表;如果选择后界面仍显示 None,就先选择 None,再重新选择模型,然后点击 Load。在 Session 标签页中,我不启用 OpenAI 扩展:这次配置使用 text-generation-webui 的默认 API。
连接并启动 MemGPT
Berman 克隆历史代码仓库,配置端点和后端,并在 Python 环境中安装依赖。随后他启动应用并选择角色。
接下来我克隆 MemGPT 仓库并进入其目录。作者也提供了模块,因此克隆并非唯一的安装方式;如果是生产项目,我通常会使用模块。这是 2023 年的原始流程:MemGPT 此后已发展为 Letta,当前项目的安装和配置步骤可能不同。
我将 OPENAI_API_BASE 设为 RunPod 实例的 5000 端口端点,去掉末尾的斜杠,让客户端向模型 API 发送请求。我还将 BACKEND_TYPE 设为 webui。应使用自己实例的端点,而不是照搬演示中显示的 URL。
在这套历史配置中,我创建并激活一个使用 Python 3.11.3 的 Conda 环境,然后用 pip 安装仓库所需依赖。我用 `python3 main.py --no_verify` 启动程序;我解释说,在演示使用的版本中,这个选项让本地模型配置能够运行。不要假定这些命令和标志仍适用于当前版本。

菜单没有提供我的本地模型选项,所以我暂时选择 GPT-4,然后选择 Sam 角色和 basic user,不预加载任何内容。虽然菜单这样选择,配置的 API 端点仍然是 RunPod 托管的模型。我的目的是展示连接可用,而不是构建完整应用。
保存并回忆名字
主持人向智能体输入名字,要求它记住。模型正确回答了后续提问。
我要求智能体将我的名字 Matt 保存到记忆中。界面支持多行输入,所以只按 Enter 不会发送消息:我先按 Escape,再按 Enter。智能体记录了名字;当我问“我的名字是什么?”时,它回答 Matt。这是对这次交互有用的基本检查,但一个例子无法证明系统在其他情况下记忆信息的可靠程度。

同频道的其他文章
34:21EN → 简体中文
0:26EN → 简体中文
0:36EN → 简体中文
0:21EN → 简体中文
25:50EN → 简体中文
32:20EN → 简体中文