【论文精读】OS-Copilot: Towards Generalist Computer Agents with Self-Improvement

news2024/11/16 18:01:07

OS-Copilot: Towards Generalist Computer Agents with Self-Improvement

  • 前言
  • ABSTRACT
  • 1 INTRODUCTION
  • 2 THE OS-COPILOT FRAMEWORK
    • 2.1 PLANNER
    • 2.2 CONFIGURATOR
      • 2.2.1 DECLARATIVE MEMORY
      • 2.2.2 PROCEDURAL MEMORY
      • 2.2.3 WORKING MEMORY
    • 2.3 ACTOR
  • 3 THE FRIDAY AGENT
    • 3.1 A RUNNING EXAMPLE
    • 3.2 SELF-DIRECTED LEARNING
  • 4 EXPERIMENTS
    • 4.1 MAIN RESULTS
    • 4.2 SELF-DIRECTED LEARNING
  • 5 RELATED WORK
  • 6 CONCLUSION
  • 阅读总结

前言

这是第一篇OS智能体框架工作,提出了操作系统上通用且能自我改进的AI助手FRIDAY,这与只能解决简单问题的AI助手Cortana相比有着本质的区别和显著的提升。其github仓库开放一周就收获了600+stars,受到了大量科研人员和科技企业的关注,在业界有着不俗的影响力。文章投稿于ICML 2024,为LLM智能体在OS领域的应用奠定了坚实的基础。

Paperhttps://arxiv.org/pdf/2402.07456.pdf
Codehttps://github.com/OS-Copilot
FromarXiv 15 Feb 2024

image.png

ABSTRACT

与计算机的自动交互一直是长期存在的挑战,最近LLM的发展加速了构建数字智能体的进展。但是现有的智能体交互领域过于局限,比如特定的软件或者网页,这显著限制了对一般计算机任务的适用性。本文提出OS-Copilot,一个用于构建与OS中元素(Web,Code,代码,多媒体和各种第三方应用)交互的通用智能体框架。基于OS-Copilot,作者创建了FRIDAY,一个用于自动化处理计算机任务的自我改进的具身智能体。在通用AI助手benchmark上,FRIDAY相对于之前的方法提升了35%,通过对技能的累积,展现出对未见应用程序的强大泛化能力,定量定性实验在Excel和PPT上展示了FRIDAY的自我改进。OS-Copilot为未来更强大、更通用的计算机智能体奠定了基础,提供了深刻的见解。

1 INTRODUCTION

从1920年的小说《R.U.R》到电影《钢铁侠》中的JARVIS,人们一直梦想着构建数字智能体来自动化日常的工作。然而现有的数字智能体只能处理简单的任务,难以适应复杂的人类需求。幸运的是,LLM的进步让我们更接近实现下一代数字助理。当前的智能体主要关注于特定的场景的应用,比如网络浏览,命令行终端,我的世界游戏等,缺少与整个操作系统进行交互的探索。由于操作系统固有的异构性,开发操作系统级别的语言智能体是一个巨大的挑战,具体有如下两点:

  1. 智能体需要一个统一的接口与操作系统交互。
  2. 大量不同的应用程序对语言智能体的泛化和可扩展性提出了重大挑战。

