论文精读:UFO: A UI-Focused Agent for Windows OS Interaction

UFO : A UI-Focused Agent for Windows OS Interaction

Status: Reading
Author: Bo Qiao, Chaoyun Zhang, Dongmei Zhang, Liqun Li, Minghua Ma, Qinglong Zhang, Qingwei Lin, Saravan Rajmohan, Shilin He, Si Qin, Xiangyu Zhang, Yu Kang
Institution: 微软(Microsoft)
Publisher: arXiv
Summary: UFO 是一种以 UI 为中心的 Agent,利用 GPT-Vision,针对 Windows 操作系统上的应用程序量身定制,能够独立完成用户请求。UFO 采用了双 Agent 框架,一个 Agent 用于仔细观察和分析应用程序的GUI和控制信息,另一个 Agent 则是负责选择合适的应用程序。这使得 UFO 能够在各个应用程序内以及跨应用程序进行操作,以满足用户请求。
Score /5: ⭐️⭐️⭐️⭐️
Type: Paper
链接: https://arxiv.org/abs/2402.07939
代码是否开源: 开源
代码链接: https://github.com/microsoft/UFO


论文精读

引言

基于 LLM 的 Agent 极大地扩展了 LLM 的计划、观察、记忆和响应行动的能力,能够通过模拟类人决策过程来承担复杂的任务。此外,多智体则是一个更有效和可扩展的框架,有利于根据各自的优势将任务分配给各个 Agent,促进 Agent 之间的协作或竞争,以有效地完成复杂的任务。

将多模态大模型用于导航和控制应用程序 GUI 目前已经成为一个突出且新兴的研究领域,这篇论文提出的 UFO 就是一个基于多智体的,专门用于满足用户请求和在 Windows 操作系统中操作应用程序的 Agent。UFO 采用双 Agent 框架,一个 Agent 用于 GUI 和观察和控制,另一个 Agent 则是负责选择合适的应用程序。

之所以设置成两个 Agent,是因为日常生活中用户的请求经常要跨越多个应用程序,UFO 结合了应用程序切换机制,允许其在需要时切换到不同的应用程序。

作者还对 UFO 进行了多功能测试,针对9个常用的Windows应用程序,精心设计了50项任务,涵盖了反映用户日常需求的各种场景。

方法

UFO 能够理解用户以自然语言表达的请求,并将其分解为一系列逐步的子任务,然后观察应用程序的 UI 屏幕截图,并对其控制元素进行操作以实现总体目标。

整体框架

UFO 的框架如下图所示,包括两个 Agent:

  1. 应用程序选择Agent(AppAgent),其任务是选择应用程序来满足用户请求。当请求跨越多个应用程序并且任务在前一个应用程序中部分完成时,该Agent还可以切换到不同的应用程序;
  2. 动作选择Agent(ActAgent),负责在所选应用程序上迭代执行动作,直到任务在特定应用程序内成功结束。

在这里插入图片描述

两个Agent都利用 GPT-Vision 的多模态来理解应用程序 UI 并满足用户的请求,利用控制交互模块来执行动作,从而对系统产生切实的影响。

AppAgent的输入为完整的桌面截图和可供参考的可用应用程序列表,方便AppAgent的决策过程。随后,AppAgent 选择合适的应用程序并制定全面的全局计划来完成请求,并且将该计划传递给 ActAgent。

确定了合适的应用程序之后,UFO会将其聚焦在桌面上。然后 ActAgent 启动,在每个操作选择步骤之前,UFO 都会捕获当前应用程序 UI 窗口的屏幕截图,并注释所有可用控件。UFO 还会记录每个控件的信息,以供 ActAgent 观察。ActAgent 的任务是选择要操作的控件,然后通过控制交互模块选择要在所选控件上执行的特定操作。该决定基于 ActAgent 的观察、其先前的计划以及其操作记忆。

执行后,UFO 为未来步骤构建局部计划,并继续进行下一个操作选择步骤。此递归过程将持续进行,直到用户请求在所选应用程序中成功完成,用户请求的一个阶段就此结束。

在用户请求跨越多个应用程序的场景中,ActAgent完成当前应用程序的任务后会将任务委托给AppAgent,切换到不同的应用程序,从而启动第二阶段的请求。这个迭代过程一直持续到用户请求完全完成为止。

AppAgent

AppAgent负责选择一个活动的应用程序来满足用户请求或在必要时切换到新的应用程序。此外,AppAgent还要构建一个全面的全局计划来协调整个任务。

在这里插入图片描述

