【论文通读】UFO:A UI-Focused Agent for Windows OS Interaction

news2024/11/25 10:52:30

UFO:A UI-Focused Agent for Windows OS Interaction

  • 前言
  • Abstract
  • Motivation
  • Methods
  • Experiment
  • Conclusion

前言

Windows客户端第一个JARVIS,利用GPT4 Vision识别截图信息辅助智能体自动化执行操作,作为微软大肆宣传的一篇工作,其前瞻性还是值得学习的,只不过在实现上博主认为还有很大的改进空间,不过也算是Windows端AI助手的基石工作了。

Paperhttps://arxiv.org/pdf/2402.07939.pdf
Codehttps://github.com/microsoft/UFO
FromarXiv 1 Mar 2024

Abstract

本文提出UFO,一种新颖的以UI为中心的智能体,它利用GPT-Vision的功能满足针对Windows操作系统上的应用程序定制用户的请求。UFO采用双智能体框架来观察和分析Windows下应用的图像化界面和控制信息。这使得智能体能够在各种应用程序内或者跨应用进行操作满足用户的请求。框架集成了一个控制模块,无需人工干预就可以实现自动化操作。UFO将艰巨且耗时的过程转变为仅通过自然语言命令就可以完成的任务。作者在9个流行的windows应用上测试UFO,涵盖了用户日常使用的各种场景。从定性和定量结果表明UFO在满足用户的请求方面的有效性。UFO是目前第一个为Windows操作系统制定的UI智能体。

Motivation

  1. Windows在操作系统所占市场份额大。
  2. Windows端应用丰富,操作复杂,涉及长程计划和多应用交互。
  3. 现有的智能体主要关注于智能手机。

UFO的优势:

  1. 聚焦UI,与Windows操纵系统无缝交互。
  2. 双Agent框架,各司其职。
  3. 无需人工干预,完全自动化,同时也运行用户交互。
  4. 高度可扩展性,可以针对任务和应用程序定制操作和组件。
  5. 根据它们在github上更新的内容来看,RAG似乎加入了最新的UFO中,这有助于进一步提升UFO的能力。

Methods

image.png
UFO结合两个Agent,它们决定选择哪些应用程序和组件来处理用户请求,其中:

  • AppAgent:选择一个正确的应用程序来满足用户的请求。当面临扩应用请求,还可以切换应用程序。
  • ActAgent:动作选择智能体。负责在所选程序上执行动作,直到任务完成。

这两个Agent利用GPT-Vision的多模态功能来理解应用程序UI并满足用户的请求。它们利用一个控制交互模块来确定它们的行动,从而对系统程序进行操作。
image.png
具体来说,UFO为AppAgent提供了完整的桌面截图和一系列可供参考的应用程序,AppAgent从其中选择合适的程序,并制定一个全面的计划来完成请求,然后将计划转交给ActAgent。
image.png
一旦确认了合适的应用程序,程序就会在桌面上显示,接着,ActAgent进行操作完成用户的请求。在每个动作执行之前,UFO会捕获当前应用程序的窗口截图,所有可控组件都会被标注。
ActAgent的任务是选择要操作的控件,基于观察、计划和记忆,通过控件交互模块选择特定控件执行特定操作。执行完毕后,UFO为未来的步骤构建本地计划,并进行到下一个行动选择步骤,这个递归过程会一直持续到用户成功完成任务为止。
在跨应用请求的场景,ActAgent会将任务委托给AppAgent,以便ActAgent完成当前应用程序上任务后切换到另一个应用程序,从而响应下一阶段的请求。
在UFO构建过程中,还应用了如下的一些方法:

  • 用户可以选择交互式引入新的请求,整个过程会迭代持续到用户所有请求完全完成。
  • 为了解决自动化标注会造成截图界面混乱,以及干扰UFO做决策,团队提出双层控制过滤机制,第一层过滤与操作相关度低的组件标注,第二层让UFO动态选择更简洁的控件列表。
  • 任务执行时,真实的状态和预期可能并不一致,因此UFO会在每个决策步骤中不断修改计划,根据需要偏离原始路线。
  • 由于操作系统的敏感性,可能会有一些不可逆的风险操作,为此, UFO会智能评估操作的敏感性,部署相应的防护措施。

Experiment