为了解决第一个挑战,作者提出OS-Copilot,旨在通过提供通用的交互接口来加速Linux和MacOS上计算机智能体的构建。该通用接口整合了操作系统中常见的操作,包括Python解释器,Bash终端,鼠标键盘输入,API调用等。下表是OS-Copilot的示例用例。
image.png
对于第二点挑战,作者基于OS-Copilot创建了FRIDAY,这是一个自我改进的具身智能体,可以无缝集成到OS中自动执行计算机任务。它与现有的通用智能体如AutoGPT不同,它具有自我进化配置器来控制不熟悉的程序。控制器包括一个自主学习模块,可以自主提出不熟悉应用程序的任务课程。FRIDAY通过解决这些任务从而累积工具来学习控制这个程序。图一提供了三个案例,证明通过自主学习,FRIDAY学会了操作Excel并使用前端库ReAct构建了一个网站。
为了系统评估FRIDAY在OS中解决任务的能力,作者在通用AI助手benchmark GAIA上评估了其性能,在最简单的一级任务上,FRIDAY成功率比先前最好的系统提高了35%,甚至在其他模型都无法成功的三级任务中,也取得了6.12%的成功率。作者进一步评估了FRIDAY在Excel中的自主学习能力,起初FRIDAY未能解决任何问题,但是经过自主学习,成功率达到了60%,甚至超过了专门为Excel设计的最先进的模型。
本文的贡献如下:

  1. OS-Copilot是一个开创性概念框架,用于在Linux和MacOS上构建通用计算机智能体,为异构OS系统提供了统一的应用交互。此外,OS-Copilot可以作为一个基础平台,支持个性化数字助理、多模态智能体、特定场景智能体学习等领域的研究。
  2. 依托OS-Copilot,作者构建了FRIDAY,一个可以自我提升的AI助理用于解决通用的计算机任务。FRIDAY在benchmark上展示出色的性能,并且在未见的应用上展示了强大的泛化能力。

2 THE OS-COPILOT FRAMEWORK

image.png
OS-Copilot的框架如上图所示,收到用户的请求后,planner首先构建计划并将请求分解为子任务,给定一个子任务,配置器维护一个工作存储库,它负责存储检索到的工具,知识,以及任何相关的用于完成任务的信息。基于配置器提供的信息,actor会迭代执行直到子任务完成。特别的,评估模块会根据收集的执行反馈进行自我修复和提升。此外用户可以根据他们的偏好定制智能体。

2.1 PLANNER

planner组件会对用户的请求进行推理分析,然后将复杂的问题进行分解。最重要的是,planner需要拥有以正确的粒度生成计划的能力,为此,它需要检索有关智能体能力的相关信息,例如内部工具和操作系统信息,以协助规划。为了支持不同的规划方法,作者提出了基于有向无环图的planner。
现有的planner,无论是生成线性结构还是非线性结构的计划,本质上都需要智能体按照顺序执行任务,然而现实场景中并行执行任务可以最小化缩短执行时间。为此,作者利用LLM将计划转化为有向无环图,其中每个节点代表一个子任务,箭头表示子任务之间的相互依赖关系,下图是该planner的工作原理以及部分prompt模板。
image.png
image.png

2.2 CONFIGURATOR

配置器组件从planner组件获取子任务并对其进行配置。配置器的灵感来源于人脑的生物本质,人脑具有工作记忆,陈述性记忆和程序记忆。

2.2.1 DECLARATIVE MEMORY

陈述性或者显式记忆是长期记忆的一个子类别,用于存储事实和事件。本文的陈述性记忆包含两个组件:

  1. 用户画像。记录用户的偏好,对话风格,工具使用习惯。
  2. 语义知识。存储智能体过去获取的知识(比如系统版本,当前的工作目录),该模块对智能体根据当前环境正确采取行动并从经验中学习至关重要。

2.2.2 PROCEDURAL MEMORY

程序记忆是长期记忆的另一种形式,主要与个人的技能发展有关,一旦学会,程序记忆就会自动执行不涉及用户意识的功能。OS-Copilot的程序记忆主要由作为智能体技能库的工具仓库组成。LLMs虽然可以读写,但是不具备与操作系统交互的能力,因此需要为智能体配备将自然语言转换为操作系统可行操作的工具。作者为OS-Copilot植入了四个手动创建的工具:网页浏览,音频转录,图像caption,网页检索。工具以两种形式存在:部署为API服务以使用POST请求,或者存储为python文件。

2.2.3 WORKING MEMORY

工作记忆是短期记忆,它是OS-Copilot的核心,用于连接planner,配置器和参与者组件。工作记忆通过内部和外部操作与其他模块交换信息:

  • 内部操作:从长期记忆中检索信息并更新,比如检索工具来帮助规划或者自我纠错。
  • 外部操作:工作记忆模块从planner中接收子任务,从陈述性记忆和程序性记忆中收集相关的信息,然后将这些信息提供给actor组件。actor的反馈信息将输入回工作记忆中以进行潜在的修改。

2.3 ACTOR

