9.4k Star!MemGPT:伯克利大学最新开源、将LLM作为操作系统、无限上下文记忆、服务化部署自定义Agent

cover_image

9.4k Star!MemGPT:伯克利大学最新开源、将LLM作为操作系统、无限上下文记忆、服务化部署自定义Agent

原创 Aitrainee | 公众号:AI进修生:AI算法工程师 / Prompt工程师 / ROS机器人开发者 | 分享AI动态与算法应用资讯,提升技术效率。

排版不佳,公众号阅读原文:9.4k Star!MemGPT:伯克利大学最新开源、将LLM作为操作系统、无限上下文记忆、服务化部署自定义Agent

🌟 MemGPT 允许你 使 用长期记忆和自定义 工具构建 LLM Agent 📚🦙

最近有个新项目 MemGPT
,这个东西真的挺有意思,它可以让大型语言模型,比如让GPT-4这样的llm处理比原生更长的上下文窗口,从而提高它们在复杂任务(如多会话对话和详细文档分析)中的性能。

教导llm管理自己的无限上下文内存!

▲ 在 MemGPT 中,固定上下文 LLM 处理器增强了分层内存系统和功能,使其可以管理自己的内存。LLM
的提示标记(输入)或主上下文由系统指令、工作上下文和 FIFO 队列组成。LLM 完成标记(输出)被函数执行器解释为函数调用。MemGPT
使用函数在主上下文和外部上下文(归档和调用存储数据库)之间移动数据。LLM 可以通过在其输出中生成特殊关键字参数 (
request_heartbeat=true )来请求立即后续 LLM 推理,以将函数调用链接在一起;函数链允许 MemGPT 执行多步骤检索来回答用户查询

  • • llm越来越多地被用于永久聊天

  • • 有限的上下文长度使得永久的聊天具有挑战性

  • • MemGPT通过管理一个虚拟上下文(受操作系统中虚拟内存的启发)来创建无限的LLM上下文

  • • 通过MemGPT,我们证明了llm可以被教会 管理 自己的内存!

通常像GPT-4这类大模型处理复杂的自然语言任务还行,但是当事情涉及到长期记忆或者需要推理一大堆数据时,它们就有点力不从心了。想想看,如果一个模型只能记住它最近看过的一点点信息,要是信息太多,它就处理不了了。

▲ 比较常用模型和 LLM API 的上下文长度(数据收集于 1/2024)。近似消息计数假设预提示有 1k 个令牌,平均消息大小为50
个代币。“Open”意味着该模型是开源的或开放权重的(而不是仅在 API 后面可用)。

但是,MemGPT这玩意儿来了就不一样了。加州大学伯克利分校的研究人员发明了这个技术,灵感来自于电脑操作系统怎样管理内存的。

这个技术其实挺简单的,就是把内存分成两部分:一部分像电脑的RAM一样直接用来处理信息,另一部分就像硬盘一样存放不是立刻需要的数据。当需要这些数据的时候,MemGPT就会把它们调出来。这就让模型能处理那些本来因为信息太多处理不了的任务。

▲ MemGPT(左)在收到有关上下文空间有限的系统警报后将数据写入持久内存

MemGPT通过将内存分为两个主要层进行操作:“主要上下文”,它包括LLM正在处理的直接数据,以及“外部上下文”,它存储可以根据需要带入主要上下文的额外数据。这种设计的灵感来自传统操作系统管理物理内存和虚拟内存的方式,即数据在
更快和更慢 的存储介质之间进行分页,以创建一个更大、无缝的内存空间的假象。

▲ MemGPT(左)可以搜索上下文外数据,将相关信息带入当前上下文窗口

该系统被设计为 自治的 ,根据手头任务的需求管理这些内存层之间的数据流。例如,MemGPT可以根据当前的上下文和用户交互的需求,动态地决定
何时从外部上下文检索数据 ,何时将不太重要的信息推送出去。

▲ MemGPT(左)更新存储信息的示例对话片段。这里的信息存储在工作上下文内存中(位于提示标记内)

这种架构不仅允许处理更大的数据集和更长的对话,而且还提高了模型在扩展的交互中保持 一致性 的能力,这对于需要持续参与的应用程序特别有用,例如个性化
数字助理 和高级对话代理。

▲ MemGPT(左)解决文档 QA 任务的示例。维基百科文档的数据库被上传到档案存储。MemGPT
通过函数调用查询档案存储,将分页搜索结果拉入主上下文。

这个技术的重要性在于,它没有简单地增加模型的大小或者计算需求,而是通过一种更聪明的方式来优化模型的内存使用。这样做不仅能让现有的模型做得更好,还为未来的发展提供了新的方向。

MemGPT 还支持与 llama.cpp、vLLM、Ollama、LM Studio 等开源模型整合、以及与 AutoGen 等 MultiAgent
框架进行结合使用。 AutoGen是微软开源的多 Agent 的开发框架,目前 25.5K Star。

https://memgpt.readme.io/docs/local_llmhttps://github.com/microsoft/autogen