**数据:**研究团队在9个常用的Windows应用程序上对UFO进行了测试,包括Outlook、Photos、PPT、Word等,涵盖了Windows用户的高频使用场景,能够测试工作、交流、编码、阅读、网页浏览等目的。对于每个请求,团队设计了5个不同的请求,此外还有5个跨应用交互的请求,共50个请求。该数据集也被整理成名为WindowsBench的测试基准。
**评估指标:**从成功度、步骤、完成率和保障率这几个角度来评估UFO。
**baseline:**考虑到没有现成的Windows Agent,团队选择GPT-3.5和GPT-4作为基座模型,并根据它们的指示由人工操作来完成用户请求。
实验结果如下表所示:
image.png
UFO在WindowsBench上成功率达到了86%,远远超过了GPT-4。此外,在执行步骤、完成率和安全度上也是最高的。
最后,从场景角度对WindowsBench的评估结果如下:
image.png

Conclusion

一个在Windows场景的通用智能体,通过两个智能体交互的形式完成用户的指令。其特点是利用GPT-4 Vision的识别能力,模拟人类在Windows系统下操作的行为,这确实特别接近人类对通用AI助手的幻想——即钢铁侠的JARVIS。该工作还有一个亮点是允许用户可选择介入,这对环境实时变化的场景友好。当然,这个工作还是一些不足和值得思考的地方:

  1. 工具需要定制,不具有泛化能力,不过RAG的加入可以一定程度缓解这个问题。
  2. 只能在Windows平台上使用,过于依赖Python工具包pywinauto。
  3. 能不能有更底层的API获取到当前的GUI信息(比如文中提到的Win32 API)?截图方式有些太浅层了,肯定有更底层拿到GUI信息的方法。
  4. 方法依赖GPT4 Vision,如果能够拿到GUI底层信息,是不是就不需要GPT4 Vision也能做?或者内置一个专门的Windows的大模型,能够直接和底层信息交互的那种,这就更像真正的JARVIS了。
  5. UFO运行的效率未知,比如执行一个任务到底需要多长的时间,以及token的开销究竟是多少,毕竟时间成本和token开销成本都是需要考虑的。

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

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

相关文章

Ubuntu20.04下PCL安装,查看,卸载等操作

Ubuntu20.04下PCL安装,查看,卸载等操作 项目来源 https://github.com/PointCloudLibrary/pclhttps://pointclouds.org/documentation/modules.htmlhttps://pcl.readthedocs.io/projects/tutorials/en/master/ 点云学习: https://github.c…

QT----基于QT的人脸考勤系统ubuntu系统运行,编译到rk3588开发板运行

目录 1 Ubantu编译opencv和seetaface库1.1 Ubantu编译opencv1.2 Ubuntu编译seetaface1.3 安装qt 2 更改代码2.1 直接运行报错/usr/bin/ld: cannot find -lGL: No such file or directory2.2 遇到报错摄像头打不开2.3 修改部分代码2.4 解决中文语音输出问题 3 尝试交叉编译rk358…

141.环形链表 142.环形链表II

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索…

何时需要指定泛型:Scala编程指南

这里写目录标题 何时需要指定泛型:Scala编程指南为什么使用泛型类型安全 何时需要指定泛型结论 何时需要指定泛型:Scala编程指南 在Scala编程中,泛型是一种强大的特性,它允许开发者编写灵活且类型安全的代码。然而,正…

VMware虚拟机更换引导顺序

前言 我用wmware装了黑群晖测试,将img转成vmdisk的格式之后发现系统引导盘之后1G,有点太小了 我准备把wmware的黑群晖系统迁移到新添加的虚拟磁盘里 1.登录黑群晖的SSH 请先在黑群晖的控制面板中的终端机和SNMP里面启用SSH功能,才能使用ss…

天梯算法Day3整理

浮点数解析 炸鱼题掠过 冲突值 题面 解析 方法一 —— 并查集 按照边值排序,然后按边值从大到小遍历,通过并查集判断能否将所有点无冲突地归于两个集合。在判断时,若有两个点不得不产生冲突,则输出这两个点之间的边值并结束。…

Java后端需要掌握的前端知识

第一章. HTML 与 CSS HTML 是什么&#xff1a;即 HyperText Markup language 超文本标记语言&#xff0c;咱们熟知的网页就是用它编写的&#xff0c;HTML 的作用是定义网页的内容和结构。 HyperText 是指用超链接的方式组织网页&#xff0c;把网页联系起来Markup 是指用 <…

【QT入门】 QListWidget各种常见用法详解之图标模式

往期回顾 【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客 【QT入门】 QTabWidget各种常见用法详解-CSDN博客 【QT入门】 QListWidget各种常见用法详解之列表模式-CSDN博客 【QT入门】 QListWidget各种常见用法详解之图标模式 QListWidget有列表和图标两种显…