actor分为两个阶段:执行和自我评判。执行器根据配置器的prompt在OS下执行action,自我批判模块根据执行的结果给出优化的反馈,并将高质量的action保存到长期记忆中。

  • 执行器会根据配置器提供的子任务和预设的prompt,生成可执行的工具类和对应的调用来完成子任务。它提供了封装Python运行、Bash运行、API调用、键鼠控制的接口,涵盖了大部分操作系统的用例。
  • 自我评判模块会收集执行前后全面的系统信息,利用LLM自动评估完成状态。具体来说,它会评判当前子任务是否完成,分析执行报错的原因,以及评估是否需要重新规划子任务。

3 THE FRIDAY AGENT

FRIDAY设计的原则旨在通过赋予智能体自我完善和学习的能力来最大化通用性。本节先用一个例子说明FRIDAY是如何运行的,接着深入研究FRIDAY如何通过自主学习来操作不熟悉的应用程序。

3.1 A RUNNING EXAMPLE

image.png
在收到“将系统改为深色模式”的任务后,配置器从长期记忆中检索相关信息来构建prompt,该prompt中包含相关工具、用户配置文件、操作系统版本以及工作目录。由于该任务中没有识别出合适的工具,因此工具生成器将根据prompt(工具prompt和任务相关信息)构建工具类。接着,执行器将生成工具调用并运行工具,执行结果将输入给评判模块,用于评估任务是否完成。评估模块有两个指标,一个是任务是否完成,一个是工具质量得分(1—10分),得分大于等于8分被认为是高质量的工具,会被保存到长期记忆中。如果任务没有完成,那么需要判断错误的类型,是代码本身有错误还是计划有缺陷,如果是代码本身的错误,那么amend模块会根据LLM分析的错误原因对原始代码进行修复(最多尝试三次),否则replan模块会对当前的子任务进行重新的规划,一个常见的示例是缺少相关的依赖包,那么会repaln一个子任务用于安装该依赖包。

3.2 SELF-DIRECTED LEARNING

自我学习是人类获取新信息、学习新技能的关键,FRIDAY也有类似的能力。为了掌握excel的使用,FRIDAY会被提示执行与该目标相关的任务流,从简单再到具有挑战性。在这个过程中,FRIDAY累积有价值的工具,从而学习到使用excel的能力。

4 EXPERIMENTS

FRIDAY在通用AI助手benchmark GAIA上的466个QA问答上进行评估。为了回答相关的问题,智能体需要掌握计算、网页浏览、网页检索、音频转换等能力。
作者采用四个基本的工具初始化FRIDAY,在评估完毕后,又增加了9个工具。LLM采用GPT4-turbo-1106。
baseline采用AutoGPT-4、带有工具的和不带工具的GPT-4,此外作者还引入了人类的表现结果。

4.1 MAIN RESULTS

image.png
上表是实验结果,FRIDAY在leve 1上比SOTA高了35%,level 2上提升更甚,即使是难度很大的Level 3,也有6.12%的表现。为了探究FRIDAY有效性的根源,作者对比了FRIDAY和AutoGPT-4,二者在任务分解和存储上有相似之处,但是FRIDAY强调了自我评判和完善的重要性,GPT-4 Plugins优于AutoGPT-4的原因在于它具有能力访问广泛的工具库,而FRIDAY优于GPT-4 Plugins在于OS-Copilot架构的优越性,规划、评判和改进模块将其提升到新的水平。
虽然OS-Copilot中的概念并不都是首次创新出,但是它将这些模块有机结合到一起,通过强有力的实验结果证明架构的有效性,这对未来的相关工作具有指导作用。
通过对比未经学习和经过学习后的FRIDAY,可以看到自我导向学习对最终表现的贡献。当然也正如所见,即使没有自主学习,FRIDAY仍然显著优于所有基线,这进一步凸显了框架和定制设计的有效性。自主学习的结果一方面说明了类似于GAIA这种开放环境的数据集的挑战,也强调了FRIDAY自主设计和使用工具能力在去的显著成功中的关键作用。附录中有细化的效率评估和每个领域能力的评分。
image.png

4.2 SELF-DIRECTED LEARNING