AppAgent的输入:

  1. 用户请求(User Request)
  2. 桌面截图(Desktop Screenshots):如果有多个屏幕的话,则会拼接成一张;
  3. 应用程序信息(Application Information):可用的活动应用程序详细信息的列表,包括其名称和类型;
  4. 记忆(Memory):包括之前的步骤、评论、行动和执行结果;
  5. 示例(Examples):应用程序选择的文本示例,作为任务的演示。

AppAgent的输出:

  1. 观察(Observation):当前桌面窗口截图的详细描述;
  2. 思路(Thoughts):完成给定任务所需的步骤,遵循思想链 (CoT) 范式;
  3. 所选应用程序(Selected Application):所选应用程序的标签和名称;
  4. 状态(Status):任务状态,表示为“CONTINUE”或“FNISH”;
  5. 全局计划(Global Plan):完成用户请求的后续行动计划,通常是全局且粗粒度的计划;
  6. 评论(Comment):要提供的附加评论或信息,包括简要的进度摘要和需要强调的要点。

AppAgent判断任务的状态,如果认为任务完成则输出“FINISH”。

ActAgent

ActAgent作为AppAgent之后的下游实体,负责在选定的应用程序上执行特定操作来满足用户请求。
在这里插入图片描述

ActAgent的输入:

  1. 用户请求(User Request)
  2. 桌面截图(Desktop Screenshots):包括三部分:上一帧截图、当前帧干净的截图和当前帧标注过的截图(增加了控件);
  3. 控制信息(Control Information):为所选应用程序中的操作启用的控件的名称和类型的列表;
  4. 记忆(Memory):包括之前的推理、评论、行动和执行结果;
  5. 示例(Examples):动作选择的文本示例,作为演示。

跟AppAgent不同的是,桌面截图这一块ActAgent包括了三部分:

  1. 上一张屏幕截图中最后选择的控件以红色矩形(即 )突出显示,有助于理解最后一步的操作执行情况并分析该操作的影响;
  2. 干净的屏幕截图可以了解应用程序的状态,不会受到注释的阻碍;
  3. 带注释的屏幕截图,用数字标记每个控件,有助于更好地理解 UI 元素的功能和位置。

此外,记忆模块在ActAgent中有两个关键作用。首先,它作为提醒工具,使ActAgent能够分析过去的行动,减少重复无效行动的可能性。其次,它建立了跨应用程序通信的重要渠道。执行结果(如从文档中提取的文本或图像描述)存储在记忆模块中。ActAgent可以在需要时有选择地整合这些信息,比如在撰写包含不同来源文本的邮件时。

ActAgent的输出:

  1. 观察(Observation):当前应用程序窗口的屏幕截图的详细描述,以及最后操作是否生效的分析;
  2. 思路(Thoughts):当前行动决策背后的逻辑思维和基本原理过程;
  3. 所选控件(Selected Control):为操作选择的控件的标签和名称;
  4. 操作(Function):应用于控件的特定操作函数及其参数;
  5. 状态(Status):任务状态
    1. CONTINUE:需要进一步操作;
    2. FINISH:任务已完成;
    3. PENDING:当前操作需要用户确认;
    4. SCREENSHOT:需要进一步的屏幕截图来注释;
    5. APP_SELECTION:当任务在当前应用程序上完成并且需要切换到不同的应用程序时;
  6. 局部计划(Local Plan):为未来的行动制定更精确、更细粒度的计划,以完全满足用户的要求;
  7. 评论(Comment):其他意见或信息,包括简要的进度摘要、重点内容或计划的更改。

控制交互

为了在应用程序控件上执行 ActAgent 所选择的操作,UFO 将其转换为可执行操作,编写 pywinauto 代码对控件进行操作。UFO 利用 pywinauto 检查应用程序的所有可操作控件,检索它们的精确位置和边界框以方便注释。

UFO 重点关注以下10种控件类型:

控件描述
Button按钮是用户界面元素,用户可以与之交互以触发操作。单击该按钮通常会启动特定操作或命令。
Edit编辑控件允许用户输入和编辑文本或数字数据。它通常用于用户可以键入信息的字段,例如文本框或搜索栏。
TabItem选项卡项是选项卡控件的一部分,用于将内容组织到多个页面中。用户可以在不同的选项卡项之间切换以访问不同的信息或功能集。
Document文档控件代表文档视图体系结构中的文档或页面。它通常用于显示和管理文档或大文本块。
ListItem列表项是列表控件中的元素,以列表格式呈现数据。用户可以选择列表中的各个项目并与之交互。
MenuItem菜单项是菜单控件的一部分,提供命令或选项列表。用户可以单击菜单项来触发特定操作或浏览应用程序功能。
TreeItem树项是树控件中的一个节点,以分层结构组织信息。用户可以展开或折叠树项目以浏览分层数据集。
ComboBox组合框是文本框和下拉列表的组合。它允许用户直接在文本框中键入值,或通过打开下拉菜单从预定义列表中进行选择。
Hyperlink超链接使用户能够导航到另一个位置或资源。它们通常用于提供对外部网站、文档或应用程序中特定部分的轻松访问。
ScrollBar滚动条允许用户滚动浏览大于可见区域的内容。它提供了一种在窗口或控件内垂直或水平导航的方法。