![](https://res.wx.qq.com/t/wx_fed/we-

emoji/res/v1.3.10/assets/newemoji/Party.png) 快速开始 ****

MemGPT 让构建和部署具有以下功能的有状态 LLM 代理变得简单:

  • • 长期记忆/状态管理

  • • 与 外部数据源 (例如 PDF 文件)的连接,用于 RAG

  • • 定义和调用 自定义工具 (例如 Google 搜索 )

您还可以使用 MemGPT 将代理部署为 服务 。您可以使用 MemGPT 服务器在支持的 LLM 提供者的基础上运行多用户、多代理应用程序。

安装与设置

安装 MemGPT:

pip install -U pymemgpt

要将 MemGPT 与 OpenAI 一起使用,请将环境变量 OPENAI_API_KEY 设置为您的 OpenAI 密钥,然后运行:

memgpt quickstart --backend openai

要使用 MemGPT 与免费托管的端点,请运行:

memgpt quickstart --backend memgpt

要获取更高级的配置选项或使用不同的 LLM 后端 或 本地 LLMs ,请运行 memgpt configure

快速入门(CLI)

您可以在 CLI 中运行 memgpt run 来创建并与 MemGPT 代理聊天。 run 命令支持以下可选标志(请参阅 CLI 文档
以获取完整的标志列表):

  • --agent :(str)要创建或恢复聊天的代理的名称。

  • --first :(str)允许用户发送第一条消息。

  • --debug :(bool)显示调试日志(默认=False)

  • --no-verify :(bool)绕过消息验证(默认=False)

  • --yes / -y :(bool)跳过确认提示并使用默认值(默认=False)

您可以在 CLI 文档 中查看可用的聊天命令列表(例如 /memory/exit )。

开发者门户(alpha 构建)

MemGPT 提供了一个开发者门户,使您可以轻松创建、编辑、监视和与您的 MemGPT 代理聊天。使用 docker 安装 MemGPT
是使用开发者门户的最简单方法(请参阅下面的说明)。

快速入门(服务器)

选项 1(推荐) :使用 docker compose 运行

  1. 1. 在您的系统上安装 docker

  2. 2. 克隆仓库: git clone git@github.com:cpacker/MemGPT.git

  3. 3. 运行 docker compose up

  4. 4. 在浏览器中转到 memgpt.localhost 查看开发者门户

选项 2: 使用 CLI 运行:

  1. 1. 运行 memgpt server

  2. 2. 在浏览器中转到 localhost:8283 查看开发者门户

服务器运行后,您可以使用 Python 客户端 或 REST API 连接到 memgpt.localhost (如果您使用 docker
compose 运行)或 localhost:8283 (如果您使用 CLI 运行)以创建用户、代理等。服务需要使用 MemGPT
管理员密码进行身份验证,可以使用运行 export MEMGPT_SERVER_PASS=password 设置密码。

当使用 MemGPT 与开放的 LLMs(例如从 HuggingFace 下载的)时,MemGPT 的性能将高度依赖于 LLM 的函数调用能力。您可以在
Discord 的 #model-chat 频道 以及 此电子表格 上找到已知与 MemGPT 配合良好的 LLMs/模型的列表。

参考链接

文档:https://memgpt.readme.io

论文:https://ar5iv.labs.arxiv.org/html/2310.08560

官网:https://research.memgpt.ai/

Github:https://github.com/cpacker/MemGPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/598469.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人脸采集训练识别

项目概述: 本地摄像头采集人脸数据集,通过训练得到trainingData.yml模型,加载haarcascade_frontalface_default.xml实现人脸识别。haarcascade_frontalface_default.xml 文件并不是一个完整的人脸识别模型,而是一个用于检测正脸&a…

Conda安装rasterio报错

Conda安装rasterio报错 文章目录 Conda安装rasterio报错问题解决参考 问题 在conda环境中安装rasterio包之后,本来可以正常运行的,但是之后又重新安装了一个gdal,导致原来的引用rasterio的包的程序不可正常运行了 conda install rasterio c…

流畅的python-学习笔记_序列

概念 抽象基类:ABC, Abstract Base Class,ABC还有一个概念,是一个编程语言 序列 内置序列类型 分类 可分为容器类型和扁平类型 容器类型有list, tuple, collections.deque等,存储元素类型可不同&…

分布式架构|打造高效、稳定、灵活的现代IT基石

分布式架构:打造高效、稳定、灵活的现代IT基石 一、独立扩展:应对业务增长与用户激增二、高可用性:确保系统稳定运行三、可维护性:降低系统复杂性四、技术选型灵活性:充分利用各种技术优势五、数据隔离与安全性 随着信…

基于Springboot+Vue的Java项目-旅游网站系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

IOS离线打包uniapp的信息时报错如下的解决方法

IOS离线打包uniapp的信息时报错如下的解决方法 问题描述: Extract app intents metadata 0.1 seconds XExtractAppIntentsMetadata(in target HBuilder from project HBuilder-Hello)cd /Users/whb/space/vpt/vptios/HBuilder-Hello/Applications/Xcode.app/Conte…

