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. 数据清洗与存储 三…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