本节从定量和定性角度评估FRIDAY的自我导向学习能力。
定量评估在SheetCopilot-20数据集上进行,该数据集包含20个excel操作任务,代表了excel中的典型任务。FRIDAY通过自我指导生成了10个有关excel操作的任务,并且累积了10个工具,如下表所示:
image.png
image.png
实验结果如上表所示,最初,FRIDAY没有进行自主学习,无法完成任何任务,在编写代码时倾向使用pandas和matplotlib等包进行电子表格操作导致失败。当配备自我学习能力后,FRIDAY性能超过了为excel专门设计的智能体SheetCopilot。值得注意的是,sheetCopilot中所有原子操作和工具都是人工编写的,而FRIDAY是自主生成的,这进一步表明本文构建的通用操作系统智能体可以有效扩展支持各种应用,而不需要人工干涉。
定性分析中,作者设计了一个任务,要求FRIDAY根据文字和图片资料创建PPT来介绍OS-Copilot。任务说明中详述了PPT所需的内容、字体、字号等,构建过程如下图所示:
image.png
在没有学习时,FRIDAY很难控制字号、字体以及图片的大小和位置。经过一段时间的学习,FRIDAY掌握了各种文本配置技能,比如字体,字号,颜色,行间距等等,进一步学习还有控制图像大小、图像位置,最终完成任务。所展示的过程证明FRIDAY通过自主学习掌握不熟悉应用程序的能力。下表是学习过程中积累的工具。
image.png

5 RELATED WORK

由LLM支持的自主智能体或者语言智能体是一个快速发展的研究领域,最近引起了广泛的关注。
语言智能体被设计应用于各个领域,包括机器人,网络操作,游戏等,但是这些智能体都是针对特定环境量身定制的,无法泛化到别的场景。
语言智能体代表了一个复杂的系统,它是由各种组件组成,每个组件都代表了大量值得研究的方向。对于规划组件,它包括任务的分解,推理路径的多样性,是否需要自我评估等。对于记忆组件,又涉及短期记忆和长期记忆,不同的记忆采用不同的工具或者数据结构存储。执行组件的难点在于如何将LLM的输出转化为可执行的操作,并在真实环境中执行,这里又涉及针对执行信息的收集以及纠错。

6 CONCLUSION

本文提出了OS-Copilot,一个用于构建OS级的语言智能体框架。基于该框架,作者开发了具身计算机智能体FRIDAY,它在解决开放环境计算机任务上展现了令人惊叹的性能,此外还展示了其通过自主学习有效学习和控制以前未见过的应用程序的能力。
当然,OS-Copilot还存在一定的局限性,如下所述:

  1. LLM的改变,会对FRIDAY的性能产生巨大的影响。
  2. 仅通过代码和自然语言控制计算机是不可行的,因此扩展OS-Copilot以支持视觉输入势在必行。
  3. 评估通用的计算机智能体是一个巨大的挑战,因为很多任务的执行缺乏基本事实。
  4. 与操作系统的交互必须透明、可解释且安全。如何确保与OS进行交互的系统不会造成任何形式的伤害是一个重大挑战。

阅读总结

本文是真正意义上第一篇开源的与操作系统交互的智能体的工作,也是博主本人的第一篇工作。整个开发的过程是紧张且刺激的,核心的开发周期只有一个半月的时间,再加上一个月的实验,满打满算all in了近三个月的时间,疲惫不堪但收获满满。在开始这个项目之初,团队leader(即一作)就提出以钢铁侠的FRIDAY为工作的最终目标,设计出一个全新的用于与操作系统全方位交互的框架,从而开发出通用的、可以自我学习提升的计算机AI助手。为了设计出合理的框架,让每个模块的组合达到1+1>2的效果,我也是阅读了大量的文献工作,包括并不限于:

  • ReAct,学习其对任务的走一步看一步的执行形式。
  • VOYAGER,学习其工具积累的方法。
  • HuggingGPT,学习其任务规划的设计。
  • Adapter,学习其replan的思想。
  • reflexion,学习其基于强化学习思想的纠错和提升模式。