音视频开发3 视频基础,图片基础

图片像素(Pixel) 一张图片是由多少个 像素 构成的。 例如一张图片是由60x50组成的。 位深度 bit depth RGB表示法 红(Red)、绿(Green)、蓝(Blue) 除了24bit,常见的位深…

(41)5.6-5.7数据结构(栈和队列的应用)

1.栈在括号匹配中的应用 #define _CRT_SECURE_NO_WARNINGS #define MaxSize 10 typedef struct { char data[MaxSize];//静态数组存放栈中元素 int top; //栈顶指针 }SqStack;//初始化栈 void InitStack(SqStack& S);//判断栈是否为空 bool StackEmpty(SqStack S…

寻找身高最相近的小朋友 - 华为OD统一考试(D卷)

OD统一考试(D卷) 分值: 100分 题解: Java / Python / C++ 题目描述 小明今年升学到小学一年级,来到新班级后发现其他小朋友们身高参差不齐,然后就想基于各小朋友和自己的身高差对他们进行排序,请帮他实现排序。 输入描述 第一行为正整数H和N,0<H<200,为小明的…

C++ | Leetcode C++题解之第72题编辑距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1, 0));for (int i 0; i < word1.size(); i) dp[i][0] i;for (int j…

公钥私钥?一文搞懂非对称加密

非对称加密 非对称加密&#xff1a; 通信双方分别创建公钥和私钥&#xff0c;并且保证公钥所加密的信息&#xff0c;只有配对的私钥可以解密&#xff0c;接下来&#xff0c;双方公开交换公钥&#xff0c;通信时&#xff0c;使用对方的公钥进行加密&#xff0c;如此&#xff0…

基于51单片机无线恒温箱恒温控制系统

基于51单片机无线恒温箱恒温控制 &#xff08;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.DS18B20温度传感器测温。 2.按键可以设定温度上下限及温度刷新时间间隔。 3.使用NRF24L01无线模块传输数据 4.温度…

flask网站开发计划

我想写一个flask开发网站的合集文章&#xff0c;该网站主要是采集网络上的文章&#xff08;不同站点&#xff0c;用Python识别出正文内容&#xff09;&#xff0c;然后做成长图形式&#xff0c;发布到flask站点&#xff0c;并提供“下载”按钮&#xff0c;点击下载按钮&#xf…

第3章 WebServer重构

3.1 重构原生Web服务框架 3.1.1 分析原生Web服务框架 在服务端代码的 ClientHandler 中&#xff0c;请求解析、处理请求、返回响应的代码混杂在一起&#xff0c;这样的设计会导致代码难以维护和理解。为了提高代码的可读性、可维护性和可扩展性&#xff0c;我们需要对这些代码…

快速掌握Redis优化要点,告别性能瓶颈!

大家好!我是小米,今天和大家分享一下在Redis中如何进行优化,以提升系统性能。Redis作为一种流行的内存数据库,因其高性能、高可用和数据持久性而受到广泛应用。然而,在实际应用中,我们仍需对Redis进行优化,以满足各种业务需求。接下来,我将从读写方式、KV size、Key数量…

VALSE 2024主旨报告内容解析:以深度学习框架为牵引促进自主AI生态发展

2024年视觉与学习青年学者研讨会&#xff08;VALSE 2024&#xff09;于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道&#xff0c;方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

探秘Flex布局下子元素宽度超出的那些烦心事

嘿&#xff0c;小伙伴们&#xff01;你们有没有遇到过用Flex布局的时候&#xff0c;子元素的宽度莫名其妙地超出了父元素的情况&#xff1f;别着急&#xff0c;今天我就来给大家揭秘这个问题的来龙去脉&#xff0c;以及一些解决方案。让我们一起来深入探讨&#xff01; 发现问…

【Gaea+UE5】创建基本的大型世界场景

目录 效果 步骤 一、在Gaea中生成地形 二、确定导出的地形规模 三、在UE中创建地形 四、验证UE创建的地形规模是否正确 五、使用M4自动地形材质 效果 步骤 一、在Gaea中生成地形 1. 打开Gaea官网下载软件 2. 打开Gaea软件&#xff0c;我们可以选择一个预设的山体 创…

Git === Git概述 Git安装

第1章 Git概述 Git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目。 Git易于学习&#xff0c;占地面积小&#xff0c;性能极快。 它具有廉价的本地库&#xff0c;方便的暂存区域和多个工作流分支等特性。其性能优于Subversion…

汇凯金业:通货膨胀对能源行业有何影响

通货膨胀对能源行业有几方面的影响&#xff0c;具体取决于通货膨胀的原因、规模以及持续时间。以下是一些可能的效应&#xff1a; 成本增加&#xff1a;通货膨胀导致能源行业的运营成本上升。这包括原材料、设备、维护和人力成本。如果企业不能完全将成本转嫁给消费者&#xf…