对于应用于控件的具体功能,作者选择了pywinauto支持的常见且广泛使用的鼠标操作,以及开发了定制的动作。

操作描述
Click用鼠标单击控制项,可以选择左键单击或右键单击、单击或双击
SetText将文本输入到可编辑控件中,模仿键盘行为。
Annotate捕获当前应用程序窗口的屏幕截图并在 GUI 上注释控制项。
Summary根据干净的屏幕截图总结当前应用程序窗口的观察结果。
GetText检索控件的文本信息。
Scroll垂直或水平滚动控制项以使隐藏内容可见。

在每一步中,ActAgent 都会从此可用列表中选择一个操作,以在应用程序中选定的 UI 控件上执行。

Special Design Consideration

  1. 互动模式

UFO 为用户提供了进行交互式和迭代交互的能力,而不是坚持一次性完成。完成任务后,用户可以灵活地请求UFO增强之前的任务,建议UFO承担全新的任务,或者执行操作来协助UFO完成可能不熟练的任务,例如提供密码输入。

  1. 动作定制

控制交互模块的列表并不详尽,并且可以超出 Windows UI 自动化的限制进行高度扩展和自定义。这种可扩展性对于定制框架以满足特定用户需求至关重要,允许合并键盘快捷键、宏命令、插件等功能。

例如summary()就是一个例子,它利用UFO的多模态能力来根据需要观察和描述屏幕截图。

  1. 控制过滤

在应用程序的 GUI 中,Windows UI Automation 可以检测数百个控制项,每个控制项都可用于操作。然而,对所有这些控件进行注释可能会使应用程序 UI 屏幕截图变得混乱,阻碍单个项目的视图并生成大量列表,这可能会给 UFO 带来挑战。一些控件可能不太满足用户请求,因此过滤机制对于排除某些控件并简化 UFO 决策过程至关重要。

UFO采用双级控制滤波方法,包括硬级和软级。在硬级别,候选控件基于具有高相关性和流行度的特定控件类型进行约束,软过滤机制,使UFO能够动态确定是否重新选择更简洁的指定控件列表。当 UFO 感知到过多的控件时,就会触发这种自适应过滤方法。

  1. 计划反思

应用程序 UI 的实际状态可能并不总是与预期条件一致。例如,如果 UFO 最初计划在下一步中单击“新电子邮件”按钮,但该按钮在当前 UI 中不可见,则 UFO 可能需要首先导航到“主页”,然后找到“新电子邮件” “ 按钮。因此,计划和行动都应做出相应调整。

UFO 通过提示词在每一个决策步骤中不断修改其计划,让它根据需要可以偏离原来的航向。这种自适应方法增强了 UFO 对不断变化的应用状态的响应能力。

  1. 安全机制

系统内某些操作的敏感性,例如文件删除等操作导致的不可逆转的更改。UFO 可以认识到这些潜在风险,采用了安全机制,在执行此类操作之前寻求用户确认。

敏感操作描述
Send Action for a Message or Email启动“发送”操作(例如单击发送按钮)被视为敏感操作,因为已发送的消息或电子邮件将无法撤回。
Deleting or Modifying Files and Folders涉及删除或修改文件和文件夹的操作,尤其是位于关键系统目录或包含重要用户数据的文件和文件夹。
Closing a Window or Application由于可能导致数据丢失或系统崩溃,关闭窗口或应用程序被标记为敏感。
Accessing Webcam or Microphone未经用户明确同意而访问网络摄像头或麦克风被视为敏感行为,以解决隐私问题。
Installing or Uninstalling Software与安装或卸载软件应用程序相关的操作由于对系统配置和潜在安全风险的影响而被标记为敏感。
Browser History or Password Retrieval检索敏感用户数据(例如浏览器历史记录或存储的密码)被视为敏感操作,可能导致隐私泄露。

实验

基准、基线和指标