基于对这一系列工作的学习,我逐渐对和OS交互的智能体有了一个比较清晰的认知,对于这样的具身智能体,它首先得有自己的大脑,即LLM,可以是基于API的,也可以是开源的LLM;其次,它得有积累工具和检索工具的能力,那么我就想到了用向量数据库的方式对工具进行存储;最后,它需要拥有与OS交互的接口,而Python是非常出色的交互环境,因此任务的执行都是在Python环境下执行。拥有这三个基本组件后,剩下的就是如何利用这三个组件来开发交互的模块。大方向上的模块有三个,planner,配置器和执行器。三者都会用上LLM,配置器会检索工具,执行器会利用检索工具,没有工具就利用LLM的能力生成工具并在python环境下执行。执行器中有复杂的执行和改进流程,需要对原始代码进行分析才便于解释,如果有朋友看完文章后对代码实现的细节感兴趣,欢迎留言或私信,我将会再出一期博客来对代码进行讲解分析。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS中使用xcopy生成后命令报9009错误

错误现象: download下来的代码,在另一台电脑能使用生成后命令xcopy,换一台电脑后该命令不能使用,报如下错误: 2.错误原因: 这是因为xcopy /Y 为Windows程序命令,xcopy其实是Windows下的一个xcopy.exe,如果…

【Spring】声明式事务 spring-tx

文章目录 声明式事务是什么?一、Spring事务管理器二、基于注解的声明式事务1.1 准备工作1.2 基本事务控制1.3 事务属性:只读1.4 事务属性:超时时间1.5 事务属性:事务异常1.6 事务属性:事务隔离级别1.7 事务属性&#x…

redis架构系列——生产常用的部署模式介绍

主从高可用模式 这是最基本的高可用模式,它允许数据从主节点自动复制到一个或多个从节点。这种模式下,从节点可以处理读操作,从而实现负载均衡,并提供故障恢复的基本功能。然而,它的故障恢复不能自动化,写操…

Java核心-核心类与API(2)

话接上回,继续核心类与API的学习,这次介绍StringBuffer/StringBuilder/StringJoiner类。StringBuffer和StringBuilder是我们学习的重点,建议对比学习,做好区分。 一、StringBuffer类 1、概述 1)问题 由于 String 类…

每日OJ题_牛客OR59_字符串中找出连续最长的数字串

目录 牛客OR59 字符串中找出连续最长的数字串 解析代码 牛客OR59 字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 解析代码 #include <iostream> #include <cctype> using namespace std; int main() {string str, tmp "&q…

Stable Diffusion 3 震撼发布,采用Sora同源技术,文字终于不乱码了

Stable Diffusion 3 和 Sora 一样采用了 diffusion transformer 架构。 继 OpenAI 的 Sora 连续一周霸屏后&#xff0c;昨晚&#xff0c;生成式 AI 顶级技术公司 Stability AI 也放了一个大招 ——Stable Diffusion 3。该公司表示&#xff0c;这是他们最强大的文生图模型。 与…

Uniapp-小程序简单的时间选择组件-年月日时分

文章目录 前言一、组件效果二、组件代码使用 总结 前言 uniapp小程序开发系列。本文实现一个简单时间选择控件。uniapp用个心仪时间控件真的麻烦。官方给得要么年月日&#xff0c;要么时分。产品只要年月日时分。这该怎么玩。旧项目没有引入ui框架&#xff0c;我也不想去引入&…

调查居民幸福指数的社会实践报告

引言 在快速发展的现代社会中&#xff0c;居民的幸福感成为了衡量一个社区、一个城市乃至一个国家综合实力的重要指标之一。幸福指数不仅反映了居民的生活质量和满意度&#xff0c;也是政府制定和调整政策&#xff0c;提升民众生活水平的重要依据。因此&#xff0c;本次社会实践…

【Python_Zebra斑马打印机编程学习笔记(二)】基于BarTender将btw文件转换为zpl文件

基于BarTender将btw文件转换为zpl文件 基于BarTender将btw文件转换为zpl文件前言一、BarTender1、BarTender 介绍2、BarTender 安装 二、导出 ZPL 文件1、导出 ZPL 文件步骤2、Zebra 打印机驱动安装 基于BarTender将btw文件转换为zpl文件 前言 本文介绍如何基于 BarTender 软…

