UFO:Windows操作系统的具象智能代理
近年来,随着AI技术的发展,智能代理在各种应用中扮演着越来越重要的角色。微软推出的UFO(User-Focused Operator)正是这样一个出色的多代理框架,旨在通过无缝导航和操作,满足用户在Windows操作系统中跨多个应用程序的需求。今天,我将为大家介绍UFO的架构、功能亮点以及如何开始使用这个强大的工具。
https://github.com/microsoft/UFO

框架概述
UFO作为一个多代理框架,主要包含以下几个组件:
-
HostAgent 🤖:负责选择适合用户请求的应用程序。当请求跨越多个应用时,它还可以在完成部分任务后切换应用。
-
AppAgent 👾:在选定的应用程序内迭代执行操作,直至任务成功完成。
-
应用自动化器 🎮:负责将HostAgent和AppAgent的行动翻译为与应用程序的交互,包括UI控件、原生API或AI工具的使用。
这两个代理利用GPT-Vision的多模态能力来理解应用界面并完成用户的请求。更详细的技术内容可以参考官方的技术报告和文档。

最新动态
官方一直致力于不断改进和优化UFO,以提供更高效的用户体验。以下是最近的一些更新和重要新闻:
-
2024-09-08:发布v1.1.0版本!此版本允许UFO点击应用程序的任意区域,并将其延迟减少至原来的三分之一。
-
2024-07-06:发布v1.0.0版本!详细文档已上线,欢迎大家贡献和反馈。
-
2024-06-28:官方激动地宣布,UFO的官方介绍视频已在YouTube上线!
-
2024-05-21:官方在GitHub上达到了5000颗星!✨
详细的更新日志请参考官方的技术文档,每一次更新都包含许多新功能和改进,从HostAgent重构到支持Google Gemini推理引擎,再到支持自定义用户代理等,让UFO变得更强大和易用。
媒体报道
UFO发布以来,受到了广泛的媒体关注。以下是部分媒体报道的标题和评价:
-
Microsoft的UFO带来了更智能的Windows体验
-
UFO & GPT-4-V:让GPT接管一切
-
AI PC - 计算机的未来?微软的UFO
-
下一代智能版Windows要来了?微软推出首个Windows Agent,命名为UFO!
这些报道展示了UFO如何革新技术前沿以及其对多平台的影响。
功能亮点
UFO具有许多突出的功能:
-
Windows首个智能代理:UFO是首个能够将自然语言用户请求翻译为在Windows操作系统上可执行操作的智能代理框架。
-
专家代理:通过从多种异构源(包括离线帮助文档、在线搜索引擎和人类示范)进行检索增强生成(RAG),使UFO成为应用程序的“专家”。
-
丰富的技能集:UFO具备多种技能,支持全面的自动化操作,包括鼠标、键盘、原生API和“Copilot”。
-
交互模式:UFO能够在一个会话内处理用户的多个子请求,实现复杂任务的无缝完成。
-
代理定制化:用户可以通过提供附加信息,自定义自己的代理。代理在需要时会主动查询用户详细信息,以便更好地调整其行为。
-
可扩展的AppAgent创建:UFO提供扩展性,允许用户和应用开发者以简单且可扩展的方式创建自己的AppAgent。
如何开始
步骤1:安装
UFO需要Python 3.10或更高版本,并运行在Windows 10及以上的操作系统上。您可以通过以下命令进行安装:
# 创建conda环境(可选)# conda create -n ufo python=3.10# conda activate ufo# 克隆仓库git clone https://github.com/microsoft/UFO.gitcd UFO# 安装依赖pip install -r requirements.txt# 如果您想使用Qwen作为LLM,请取消注释相关库。
步骤2:配置LLM
在运行UFO之前,您需要为HostAgent和AppAgent分别提供LLM配置。您可以通过复制ufo/config/config.yaml.template并编辑相应的配置,创建您自己的ufo/config/config.yaml文件:
OpenAI:VISUAL_MODE: True, # 是否使用视觉模式API_TYPE: "openai", # API类型API_BASE: "https://api.openai.com/v1/chat/completions", # OpenAI API端点API_KEY: "sk-", # OpenAI API密钥API_VERSION: "2024-02-15-preview", # 默认版本API_MODEL: "gpt-4-vision-preview", # 唯一的OpenAI模型Azure OpenAI (AOAI):VISUAL_MODE: True, # 是否使用视觉模式API_TYPE: "aoai", # API类型API_BASE: "YOUR_ENDPOINT", # AOAI API地址API_KEY: "YOUR_KEY", # AOAI API密钥API_VERSION: "2024-02-15-preview", # 默认版本API_MODEL: "gpt-4-vision-preview", # 唯一的OpenAI模型API_DEPLOYMENT_ID: "YOUR_AOAI_DEPLOYMENT", # AOAI API部署ID
您还可以为每个代理配置非视觉模型(如GPT-4),通过设置VISUAL_MODE: False和适当的API_MODEL。另外,您可以在BACKUP_AGENT字段中设置备用语言模型引擎,以防主引擎在推理过程中失败。
步骤3:RAG的附加设置(可选)
如果您想增强UFO的外部知识调取功能,可以在ufo/config/config.yaml文件中配置外部数据库用于检索增强生成(RAG):
-
离线帮助文档:使UFO能够从离线帮助文档中检索信息。
-
在线Bing搜索引擎:利用最新的在线搜索结果增强UFO的能力。
-
自我经验:将任务完成轨迹保存到UFO的内存中,以供将来参考。
-
用户演示:通过用户演示提升UFO的能力。
步骤4:启动UFO
<|diff_marker|> ADD A1000 在Windows命令行(CLI)中执行以下命令以启动UFO:
# 假设您在克隆的UFO文件夹中python -m ufo --task <your_task_name>
这将启动UFO进程,您可以通过命令行界面与之交互。如果一切正常,您将看到以下提示:
欢迎使用UFO🛸,Windows操作系统交互的UI专注代理。_ _ _____ ___| | | || ___| / _ \| | | || |_ | | | || |_| || _| | |_| |\___/ |_| \___/请输入要完成的请求🛸:
步骤5:执行日志
您可以在以下文件夹中找到截屏和请求&响应日志:
./ufo/logs/<your_task_name>/
这些日志可用于调试、重播或分析代理输出。
获取帮助
若需帮助,请首先查阅官方的文档。若仍有疑问,您可以在GitHub Issue上提问或通过邮件联系ufo-agent@microsoft.com。
评价
请参考官方技术报告附录A中的WindowsBench部分。以下是一些有助于完成请求的提示:
-
在UFO执行请求之前,请确保目标应用程序处于活动状态(可以最小化但不能关闭)。
-
请注意,GPT-V的输出可能因相同请求而异。如果未成功完成请求,请尝试重新尝试。
引用
如果您在研究中使用了UFO,请引用官方 的论文:
@article{ufo,title={{UFO: A UI-Focused Agent for Windows OS Interaction}},author={Zhang, Chaoyun and Li, Liqun and He, Shilin and Zhang, Xu and Qiao, Bo and Qin, Si and Ma, Minghua and Kang, Yu and Lin, Qingwei and Rajmohan, Saravan and Zhang, Dongmei and Zhang, Qi},journal={arXiv preprint arXiv:2402.07939},year={2024}}
相关项目
您也可以关注TaskWeaver,一个以编码优先的LLM代理框架,用于无缝规划和执行数据分析任务。
相关文章:
UFO:Windows操作系统的具象智能代理
近年来,随着AI技术的发展,智能代理在各种应用中扮演着越来越重要的角色。微软推出的UFO(User-Focused Operator)正是这样一个出色的多代理框架,旨在通过无缝导航和操作,满足用户在Windows操作系统中跨多个应…...
win10/11无休眠设置和断电后电池模式自动休眠而不是睡眠-用以省电
1、打开休眠设置选项 打开控制面板\所有控制面板项\电源选项\ 左侧的选择电源按钮的功能 默认状态没有休眠 1、管理员权限打开cmd或者power shell 2、输入一下指令,打开休眠选项 powercfg -hibernate on关闭后重新打开 控制面板\所有控制面板项\电源选项\左侧的选…...
【动态规划之斐波那契数列模型】——累加递推型动态规划
文章目录 第N个泰波那契数列面试题08.01.三步问题使用最小花费爬楼梯解码问题 第N个泰波那契数列 解题思路: 泰波那契数列的第 N 项定义为前面三项之和,即 T0 0, T1 1, T2 1,从 T3 开始,每一项都等于前三项的和。要找到第 N 项…...
5g通信系统用到的crc码
5g通信系统用到的crc码 关注 在5G通信系统中,CRC码(循环冗余校验码)扮演着关键角色,它通过执行多项式除法运算来检测数据在传输过程中是否发生错误。5G通信系统中采用了多种CRC码,每种码都有其独特的计算方法和校验特…...
Ubuntu-22.04 虚拟机安装
1. Ubuntu安装方式 1.1. 基于物理介质安装 光盘安装:通过将 Ubuntu 镜像刻录到光盘,在计算机 BIOS/UEFI 中设置光盘为第一启动项,然后按照安装程序的提示进行语言选择、分区、用户信息设置等操作来完成安装。这种方式需要有光盘刻录设备和空…...
Windows、Linux系统上进行CPU和内存压力测试
CPU和内存压力测试 1. Linux环境 Linux环境下,我们可以用 stress 工具进行内存、CPU等的压力测试。 【1】. stress工具说明 [kalamikysrv1 ~]$ stress --help stress imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-…...
FFmpeg 4.3 音视频-多路H265监控录放C++开发八,使用SDLVSQT显示yuv文件 ,使用ffmpeg的AVFrame
一. AVFrame 核心回顾,uint8_t *data[AV_NUM_DATA_POINTERS] 和 int linesize[AV_NUM_DATA_POINTERS] AVFrame 存储的是解码后的数据,(包括音频和视频)例如:yuv数据,或者pcm数据,参考AVFrame结…...
HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解
文章目录 1. `<a>`元素属性hreftargetname2. `<img>`元素属性srcaltwidth 和 height3. `<form>`元素属性actionmethodenctype4. `<input>`元素属性typevaluenamereadonly5. `<table>`元素属性cellpaddingcellspacing小结HTML元素除了可以使用全局…...
css简写属性
一些属性,如 font、background、padding、border 和 margin 等属性称为简写属性。它们允许在一行中设置多个属性值,从而节省时间并使代码更整洁。 /* 在像 padding 和 margin 这样的 4 值简写语法中,数值的应用顺序是上、右、下、左ÿ…...
力扣刷题(sql)--零散知识点(2)
1.自定义分组后的分类统计问题(某组内无数据却仍要展示) 例题1: 查询每个工资类别的银行账户数量。 工资类别如下: "Low Salary":所有工资 严格低于 20000 美元。"Average Salary":…...
TCP是怎样工作的网络拥塞控制理论和算法部分记录
参考资料 https://github.com/ituring/tcp-book 流量控制、窗口控制和拥塞控制的关系 流量控制、窗口控制和拥塞控制的关系如图所示 窗口控制是上层的概念,核心思路是基于滑动窗口技术传输数据。而确定发送窗口大小的方法有流量控制和拥塞控制两种 流量控制&…...
CSRF初级靶场
靶场 针对DVWA么有防御 源码: <?phpif( isset( $_GET[ Change ] ) ) {// Get input$pass_new $_GET[ password_new ];$pass_conf $_GET[ password_conf ];// Do the passwords match?if( $pass_new $pass_conf ) {// They do!$pass_new ((isset($GLOBA…...
CSP/信奥赛C++刷题训练:经典差分例题(2):洛谷P9904 :Mieszanie kolorów
CSP/信奥赛C++刷题训练:经典差分例题(2):洛谷P9094 :Mieszanie kolorw 题目描述 题目译自 PA 2020 Runda 1 Mieszanie kolorw Byteasar 正准备给栅栏涂漆。他已经准备了 n n n 罐白色油漆,他把这些油漆排列成一排,从 1 1 1 到 n n n 编号。他想用这些油漆,但他不想…...
Java | Leetcode Java题解之第525题连续数组
题目: 题解: class Solution {public int findMaxLength(int[] nums) {int maxLength 0;Map<Integer, Integer> map new HashMap<Integer, Integer>();int counter 0;map.put(counter, -1);int n nums.length;for (int i 0; i < n;…...
YOLOv8改进 - 注意力篇 - 引入iRMB注意力机制
#YOLO# #目标检测# #计算机视觉# 一、本文介绍 作为入门性篇章,这里介绍了iRMB注意力在YOLOv8中的使用。包含iRMB原理分析,iRMB的代码、iRMB的使用方法、以及添加以后的yaml文件及运行记录。 二、iRMB原理分析 iRMB官方论文地址:文章 iR…...
项目学习总结
文章目录 项目学习总结项目中的vw适配vw使用 封装axios实例axios常见请求配置axios响应结构axios拦截器配置Vue Router全局前置守卫 项目学习总结 在智慧商城项目中的学习总结。 项目中的vw适配 vw 是一种长度单位,代表视口宽度的百分比。1vw 等于视口宽度的1%。…...
用于低成本接收机的LoRa SF11 500KHz波形检测解调算法
前一篇里,获取了LORAwan的物理层波形,并通过Octave查看了它的瞬时频率。LoRa是私有协议,网上已经有了很不错的开源的实现,如: S2_LoRa通信实验 LoRaPhy 以及GNU-Radio的Lora模块、LimeSDR的Lora实现。当我试图修改上…...
WEB防护
WEB防护的范围比较广,主要是指针对web安全而做的各种防御措施, 包含应对xss、csrf等漏洞攻击的应对方式。 Web防护是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品, 主要用于防御针对网络应用层的攻击࿰…...
使用Jest进行JavaScript单元测试
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Jest进行JavaScript单元测试 引言 Jest 简介 安装 Jest 创建基本配置 编写测试用例 运行测试 快照测试 模拟函数 代码覆盖率…...
网络安全法详细介绍——爬虫教程
目录 [TOC](目录)一、网络安全法详细介绍1. 网络安全法的主要条款与作用2. 网络安全法与爬虫的关系3. 合法使用爬虫的指南 二、爬虫的详细教程1. 准备环境与安装工具2. 使用requests库发送请求3. 解析HTML内容4. 使用robots.txt规范爬虫行为5. 设置请求间隔6. 数据清洗与存储 三…...
语义通信:从理论到6G落地的关键技术演进与挑战
1. 语义通信的理论基石 语义通信(Semantic Communication, SemCom)的核心思想与传统通信有着本质区别。传统通信追求的是"准确传输比特流",而语义通信关注的是"有效传递信息的意义"。这就像两个人对话:传统通…...
Deformable-DETR环境配置避坑:如何正确设置CUDA_HOME解决ms_deformable_im2col_cuda报错
Deformable-DETR环境配置实战:从CUDA路径排查到高效编译 当你第一次尝试运行Deformable-DETR这个强大的目标检测框架时,是否也遇到了那个令人头疼的报错:"error in ms_deformable_im2col_cuda: no kernel image is available for execut…...
python基于微信小程序的家政服务与互助平台
目录技术栈选择功能模块设计数据库设计接口开发小程序前端部署与测试安全与合规项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选择 后端采用Python的Django或Flask框架,提供RESTful API接口。数据库使用MyS…...
终极解决方案:uesave-rs 让你轻松编辑虚幻引擎游戏存档
终极解决方案:uesave-rs 让你轻松编辑虚幻引擎游戏存档 【免费下载链接】uesave 项目地址: https://gitcode.com/gh_mirrors/ue/uesave 还在为游戏存档损坏而抓狂吗?面对一堆看不懂的二进制数据,想要修改游戏进度却无从下手ÿ…...
IntelliJ IDEA突然无法启动的快速修复指南
1. IntelliJ IDEA突然无法启动的常见原因 作为一名常年与IntelliJ IDEA打交道的开发者,我遇到过无数次IDE突然罢工的情况。最让人头疼的是,明明昨天还用得好好的,今天双击图标却毫无反应。这种情况通常由以下几个原因导致: 首先是…...
深入STM32F407 USART收发机制:用逻辑分析仪解读数据帧与中断处理流程
深入解析STM32F407 USART通信机制:从数据帧捕获到中断优化实战 在工业自动化、智能硬件等高可靠性应用场景中,串口通信的稳定性和效率往往决定着整个系统的性能边界。STM32F407作为ARM Cortex-M4内核的经典代表,其USART模块在异步通信场景下展…...
硬盘监控与健康管理:DiskInfo全方位使用指南
硬盘监控与健康管理:DiskInfo全方位使用指南 【免费下载链接】DiskInfo DiskInfo based on CrystalDiskInfo 项目地址: https://gitcode.com/gh_mirrors/di/DiskInfo 在数字化时代,硬盘故障可能导致珍贵数据永久丢失。DiskInfo作为一款基于Crysta…...
GitHub访问加速终极指南:5分钟告别龟速访问的完整解决方案
GitHub访问加速终极指南:5分钟告别龟速访问的完整解决方案 【免费下载链接】fetch-github-hosts 🌏 同步github的hosts工具,支持多平台的图形化和命令行,内置客户端和服务端两种模式~ | Synchronize GitHub hosts tool, support m…...
驾驭AI引用:Geo优化中的内容评分机制与实战策略深度解析
在生成式人工智能(Generative AI)日益主导信息获取与分发路径的时代,传统搜索引擎优化(SEO)的范式正被生成式引擎优化(Geo)所颠覆。Geo不再仅仅关注关键词排名,而是深入探究内容如何…...
3步打造开源工具效率引擎:QtScrcpy自定义配置全指南
3步打造开源工具效率引擎:QtScrcpy自定义配置全指南 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy …...