在低成本loT mcu上实现深度神经网络端到端自动部署-深度神经网络、物联网、边缘计算、DNN加速——文末完整资料

目录 前言 DNN 量化神经网络 并行超低功耗计算范式 面向内存的部署 结果 原文与源码下载链接 REFERENCES 前言 在物联网极端边缘的终端节点上部署深度神经网络( Deep Neural Networks&#xff0c;DNNs )是支持普适深度学习增强应用的关键手段。基于低成本MCU的终端节点…

Arcgis获取乡镇矢量

现有全中国乡镇矢量边界&#xff08;2023年&#xff09;&#xff0c;如何获取其中的自己所需的子区域&#xff08;一个小镇&#xff09;呢&#xff1f; 可以先去查一下自己的镇代码&#xff0c;我查的是东马圈镇代码 打开分析工具-提取分析-筛选 刚刚记下了FID 验证一下&am…

SpringBoot学习记录

SpringBoot是用于加速Spring开发的。 我们先来看看如何使用SpringBoot来创建一个基于Web的程序&#xff0c;可以发现相较于SpringMVC其有巨大改变。 3.开发控制器类 GetMapping("/{id}")public String getById(PathVariable Integer id){System.out.println("…

关于Linux中的history命令

前言&#xff1a;本文内容为实操学习记录&#xff0c;不具有调研价值&#xff0c;仅供参考&#xff01; 正文&#xff1a; 接触过Linux操作系统的朋友一般都知道history命令&#xff0c;直接输入history命令&#xff0c;会显示当前用户的历史输入记录。这个原理是linux会记录我…

了解一下npm i的流程与原理

流程 执行npm install&#xff0c;先判断有无lock文件。 1、没有lock文件。会先根据依赖构建出扁平的依赖关系决定下哪些包。新版本的依赖关系是扁平化的&#xff0c;老版本是树结构&#xff0c;可能会出现依赖重复安装的问题&#xff0c;老版本示意图如下&#xff1a; 作为前…

Python车道线偏离预警

程序示例精选 Python车道线偏离预警 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python车道线偏离预警》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用推…

C语言-printf和scanf的区别详解

fprintf&#xff08;指定的格式写到文件里面。适用于所有的输出流&#xff0c;可以打印在屏幕上面&#xff09;fscanf&#xff08;指定的格式读取出来&#xff0c;适用于所有的输入流&#xff09; fprintf&#xff08;指定的格式写到文件里面&#xff09; 两个函数是一样的 打开…

EasyRecovery2024 安装步骤及功能特色介绍

在数字化时代&#xff0c;数据的重要性不言而喻。无论是个人用户还是企业用户&#xff0c;都可能面临数据丢失的风险。为了应对这一挑战&#xff0c;EasyRecovery作为一款专业的数据恢复软件&#xff0c;成为了越来越多人的选择。 EasyRecovery以其强大的功能和易用的界面&…

关于Kubernetes-v1.23.6-资源调度-StatefulSet-OnDelete当删除的时候才更新

前面提到的普通的滚动更新&#xff0c;都是修改完sts立即就会发生更新操作 而还有一种更新的策略为&#xff0c; OnDelete&#xff0c;即只有在 pod 被删除时会进行更新操作 还是先看一下web这个sts的当前更新策略如下&#xff1a; 这里我们修改&#xff0c;更新策略&#xf…

缓存数据库的意义、作用与种类详解

在现代计算机应用中&#xff0c;数据访问的性能往往是关键因素之一。随着数据量的增加和复杂应用的兴起&#xff0c;数据库的访问成本逐渐成为瓶颈。为了提高应用程序的响应速度、减轻后端数据库的负载压力&#xff0c;缓存数据库应运而生。 什么是缓存数据库&#xff1f; 缓存…

线程与同步

目录 一&#xff0c;线程概念 1&#xff0c;什么是线程 2&#xff0c;Linux 下的线程 3&#xff0c;POSIX 线程库 二&#xff0c;线程同步 1&#xff0c;数据不一致问题 2&#xff0c;如何解决这类问题 3&#xff0c;死锁 三&#xff0c;线程同步的运用 1&#xff0c…

知识图谱与大数据:区别、联系与应用

目录 前言1 知识图谱1.1 定义1.2 特点1.3 应用 2 大数据2.1 定义2.2 应用 3. 区别与联系3.1 区别3.2 联系 结语 前言 在当今信息爆炸的时代&#xff0c;数据成为了我们生活和工作中不可或缺的资源。知识图谱和大数据是两个关键概念&#xff0c;它们在人工智能、数据科学和信息…