C语言特殊函数

静态函数 背景知识&#xff1a;普通函数都是跨文件可见的&#xff0c;即在文件 a.c 中定义的函数可以在 b.c 中使用。 静态函数&#xff1a;只能在定义的文件内可见的函数&#xff0c;称为静态函数。 语法 staitc void f(void) // 在函数头前面增加关键字 static &#xff…

J7 - 对于ResNeXt-50算法的思考

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 J6周有一段代码如下 思考过程 首先看到这个问题的描述&#xff0c;想到的是可能使用了向量操作的广播机制然后就想想办法验证一下&…

Element使用Message消息提示

Element使用Message消息提示 一、导入Element1、npm 安装2、引入 Element3、实现代码4、效果 一、导入Element 1、npm 安装 推荐使用 npm 的方式安装 npm i element-ui -S2、引入 Element 在 main.js 中写入以下内容 import ElementUI from element-ui; import element-ui…

FFmpeg解析之avformat_find_stream_info函数

avformat_find_stream_info 的主要作用就是&#xff1a;解析媒体文件并获取相关的流信息 整体的逻辑如下图所示&#xff1a; /*** Read packets of a media file to get stream information. This* is useful for file formats with no headers such as MPEG. This* function…

现货黄金中短线投资该怎么做?

要明确什么是现货黄金的中短线投资&#xff0c;中短线投资是指在短期内&#xff08;一般为几天至几周&#xff09;对现货黄金进行买卖操作&#xff0c;以期获得收益的投资方式。相较于长线投资&#xff0c;中短线投资的风险相对较大&#xff0c;但同时收益也更为可观。那么&…

算法题目中图和树的存储

邻接表的方式存储图和树 这就是邻接表&#xff0c;就是将每个结点的孩子结点用链表表示出来&#xff0c;再将所有结点以数组形式连起来。 存储树和图我们需要三个数组&#xff0c;h[N], e[N], ne[N],分别表示邻接表&#xff0c;结点值&#xff0c;结点的next值&#xff0c;h[i…

Zookeeper简介及选举机制

1.概述 Zookeeper是一个开源的&#xff0c;分布式的&#xff0c;为分布式框架&#xff08;如下图中的Hadoop和Hive&#xff09;提供协调服务的Apache项目。 工作机制&#xff1a;基于观察者设计模式的分布式服务管理框架&#xff0c;负责存储和管理数据&#xff0c;接受观察者…

Set集合(Java) 及底层原理

SET<E>是一个接口&#xff0c;添加的元素是无序的&#xff1a;添加数据的顺序和获取出的数据顺序不一致&#xff1b;不重复&#xff0c;无索引。 实现类&#xff1a; 1.HashSet&#xff1a;无序不重复无索引 2.LinkedHashSet&#xff1a;有序不重复无索引 3.TreeSet&…

最佳 PDF 转 Word 转换器软件,可实现无缝转换

如今&#xff0c;PDF文件格式因其高安全性而被计算机用户所熟悉&#xff0c;这使得无法直接编辑内容。因此&#xff0c;每当用户需要复制内容时&#xff0c;都会遇到很多困难。在这里将介绍了一些可以让您将 PDF 转换为 Word 的工具。 借助高效、免费的 PDF 转 Word 转换器软件…

离散数学(一) 集合

属于关系 表示 枚举法&#xff1b; 叙述法&#xff1b; 文氏图法 基数 空集 全集 全集是相对唯一的 相等关系 有相同元素看作一个元素 包含关系 幂集 集合运算 并集 交集 补集 差集 对称差集 定理 可数集合与不可数集合 自然数集 等势 如果存在集合A到集合B的双射(又称一一…

PostgreSQL如何使用UUID

离线安装时&#xff0c;一般有四个包&#xff0c;都安装的话&#xff0c;只需要开启uuid的使用即可&#xff0c;如果工具包(即 postgresql11-contrib&#xff09;没有安装的话&#xff0c;需要单独安装一次&#xff0c;再进行开启。 开启UUID方法 下面介绍一下如何开启&#…