UFO:革新Windows操作系统交互的UI聚焦代理
人工智能咨询培训老师叶梓 转载标明出处
人机交互的便捷性和效率直接影响着我们的工作和生活质量。尽管现代操作系统如Windows提供了丰富的图形用户界面(GUI),使得用户能够通过视觉和简单的点击操作来控制计算机,但随着应用程序功能的日益复杂化,用户在执行跨应用任务时仍面临着挑战。从繁琐的数据输入到复杂的多步骤流程,用户经常需要在不同的应用程序之间切换,这不仅耗时耗力,也容易出错。
尤其当用户需要根据自然语言请求来执行任务时,现有的技术往往无法直接理解并转化为具体的操作。例如,将电子邮件草拟、会议笔记整理、图像编辑等任务自动化,需要一个能够理解自然语言并跨应用程序操作的智能代理。随着大型语言模型(LLMs)和人工智能技术的发展,人们越来越期待能够实现更加智能化、自动化的交互体验。
微软公司的研究团队提出的UFO(User Interface-Focused Agent)正是为了解决这一问题而设计的。UFO是一个创新的UI聚焦代理,专门为Windows操作系统环境量身打造。它利用了最新的GPT-Vision技术,通过自然语言处理和图形用户界面分析,能够理解并执行复杂的用户请求。UFO的设计不仅提高了任务执行的效率,还通过自动化减少了人为错误,使用户能够更加专注于创造性和战略性的工作。
它通过从 Word 文档中提取信息、观察照片中的图形以及从 PowerPoint 演示文稿中总结内容来完成用户请求,然后利用这些信息自动撰写并发送电子邮件
UFO介绍
UFO采用双代理架构,其设计初衷是作为一个中间层,理解用户的自然语言请求,并将其转化为对Windows操作系统上应用程序的具体操作。
Figure 2中UFO的架构以双代理框架为核心,包括一个HostAgent和一个AppAgent。HostAgent的职责是分析用户请求,并从当前活跃的应用程序中选择一个最合适的应用程序来执行任务。如果一个请求需要跨越多个应用程序,HostAgent也能够在完成前一个应用程序中的任务后,切换到不同的应用程序。
HostAgent在接收到用户请求时,会进行需求分析。它利用完整的桌面截图和可用应用程序列表来辅助决策过程。这些信息帮助HostAgent理解当前桌面环境和应用程序的状态,从而选择最合适的应用程序来响应用户的需求。选定应用程序后,HostAgent会制定一个全面的全局计划,这个计划随后会传递给AppAgent。
AppAgent负责在选定的应用程序上迭代执行动作,直至任务在特定应用程序内成功完成。在每次动作选择之前,UFO会捕获当前应用程序用户界面窗口的屏幕截图,并标注所有可用的控件。UFO还会记录每个控件的信息,供AppAgent观察和决策。AppAgent的任务是选择一个控件进行操作,并通过控制交互模块执行特定动作。这个决策过程基于AppAgent的观察、先前计划和操作记忆。
执行动作后,UFO会构建未来步骤的本地计划,并继续进行下一步动作选择。这个过程会递归地继续,直到用户请求在选定的应用程序中成功完成。如果用户请求涉及多个应用程序,AppAgent将在完成当前应用程序的任务后,将任务委托回HostAgent,以便切换到不同的应用程序,从而启动请求的第二阶段。这个迭代过程会持续,直到用户请求的所有方面都完全完成。
用户还可以交互式地引入新请求,促使UFO通过重复上述过程来处理新请求。一旦所有用户请求都成功完成,UFO就会结束其操作。在随后的小节中,论文深入探讨了UFO框架内每个组件的复杂细节,包括HostAgent和AppAgent的具体工作机制和它们如何协同工作来满足用户的需求。
在UFO代理的设计中,HostAgent扮演着至关重要的角色,它负责选择一个活跃的应用程序来执行用户请求,必要时还能切换到新的应用程序。HostAgent通过分析用户提交的原始查询、当前桌面的屏幕截图、可用应用程序的详细信息以及包含先前操作和执行结果的记忆模块,来构建一个全面的全局计划。这些信息的综合为HostAgent提供了决策的数据支持。
HostAgent利用GPT-V生成包括观察、思考、选定应用程序、状态、全局计划和评论在内的输出。观察是对当前桌面窗口屏幕截图的详细描述,而思考则是基于逻辑的下一步行动。选定的应用程序是完成任务所选择的标签和名称。状态可以是“继续”或“完成”,而全局计划则是一个宏观的行动方案。评论可能包括进度摘要和需要突出的重点。
HostAgent在决策过程中不仅增强了UFO的逻辑一致性,还提高了其整体可解释性。它能够根据任务的完成情况决定状态,并在必要时向用户报告进度或提出问题。一旦确定了应用程序,HostAgent就会指导AppAgent在该应用程序内执行具体动作,以满足用户请求。这种设计使得UFO能够智能地处理复杂的任务,提高用户与计算机系统的交互效率。
AppAgent为在HostAgent之后的下游实体,它的任务是在选定的应用程序上执行特定动作以满足用户请求。AppAgent的输入和输出与HostAgent相比有所不同。AppAgent的输入包括:
- 用户请求:与HostAgent接收的原始用户查询相同。
- 屏幕截图:包括三部分:(i) 上一次的屏幕截图;(ii) 未标注的干净截图;以及 (iii) 标注了控件的屏幕截图。
- 控件信息:列出了选定应用程序中启用操作的控件名称和类型。
- 内存:包含先前的想法、评论、动作和执行结果,与HostAgent相同。
- 示例:作为动作选择的文本示例,作为任务演示。
AppAgent使用这三种类型的屏幕截图来辅助决策过程。上一次的屏幕截图中,最后一个选择的控件会以红色矩形突出显示,这有助于理解上一步的操作执行和行动的影响。干净的屏幕截图允许在没有标注阻碍的情况下理解应用程序的状态,而标注的屏幕截图通过使用标记集合(Set-of-Mark, SoM)对每个控件进行编号(例如36),便于更好地理解UI元素的功能和位置。不同类型的控件用不同的颜色进行区分。
输入到AppAgent的内存有两个关键目的。首先,它作为代理的提醒,使AppAgent能够分析过去的行动,并减少重复无效行动的可能性。其次,它建立了跨应用程序通信的重要渠道。执行结果,如从文档中提取的文本或图像描述,存储在内存模块中。AppAgent可以有选择地结合这些信息进行需要的行动,例如使用来自不同来源的文本撰写电子邮件。这种增强显著扩展了UFO的能力。
综合这些信息后,AppAgent会细致分析并输出以下内容:
观察:对当前应用程序窗口屏幕截图的详细描述,以及对上一个行动是否生效的分析。
思考:当前行动决策背后的逻辑思考和理由。
选定控件:被选择操作的控件标签和名称。
功能:应用于控件的具体功能及其参数。
状态:任务状态,可能需要“继续”进一步的行动、“完成”任务、“待定”需要用户确认、“屏幕截图”代理认为需要进一步的屏幕截图来标注更小的控件集,或“应用选择”当前应用程序上的任务已完成,需要切换到不同的应用程序。
本地计划:一个更精确和细粒度的计划,用于完全满足用户请求。
评论:包括简要进度摘要、突出点或计划变更的额外评论或信息,类似于HostAgent所提供的。
尽管AppAgent的一些输出字段可能与HostAgent有相似之处,但UFO会根据任务的状态输出来确定下一步。如果任务未完成,它会将功能应用于选定的控件,触发应用程序的下一个状态执行。AppAgent会反复这个过程,观察并响应选定的应用程序,直到用户请求完全完成或需要切换到不同的应用程序。
UFO的控制交互模块是其核心功能之一,它负责将ActAgent选定的操作转化为应用程序中的实际控制动作。这一模块利用了Python的pywinauto库,该库提供了丰富的工具来检查用户界面控件并执行操作。通过Windows UI Automation API,UFO能够与应用程序的用户界面进行深入交互,从而实现自动化测试、脚本编写和重复任务的自动化。UFO特别关注10种受限控件类型,如按钮、编辑框、标签项、文档、列表项、菜单项、树项、组合框、超链接和滚动条。这些控件类型覆盖了大多数应用程序中常见的交互元素。
为了执行这些控件的操作,UFO不仅使用了pywinauto支持的常见鼠标操作,如点击、设置文本、获取文本和滚动,还开发了自定义操作,例如注释和总结。注释功能允许UFO重新注释GUI,以更简洁的方式突出显示控件,而总结功能则使UFO能够基于清晰的屏幕截图总结其视觉观察结果。这些功能的结合使得UFO能够根据ActAgent的决策,智能地与应用程序的用户界面进行交互。
这些控件类型包括按钮、编辑框、标签项、文档、列表项、菜单项、树项、组合框、超链接和滚动条
UFO还有一些特别的设计,旨在提升其在Windows操作系统中的交互效率和用户体验。这些设计考虑包括交互模式、动作定制、控件过滤、计划反思和安全保护机制。
交互模式允许UFO与用户进行更自然的交流。与传统的一次性任务完成不同,UFO支持迭代和交互式的任务处理。这意味着在完成一个任务后,用户可以请求UFO对之前的任务进行改进,提出新的任务,或者在UFO可能不太擅长的领域提供帮助,比如输入密码。这种灵活性不仅使UFO区别于市场上其他UI代理,还使其能够吸收用户反馈,完成更复杂和长期的任务。
动作定制是UFO的另一个关键特性。虽然UFO已经能够执行一系列预定义的操作,但其设计允许用户根据特定需求注册和定制新操作。用户可以指定操作的目的、参数、返回值,并提供示例,这些信息将被纳入UFO的执行提示中。一旦注册完成,这些定制操作就可以被UFO执行,极大地扩展了其功能和应用范围。
控件过滤机制是UFO为了优化用户界面控件的选择过程而设计的一种智能过滤方法。在应用程序的GUI中,可能会检测到数百个控件,但并非所有控件都对完成特定任务有用。UFO通过硬过滤和软过滤两级方法来减少干扰,确保只有最相关的控件被选中。这种过滤机制不仅提高了UFO的决策效率,还避免了在用户界面上产生过多的视觉混乱。
计划反思机制使UFO能够根据应用程序UI的实际状态动态调整其计划。例如,如果UFO计划点击一个按钮,但该按钮在当前UI中不可见,UFO将需要先导航到主页面,然后再找到并点击该按钮。这种自适应方法增强了UFO对环境变化的响应能力,提高了其在不同应用UI中导航和交互的性能。
安全保护机制是UFO设计中的一个重要方面。UFO能够智能评估每个操作的敏感性,并在执行可能影响系统配置或用户隐私的操作之前请求用户确认。这种机制不仅提高了UFO的安全性,还增强了用户对UFO操作的信任度。
通过这些特别设计考虑,UFO不仅能够更有效地与Windows操作系统中的应用程序交互,还能够提供更安全、更可定制的用户体验。
实验
究者们精心构建了WindowsBench基准测试平台,用以全面评估UFO代理在Windows操作系统中处理用户请求的性能。该基准测试集成了50项任务,覆盖了9种用户常用的应用程序,如邮件客户端、图片浏览器、演示软件等,这些任务设计得非常贴近用户的日常使用模式。为了评估UFO的性能,研究者们不仅设置了GPT-3.5和GPT-4作为对比基线,还定义了包括成功率、步骤完成率和安全保护率在内的多个评估指标。
在性能评估方面,UFO的表现远远超出了基线模型。其在成功率上的优势表明,UFO在执行用户请求方面更为可靠。UFO的高步骤完成率也反映了其在执行任务时的高效率,即UFO能够在更少的步骤内完成更多的正确操作。UFO在安全保护率上的优异表现,证明了其在处理敏感操作时能够谨慎地请求用户确认,从而确保了操作的安全性和用户数据的保护。
研究者们通过具体的案例展示了UFO代理在实际应用中的表现和能力。这些案例研究不仅验证了UFO在单一应用程序中的操作能力,还展示了它在处理跨应用程序任务时的灵活性和效率。他们首先提出了一个涉及PowerPoint演示文稿的任务,要求UFO帮助用户快速删除幻灯片中的所有备注。通常,这项工作需要用户逐页手动删除备注,非常耗时。然而,UFO通过分析并利用PowerPoint的“移除所有演示文稿备注”功能,以一种更高效的方式简化了整个过程。UFO首先导航至“文件”选项卡,进入后台视图,然后依次点击“信息”、“检查问题”、“检查文档”,最终找到并点击“移除所有演示文稿备注”按钮。在执行这一敏感操作前,UFO还会启动安全保护机制,请求用户确认,确保操作的安全性。
研究者们还设计了一个更复杂的案例,要求UFO从Word文档中读取会议记录,识别所有行动项,并结合一张图片文件中的LLM(大型语言模型)培训工作流程的详细描述,撰写一封电子邮件,并发送给我们的领导者Hidan以征求他的审查意见。这个任务考验了UFO在不同应用程序间导航和交互的能力。UFO首先在Word中打开会议记录文档,提取行动项,然后转到图片查看器中观察并生成LLM培训工作流程的描述。随后,UFO在Outlook中创建了一封新邮件,自动填写了收件人、主题,并撰写了邮件正文,包括所有必要的信息。在发送邮件之前,UFO同样会触发安全保护机制,确保用户对这一敏感操作有所了解并同意执行。
UFO 被要求读取会议记录,识别所有行动项目,并结合 LLM 培训工作流程的详细描述来撰写一封电子邮件,并发送给我们的领导 Hidan 以请求他的审查
UFO作为首个专为Windows操作系统环境设计的UI代理,通过其创新的双代理框架和控制交互模块,不仅提高了用户与计算机交互的效率,而且为未来的人机交互提供了新的可能性。尽管UFO展现出卓越的性能,但也有其局限性,包括对pywinauto和Windows UI Automation支持的依赖,以及在面对不熟悉的应用程序UI时可能遇到的挑战。未来的工作将探索支持替代后端和集成专用GUI模型,以扩展UFO的功能。
论文链接:https://arxiv.org/abs/2402.07939
相关文章:
UFO:革新Windows操作系统交互的UI聚焦代理
人工智能咨询培训老师叶梓 转载标明出处 人机交互的便捷性和效率直接影响着我们的工作和生活质量。尽管现代操作系统如Windows提供了丰富的图形用户界面(GUI),使得用户能够通过视觉和简单的点击操作来控制计算机,但随着应用程序功…...
scp免密复制文件
实现在服务器A和服务器B之间使用scp命令免密互相传输文件 1. 在服务器A中免密复制到服务器B 1.1 生成服务器A的公钥私钥 #在服务器A中执行 ssh-keygen -t rsa -P ""命令执行完毕会在服务器A的 ~/.ssh 目录下生成两个文件:id_rsa 和 id_rsa.pub 1.2 拷…...
Maven 的模块化开发示例
Maven 的模块化开发是一种非常有效的软件开发方式,它允许你将一个大型的项目分割成多个更小、更易于管理的模块(modules)。每个模块都可以独立地构建、测试和运行,这不仅提高了开发效率,也便于团队协作和项目的维护。以…...
通过QT进行服务器和客户端之间的网络通信
客户端 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network #网络通信greaterThan(QT_MAJOR_VERSION, 4): QT widg…...
【STM32 HAL库】DMA+串口
DMA 直接存储器访问 DMA传输,将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场,它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道,…...
C#类型基础Part2-对象判等
C#类型基础Part2-对象判等 参考资料引用类型判等简单值类型判等复杂值类型判等 参考资料 《.NET之美-.NET关键技术深入解析》 引用类型判等 先定义两个类型,它们代表直线上的一个点,一个是引用类型class,一个是值类型struct public class…...
13.CSS 打印样式表 悬停下划线动画
CSS 打印样式表 虽然我们不经常从网上实际打印内容,但打印样式表不应被忽视。它们可以用来确保你的网站内容以一种易读和适合打印的方式呈现。这里有一个简单的、独特的打印样式表,你可以用它作为自己的基础: media print {page {size: A4;}body {margin: 0;padding: 0;}body, …...
C#基础:数据库分表的好处和实现方式
一、分表的好处: 1.提升查询速度:分表筛选后再拼接,而不是查大表,速度会显著提升 2.管理容易:根据业务需求,通常会按照时间或者空间来分表 3.提高并发性:降低锁竞争和查询阻塞的风险…...
基于3D开发引擎HOOPS平台的大型三维PLM系统的设计、开发与应用
产品生命周期管理(Product Lifecycle Management,PLM)系统在现代制造业中扮演着至关重要的角色。随着工业4.0和智能制造的推进,PLM系统从最初的CAD和PDM系统发展到现在的全面集成、协作和智能化的平台。本文将探讨基于HOOPS平台的…...
学习React(描述 UI)
React 是一个用于构建用户界面(UI)的 JavaScript 库,用户界面由按钮、文本和图像等小单元内容构建而成。React 帮助你把它们组合成可重用、可嵌套的 组件。从 web 端网站到移动端应用,屏幕上的所有内容都可以被分解成组件。在本章…...
mysql字符类型字段设置默认值为当前时间
-- 2024-07-22 10:22:20 select (DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)); ALTER TABLE tablename MODIFY COLUNN CREATE_DATE varchar (23) DEFAULT(DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)) COMMENT "创建日期;...
java题目之数字加密以及如何解密
public class Main6 {public static void main(String[] args) {// 某系统的数字密码(大于0),比如1983,采用加密方式进行传输//定义了一个静态数组int []arr{1,9,8,3};//1.加密//先给每位数加上5for (int i 0; i <arr.length …...
Linux基于CentOS7【yum】【vim】的基础学习,【普通用户提权】
目录 yum生态 什么是yum yum是如何得知目标服务器的地址和下载链接 vim vim模式 命名模式 光标移动 插入模式 i键插 a键插 o键插 底行模式 批量化注释 批量化去注释 创建vim配置文件 例子 高亮功能: 缩进功能: 符号位自动补齐功能…...
盛元广通实验室自动化生物样本库质量控制管理系统
随着我国生物医学研究的不断深入和精准医疗的快速发展,对高质量生物样本的需求日益增长。近年来,我国生物样本库建设取得了显著进展。各级政府、高校和医院纷纷投入资源建设生物样本库,推动了生物样本资源的有效整合和利用。生物样本库的质量…...
Java | 自制AWT单词猜一猜小游戏(测试版)
目录 游戏标题 开发过程 开发想法 技术栈 代码呈现 导包 核心代码 游戏标题 探索知识的迷宫,体验自制AWT单词猜一猜小游戏 在数字时代,学习可以是多彩的,游戏可以是智慧的。我们自豪地推出“单词猜猜猜”是一款结合了教育与娱乐的自制…...
docker搭建ES 8.14 集群
参考:【docker搭建es8集群kibana】_docker 安装生产级 es 8.14 集群-CSDN博客 1、之前已搭建一台单机版的dockerES集群 参见 Elasticsearch docker 安装_docker 安装es8.14.3-CSDN博客 2、现在需要重新搭建为docker ES集群 准备新搭建3个点 一、准备工作 提前开…...
自定义特征的智能演进:Mojo模型中的动态特征选择控制
自定义特征的智能演进:Mojo模型中的动态特征选择控制 在机器学习领域,特征选择是提升模型性能和泛化能力的关键步骤。Mojo模型,作为一种高效的模型部署方式,其对特征的动态选择和控制能力是实现高级机器学习应用的重要特性。本文…...
Git->Git生成patch和使用patch
生成patch git format-patch -1 HEAD -o "输出目录"format-patch:用于生成补丁文件-1:-1 表示最近一次提交,-2 表示生成最近两次提交的补丁。HEAD:HEAD 指向当前分支的最新提交-o:指定生成的补丁文件的输出…...
开发面试算法题求教
在《无尽的拉格朗日》中,有许多不同的星系建筑物。每个星系建筑物的等级不同,带来的影响力也不同。 已知宇宙可以抽象为一个无穷大的平面直角坐标系,现在给定了每个星系建筑物的所在坐标(xi,yi)和它的影响力ri,距离其切比雪夫距离…...
OpenStack中nova的架构
1.1 nova-api 负责接收和相应客户的API调用。 1.2 compute core nova-schedule 负责决定在哪个计算节点运行虚拟机。 nova-compute 通过调用Hypervisor实现虚拟机生命周期的管理。一般运行在计算节点。 hypervisor 对虚拟机进行硬件虚拟化的管理软件ÿ…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
