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

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.rhkb.cn/news/295741.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 Python 本地客户端操作读写云服务器 Redis 缓存数据库详细教程(更新中)

Redis 基本概述 Redis(Remote Dictionary Server)是一个开源的使用 ANSI C 语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构服务器,因为值(value…

【OpenCV】 基础入门(一)初识 Mat 类 | 通过 Mat 类显示图像

🚀 个人简介:CSDN「博客新星」TOP 10 , C/C 领域新星创作者💟 作 者:锡兰_CC ❣️📝 专 栏:【OpenCV • c】计算机视觉🌈 若有帮助,还请关注➕点赞➕收藏&#xff…

部署项目遇到的各种问题总结

文章目录 前言一、后端问题 jar包运行出现错误宝塔面板使用jdk17二、数据库问题 版本问题三、前端问题 连不上后端总结 前言 在做完项目之后,为了让别人访问到自己的网站,就需要部署前端后端以及数据库,但是在部署的过程中出现了各种问题和困…

docker 部署 nali 开源 IP 地理信息归属查询软件

前言 早前用到一个小巧开源的 IP 归属地查询软件,官方提供了 Dockerfile,使用了一段时间觉得还不错,非常简单便捷。 部署 docker 启动 由于该项目会在首次启动自动下载 IP 数据库,所以最好通过挂载目录的方式,将数据库目录挂在到本地,避免…

【C语言】2048小游戏【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 一、游戏描述: 2048是一款数字益智类游戏,玩家需要使用键盘控制数字方块的移动,合并相同数字的方块,最终达到数字方块上出现“2048”的目标。 每次移动操作,所…

C++进阶--C++11(1)

C11是C编程语言的一个版本,于2011年发布。C11引入了许多新特性,为C语言提供了更强大和更现代化的编程能力。这篇文章将对C11的一些新增特性进行讲解和实际应用场景。 统一的列表初始化 {}初始化 在C98中,使用{}符号的一般只仅限于对数组和…

基于蚁群算法的三维路径规划(matlab实现)

作品简介 1 理论基础 1.1 三维路径规划问题概述 三维路径规划指在已知三维地图中,规划出一条从出发点到目标点满足某项指标最优,并且避开了所有三维障碍物的三维最优路径。现有的路径规划算法中,大部分算法是在二维规划平面或准二维规划平面…

今日头条signature参数js逆向(爬虫)

今日头条是ajax动态加载 话不多说,直接上代码 windowglobal;window.location{"ancestorOrigins": {},"href": "https://www.toutiao.com/","origin": "https://www.toutiao.com","protocol": "…

连接Redis不支持集群错误,ERR This instance has cluster support disabled,解决方案

1. 问题背景 调整redis的配置后,启动程序时, 会报如下错误: [redis://172.16.0.8xxx]: ERR This instance has cluster support disabledSuppressed: io.lettuce.core.RedisCommandExecutionException: ERR This instance has cluster supp…

【C++】二分查找算法(模板)

重点 只需要记住两点: 1.left right 时,一定就是最终结果(包括找不到目标值),无需再次判断,如果判断就会死循环 2.求中点如果是求左端点 mid left (right - left)/2 如果是求右端点 mid left (right -…

MATLAB 自定义均值滤波 (53)

MATLAB 自定义均值滤波 (53) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 均值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云均值滤波算法,具体效果如下所示: 均值滤波前: 均值滤波后:…

计算机网络 - 基础篇总结

TCP/IP 网络模型有哪几层? 1.应用层 为用户提供应用功能 2.传输层 负责为应用层提供网络支持 使用TCP和UDP 当传输层的数据包大小超过 MSS(TCP 最大报文段长度) ,就要将数据包分块,这样即使中途有一个分块丢失或损坏…

算法学习——LeetCode力扣图论篇2(1020. 飞地的数量、130. 被围绕的区域、827. 最大人工岛)

算法学习——LeetCode力扣图论篇2 1020. 飞地的数量 1020. 飞地的数量 - 力扣(LeetCode) 描述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相…

【linux】lsof命令使用

1. 功能 lsof list open files, 列出被进程所使用的文件名称。 2. 基础语法 3. 参数含义 参数含义-a过滤出多个选项要同时满足的文件-U仅列出UNIX-like系统的socket文件类型。-u指定用户,比如-u atiaisi,会把用户atiaisi相关的进程使用的文件列出来。…

游戏运营分析:如何在新游戏上线初期实现精细化运营?

一、背景介绍 在当今的手游市场中,每一款新游戏的发布都如同踏上一段充满未知与挑战的探险之旅。游戏刚上线时,运营情况往往如同飘摇的小船,随时可能受到风浪的侵袭。此时,如何准确地找到问题所在,为游戏的健康运营和持…

SAD法(附python实现)和Siamese神经网络计算图像的视差图

1 视差图 视差图:以左视图视差图为例,在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标 视差图和深度图: z f b d z \frac{fb}{d} zdfb​ 其中 d d d 是视差, f f f 是焦距, b b…

openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint

文章目录 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint254.1 功能描述254.2 语法格式254.3 参数说明254.4 示例 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint 254.1 功能描述 指明子链接块的名称。…

《书生·浦语大模型全链路开源开放体系》学习笔记

书生浦语大模型全链路开源开放体系-学习笔记 大模型成为发展通用人工智能的重要途径专用模型通用大模型 书生大模型开源历程InternLM2回归语言建模的本质主要亮点性能全方位提升强大的内生计算能力 从模型到应用典型流程全链条开源开放体系数据数据集获取预训练微调XTuner 评测…

【Go】四、包名、访问范围控制、标识符、运算符

文章目录 1、_2、包名3、命名大小影响可访问范围4、运算符5、获取终端输入 1、_ 下划线"_"本身在Go中是一个特殊的标识符,称为空标识符用于忽略某个值 1)忽略导入的没使用的包 2)忽略某个返回值 2、包名 main包是程序的入口包&a…

vulnhub pWnOS v2.0通关

知识点总结: 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码,查看模块信息 环境准备 攻击机:kali2023 靶机:pWnOS v2.0 安装地址:pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到,该靶…