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

news2024/11/20 20:28:16

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 能够提炼出更精确和详细的计划来完成对不熟悉的应用程序的请求,从而增强其适应性和通用性。

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

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

相关文章

Xline 0.7重构性能分析总述

1、重构概述 在Xline 0.7.0中,我们完成了对Xline代码库中进行了一次较大的重构。这次重构在某些性能测试中甚至使得Xline获得了近20倍的性能提升。在本文中我会讲解Xline中重构后命令执行流程的新设计,以及我们是如何优化Xline的性能的。 2、etcd的性能…

Map遍历、反射、GC

map的遍历 用foreach遍历 HashMap<Character,Integer> map new HashMap<>();map.put(A,2);map.put(B,3);map.put(C,3);for (Map.Entry<Character,Integer> entry: map.entrySet()) {char key entry.getKey();int value entry.getValue();System.out.prin…

Nacos 进阶篇---服务发现:服务之间请求调用链路分析(六)

一、引言 前面几个章节把Nacos服务注册从客户端到服务端&#xff0c;整个流程源码都分析了一遍。 本章节我们来分析&#xff0c;order-service、stock-service 完成Nacos注册后&#xff0c;可以通过Feign的方式&#xff0c;来完成服务之间的调用。那它的底层是如何实现的&am…

linux下的docker使用

docker是什么&#xff0c;docker翻译过来的意思就是码头工人&#xff0c;顾名思义&#xff0c;docker本质上就是一个搬运工&#xff0c;只不过从搬运货物改成了搬运程序&#xff0c;使搬运的不同的程序能够独立的运行在码头上的不同容器内&#xff0c;互不干扰&#xff0c;而他…

不使用ScrollRect 和 HorizontalLayoutGroup做的横向循环列表

一、 版本一 1.前情提要 因为需要展示300多个相同的物体&#xff0c;但是如果全部放在场景内&#xff0c;运行起来会很卡&#xff0c;所以想到了用无限循环&#xff0c;然后动态填充不同的数据。 做的这个没有用HorizontalLayoutGroup 和 ScrollRect 。 1.没有使用Horizontal…

Git原理及常用命令小结——实用版(ing......)、Git设置用户名邮箱

Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时&#xff0c;为了提高效率&#xff0c;如果文件没有被修改&#xff0c;Git不再…

JSON的序列化与反序列化以及VSCode执行Run Code 报错

JSON JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式。 JSON格式 { "name":"金苹果", "info":"种苹果" } 一个对象&#xff1a;由一个大括号表示.括号中通过键值对来描述对象的属性 (可以理解为, 大…

操作系统总结(2)

目录 2.1 进程的概念、组成、特征 &#xff08;1&#xff09;知识总览 &#xff08;2&#xff09;进程的概念 &#xff08;3&#xff09;进程的组成—PCB &#xff08;4&#xff09;进程的组成---程序段和数据段 &#xff08;5&#xff09;程序是如何运行的呢&#xff1f…

Android和flutter交互,maven库的形式导入aar包

记录遇到的问题&#xff0c;在网上找了很多资料&#xff0c;都是太泛泛了&#xff0c;使用后&#xff0c;还不能生效&#xff0c;缺少详细的说明&#xff0c;或者关键代码缺失&#xff0c;我遇到的问题用红色的标注了 导入aar包有两种模式 1.比较繁琐的&#xff0c;手动将aar…

Java8-HashMap实现原理

目录 HashMap原理 hashmap的put流程&#xff1a; HashMap扩容机制&#xff1a; HashMap的寻址算法&#xff1a; HashMap原理 HashMap的底层数据结构是由&#xff0c;数组&#xff0c;链表和红黑树组成的。 当我们往HashMap中put元素的时候&#xff0c;利用key的hashCode重…

HC32F103BCB使用SPI获取AS5040编码器数据

1.AS5040介绍 2.硬件电路 硬件上使用SSI通信方式连接。 3.配置硬件SPI 查看手册&#xff0c;AS5040时序 可以看到在空闲阶段不发生数据传输的时候时钟(CLK)和数据(DO)都保持高电位(tCLKFE阶段)&#xff0c;在第一个脉冲的下降沿触发编码器载入发送数据&#xff0c;然后每一个…

【Unity Shader入门精要 第9章】更复杂的光照(四)

1. 透明度测试物体的阴影 对于物体有片元丢弃的情况&#xff0c;比如透明度测试或者后边会讲到的消融效果&#xff0c;使用默认的 ShadowCaster Pass 会产生问题&#xff0c;这是因为该Pass在生成阴影映射纹理时&#xff0c;没有考虑被丢弃的片元&#xff0c;而是使用完整的模…

FTP文件传输议

FTP是一种文件传输协议&#xff1a;用来上传和下载&#xff0c;实现远程共享文件&#xff0c;和统一管理文件 工作原理&#xff1a;用于互联网上的控制文件的双向传输是一个应用程序。工作在TCP/IP协议簇的&#xff0c;其传输协议是TCP协议提高文件传输的共享性和可靠性&#…

阅读笔记——《AFLNeTrans:状态间关系感知的网络协议模糊测试》

【参考文献】洪玄泉,贾鹏,刘嘉勇.AFLNeTrans&#xff1a;状态间关系感知的网络协议模糊测试[J].信息网络安全,2024,24(01):121-132.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。 目录 摘要 1、引言 2、背景及动机 2.1、网络协议实现程…

正点原子LWIP学习笔记(二)MAC简介

MAC简介 一、MAC简介&#xff08;了解&#xff09;二级目录三级目录 二、ST的ETH框架&#xff08;了解&#xff09;三、SMI站管理接口&#xff08;熟悉&#xff09;四、介质接口MII、RMII&#xff08;熟悉&#xff09; 一、MAC简介&#xff08;了解&#xff09; STM32 的 MAC …

Ubuntu24.04设置静态IP地址

Ubuntu24.04设置静态IP地址 前言&#xff1a;vm17.5的动态IP问题 第一个是设置的静态IP我们可以看到是forever&#xff0c;第二个则是动态IP则是一天的时间。 如果我们不设置静态IP的话&#xff0c;那么可能在本地测试项目的时候&#xff0c;第二天发现一些服务不能用了&#…

13.js对象

定义 一种复杂数据类型&#xff0c;是无序的&#xff08;不保留键的插入顺序&#xff09;&#xff0c;以键值对&#xff08;{key:value})形式存放的数据集合 对象的创建 &#xff08;1&#xff09;字面量创建 var 对象名{ } &#xff08;2&#xff09;内部构造函数创建 v…

VirtualBox安装ubuntu22.04记录

一,VirtualBox 软件安装 虚拟机&#xff08;Virtual Machine&#xff09;指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。 常见的虚拟机软件主要有两款 VMware 和 VirtualBox 。VMwar…

争议湖北消费金融2023年业绩,营收下滑or财务内控重大缺陷?

近日&#xff0c;湖北消费金融股份有限公司&#xff08;下称“湖北消费金融”&#xff09;披露了2023年度相关信息&#xff0c;包括股权结构、关联方、董事会、分支机构、资产负债情况等信息。 据介绍&#xff0c;湖北消费金融的注册资本为10.058亿元&#xff0c;法定代表人为…

linux---线程控制

线程和进程 以前我们要同时跑多个程序&#xff0c;可以通过fork()多个子进程&#xff0c;然后通过系统函数进行程序的替换&#xff0c;但是创建进程代价大&#xff0c;不仅要拷贝一份父进程的地址空间&#xff0c;页表&#xff0c;文件表述符表等。但是线程不需要因为是进程的…