为了全面评估各种 Windows 应用程序的性能,作者开发了一个名为 WindowsBench 的基准测试。该基准测试包含 50 个用户请求,涵盖日常任务中常用的 9 个流行 Windows 应用程序。选定的应用程序包括 Outlook、照片、PowerPoint、Word、Adobe Acrobat、文件资源管理器、Visual Studio Code、微信和 Edge 浏览器。这些应用程序满足工作、交流、编码、阅读、网页浏览等不同目的,保证了评估的多样性和全面性。对于每个应用程序,作者设计了 5 个不同的请求,另外 5 个请求涉及跨多个应用程序的交互。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

鉴于缺乏现有的 Windows Agent Baseline,作者选择 GPT-3.5 和 GPT-4 作为基准模型。由于这些模型缺乏直接与应用程序交互的能力,因此通过提示词指示它们提供分步说明来完成用户请求。然后,一个人充当他们的代理人来执行这些操作。

在这里插入图片描述

在评估指标上,作者对每个请求从四个角度评估:成功率、步骤、完成率和保障率。成功指标确定代理是否成功完成请求。步骤是指代理完成任务所采取的行动数量,作为效率的指标。完成率是正确步骤数与总步骤数的比率。最后,安全率衡量的是当请求涉及敏感操作时,UFO 请求用户确认的频率。考虑到 GPT-V 潜在的不稳定性,每次可能会产生不同的输出,我们对每个请求进行三次测试,并选择完成率最高的一个。

在这里插入图片描述

局限性

  1. 可用的 UI 控件和操作目前受到 pywinauto 和 Windows UI Automation支持的限制。 UFO 目前不支持偏离此标准和后端的应用程序和控件。
  2. UFO 在探索不熟悉的应用程序 UI 时面临的挑战,这可能是利基或不常见的。在这种情况下,UFO 可能需要大量时间来导航和识别正确的操作。为了解决这个问题,我们建议利用在线搜索引擎的知识作为 UFO 的外部知识库。分析搜索结果中的文本和基于图像的指南将使 UFO 能够提炼出更精确和详细的计划来完成对不熟悉的应用程序的请求,从而增强其适应性和通用性。

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

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

相关文章

骑行之旅,骑行之旅,骑行之旅

骑行之旅其一:晨曦破晓普吉路,铁骑奔腾向远方。小桃园中寻雅趣,保利春湖泛波光。落水洞边环水库,田冲村里话家常。秧草塘畔风情美,白泥塘中歌声扬。陡普鲁村享盛宴,AA 制下笑语长。赛道体验激情涌&#xff…

有什么免费的文字转语音软件?这5个文字转语音工具超简单

听说你对最近备受瞩目的文字转语音技术很感兴趣? 文字转语音技术,就是一种将文本转换为自然语音的技术,它让机器发音听起来就像真人一样。那么,市面上的文字转语音软件种类繁多,选择起来就有些困难了。 别担心&#…

【cocos creator】进度条控制脚本,支持节点进度条,图片进度条,进度条组件,和进度文字展示

进度条控制脚本,支持节点进度条,图片进度条,进度条组件,和进度文字展示 const { ccclass, property, menu } cc._decorator;let text_type cc.Enum({"20%": 0,"1/5": 1,"差值": 2,"自定义…

开放式耳机怎么选择!教你几招!2024开放式蓝牙耳机推荐

在面对市场上琳琅满目的开放式耳机时,许多用户可能会感到难以抉择。作为一名开放式耳机的爱好者,我根据自己的实际使用体验,整理了一些我认为值得推荐的开放式耳机,希望能为正在寻找合适耳机的朋友们提供一些参考和帮助。我将为大…

Nodejs+Websocket+uniapp完成聊天

前言 最近想做一个聊天,但是网上的很多都是不能实现的,要么就是缺少代码片段很难实现websocket的链接,更别说聊天了。自己研究了一番之后实现了这个功能。值得注意的是,我想在小程序中使用socket.io,不好使&#xff0…

英语学习笔记24——Give me/us/him/her/them some ...

Give me/us/him/her/them some … 给我/我们/他/她/他们一些…… 词汇 Vocabulary desk n. 课桌(有书桌堂),写字台 复数:desks 搭配:desk mate 同桌    构成:desk mate 桌子上的伙伴 同桌    cl…

深度学习模型keras第二十三讲:在KerasCV中使用SAM进行任何图像分割

1 SAM概念 ###1.1 SAM定义 Segment Anything Model(SAM)是一种基于深度学习的图像分割模型,其主要特点包括: 高质量的图像分割:SAM可以从输入提示(如点、框、文字等)生成高质量的对象掩模&am…

【Hive SQL 每日一题】行列转换

文章目录 行转列列传行 行转列 测试数据: DROP TABLE IF EXISTS student_scores;CREATE TABLE student_scores (student_id INT,subject STRING,score INT );INSERT INTO student_scores (student_id, subject, score) VALUES (1, Math, 85), (1, English, 78), (…

高效爬取Reddit:C#与RestSharp的完美结合

介绍 在数据驱动的时代,网络爬虫已经成为获取网页数据的重要工具。Reddit,作为全球最大的社区平台之一,以其丰富的用户生成内容、广泛的讨论话题和实时的信息更新吸引了大量用户。对于研究人员和开发者而言,Reddit提供了宝贵的数…

VMware Workstation 虚拟机安装 ubuntu 24.04 server 详细教程 服务器安装图形化界面

1 阿里云下载 ubuntu-releases安装包下载_开源镜像站-阿里云 2 打开vmware,新建虚拟机 3 选择下载的镜像,开始安装 3 光驱这里修改下 4 重新启动,安装图形化界面 #更新软件包列表 sudo apt-get update #安装Ubuntu图形桌面 sudo apt install ubuntu-desktop 5 安…

南京沁恒微USB HUB CH334/CH335多种封装规格选择,外围简单,价格还美丽

概述: CH334 和 CH335 是符合 USB2.0 协议规范的 全速,下行端口支持 USB2.0 高速 480Mbps 个 TT 分时调度 4 个下行端口),还支持高性能的 工业级设计,外围精简,可应用于计算机和工控机主板 特点&#xff1…

单细胞分析(Signac): PBMC scATAC-seq 整合

引言 在本教学指南中,我们将探讨由10x Genomics公司提供的人类外周血单核细胞(PBMCs)的单细胞ATAC-seq数据集。 加载包 首先加载 Signac、Seurat 和我们将用于分析人类数据的其他一些包。 if (!requireNamespace("EnsDb.Hsapiens.v75&qu…

数据源管理|JDBC|JdbcTemplate|MybatisPlusGenerator

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 复杂的项目常常会涉及到多数据源的配置,解决方案也是有很多。但这篇文章不是讲这个的&…

el-table 实现嵌套表格的思路及完整功能代码

要实现的需求是这样的: 本来我是用 el-table 的 :span-method 方法实现的,但发现合并起来有问题,跟我的需求差距有些大,于是我想到了嵌套表格。但是嵌套完之后的样子也是很奇怪: 不要气馁,思路还是对的&a…

MacOS使用PhpStorm+Xdebug断点调式

基本环境: MacOS m1 PhpStorm 2024.1 PHP7.4.33 Xdebug v3.1.6 1、php.ini 配置 [xdebug] zend_extension "/opt/homebrew/Cellar/php7.4/7.4.33_6/pecl/20190902/xdebug.so" xdebug.idekey "PHPSTORM" xdebug.c…

SpringBoot集成Logback将日志写入文件夹

一、logback简介: 目前比较常用的ava日志框架:Logback、log4j、log4j2、JUL等等。 Logback是在log4j的基础上重新开发的一套日志框架,是完全实现SLF4J接口API(也叫日志门面)。 Logback 的架构非常通用,可以应用于不同的环境。目前logback分为…

【人工智能项目】小车障碍物识别与模型训练(完整工程资料源码)

实物演示效果: 一、绪论: 1.1 设计背景 小车障碍物识别与模型训练的设计背景通常涉及以下几个方面: 随着自动驾驶技术的发展,小车(如无人驾驶汽车、机器人等)需要能够在复杂的环境中自主导航。障碍物识别是实现这一目标的关键技术之一,它允许小车检测并避开路上的障碍物…

C++-函数

函数(Function):是一个提前封装好的、可重复使用的、完成特定功能的独立代码单元。 特点:提前封装、可重复使用的、完成特定功能 将针对特定功能的、有重复使用需求的代码,提前封装到函数内, 在需要的时候…

IEN在Web3.0中的性能与安全优势

随着Web3.0的快速发展,优化网络基础设施变得至关重要。智能生态网络(Intelligent Ecological Network, IEN)作为新一代网络架构,在提升性能与增强安全方面展现出巨大潜力。本文将深入探讨IEN在Web3.0中的技术优势,并展…

Qt输入输出类使用总结

Qt输入输出类简介 QTextStream 类(文本流)和 QDataStream 类(数据流)Qt 输入输出的两个核心类,其作用分别如下: QTextStream 类:用于对数据进行文本格式的读/写操作,可在 QString、QIODevice或 QByteArray 上运行,比如把数据输出到 QString、QIODevice 或 QByteArray 对象…