
Windows Agent Arena(WAA)?是一个可扩展的Windows AI代理平台,用于测试和基准测试多模式的桌面AI代理。 WAA为研究人员和开发人员提供了可重现和现实的Windows OS环境环境,可以在其中测试各种任务范围的Agesic AI工作流程。
WAA使用Azure ML Cloud Infrstructure来支持代理商的部署,从而使多个代理并行运行,并在几分钟而不是几天内为数百个任务提供快速基准结果。
diff_lvl="normal"更改为src/win-arena-container/start_client.sh中的diff_lvl="hard"来尝试新的困难模式。在更难的难度下,在许多任务中,代理也必须学会初始化/设置任务本身(例如,查找和打开任务的正确程序/应用程序),而不是通过任务为他们“设置”任务config。./run-local.sh --som-origin mixed-omni --gpu-enabled true我们的技术报告文件可以在这里找到。如果您发现此环境有用,请考虑引用我们的工作:
@article{bonatti2024windows,
author = { Bonatti, Rogerio and Zhao, Dan and Bonacci, Francesco and Dupont, Dillon, and Abdali, Sara and Li, Yinheng and Wagle, Justin and Koishida, Kazuhito and Bucker, Arthur and Jang, Lawrence and Hui, Zack},
title = {Windows Agent Arena: Evaluating Multi-Modal OS Agents at Scale},
institution = {Microsoft},
year = {2024},
month = {September},
}

conda create -n winarena python=3.9 。克隆存储库并安装依赖项:
git clone https://github.com/microsoft/WindowsAgentArena.git
cd WindowsAgentArena
# Install the required dependencies in your python environment
# conda activate winarena
pip install -r requirements.txt使用必要的键(来自OpenAI或Azure端点)在项目的根部创建一个新的config.json :
{
"OPENAI_API_KEY" : " <OPENAI_API_KEY> " , // if you are using OpenAI endpoint
"AZURE_API_KEY" : " <AZURE_API_KEY> " , // if you are using Azure endpoint
"AZURE_ENDPOINT" : " https://yourendpoint.openai.azure.com/ " , // if you are using Azure endpoint
}要开始,请从Docker Hub中摘取基本图像:
docker pull windowsarena/winarena-base:latest此图像包括在src目录中运行代码所需的所有必要依赖项(例如软件包和模型)。
接下来,在本地构建Winarena图像:
cd scripts
./build-container-image.sh
# If there are any changes in 'Dockerfile-WinArena-Base', use the --build-base-image flag to build also the base image locally
# ./build-container-image.sh --build-base-image true
# For other build options:
# ./build-container-image.sh --help这将创建windowsarena/winarena:latest图像,其中使用src目录中的最新代码。
setup.iso ,然后将其复制到Directory WindowsAgentArena/src/win-arena-container/vm/image 在运行竞技场之前,您需要准备一个新的WAA快照(也称为Waa Golden Image)。这个30GB快照代表一个功能齐全的Windows 11 VM,其运行基准所需的所有程序。该VM还托管了接收和执行代理命令的Python服务器。要了解有关玩具中的组件的更多信息,请参阅我们的本地和云组件图。
要准备金快照,请运行一次:
cd ./scripts
./run-local.sh --prepare-image true您可以在http://localhost:8006中监视进度。准备过程是完全自动化的,需要约20分钟。
准备在准备时,请不要干扰VM。供应过程完成后,它将自动关闭。


最后,您应该期望名为winarena的Docker容器可以优雅终止,如下日志所示。

您将在WindowsAgentArena/src/win-arena-container/vm/storage中找到30GB WAA金映像,由以下文件组成:

--skip-build false ,如果要在WAA Golden Image中包含src/win-arena-container目录中run-local.sh任何更改真的)。这将确保构建新的容器图像而不是使用预先构建的windowsarena/winarena:latest图像。storage内容。storage文件夹复制到存储库以外的安全位置,以防您或代理商在某个时候意外损坏VM,并希望避免使用新的设置。sudo运行上述命令。/bin/bash: bad interpreter: No such file or directory ,我们建议将bash脚本从DOS/Windows格式转换为UNIX格式: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +您现在准备启动评估。要在所有基准任务上运行基线代理,请执行:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --help打开http:// localhost:8006以查看Windows VM,并运行代理。如果您的PC有强大的PC,则可以通过以下操作在我们的论文中运行最强的代理配置:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uia在运行结束时,您可以使用命令显示结果:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > 以下是Navi Agent在我们的研究中使用的超参数组合的各种组合的比较,可以通过指定运行run-local.sh脚本时指定--som-origin <som_origin> --a11y-backend <a11y_backend>来覆盖。
| 命令 | 描述 | 笔记 |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | 将OmniParser与可访问性树信息结合在一起 | 推荐以获得最佳效果 |
./run-local.sh --som-origin omni | 使用无所不知的屏幕理解 | |
./run-local.sh --som-origin oss | 使用WebParse,GroundingDino和OCR(Tesseractocr) | 基线 |
./run-local.sh --som-origin a11y --a11y-backend uia | 使用较慢,更准确的可访问性树 | |
./run-local.sh --som-origin a11y --a11y-backend win32 | 使用更快,更准确的可访问性树 | 最快 |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | 将OSS检测与可访问性树相结合 |
--som-origin确定NAVI代理如何检测屏幕元素--a11y-backend指定可访问性后端类型(使用a11y或混合模式时) 乍一看,开发/调试代码在Docker容器中运行似乎很具有挑战性。但是,我们提供了一些提示,以使此过程更容易。检查开发标题文档以获取更多详细信息,例如:
我们提供了一种无缝的方式,可以在Azure ML Compute VM上运行Windows Agent Arena。此选项将大大减少所有基准任务中测试代理所需的时间,从小时/天到几分钟。
AZURE_SUBSCRIPTION_ID 。agents )。请注意资源组名称,我们将其用作第3节中的AZURE_ML_RESOURCE_GROUP 。agents_ml )。请注意ML工作区名称,我们将其用作第3节中的AZURE_ML_WORKSPACE_NAME 。在创建向导期间,请确保选中自动创建新的框以自动创建新的:
agents ) 
Notebooks选项卡。在您的用户分配文件夹中(如下图所示),创建一个名为compute-instance-startup.sh的新bash(.sh)文件。将scripts/azure_files/compute-instance-startup.sh的内容复制到此文件中并保存。每次在Azure启动新的VM以应用一些基本配置时,都会使用此脚本。请注意保存文件的路径(以Users/<YOUR_USER>/compute-instance-startup.sh的形式),我们将使用它在第3节中运行脚本。 
Standard_D8_v3 VM大小进行基准测试,该大小属于Standard Dv3 Family Cluster Dedicated vCPUs类别。每个VM使用8个内核。确保您使用的机器类型支持嵌套虚拟化。 
将Windows 11存储文件夹上传到与默认数据存储关联的BLOB容器。默认情况下,Azure ML Workspace的基础数据由一个或多个ML数据存储帐户支持。默认数据存储(名为workspaceblobstore )是在工作区设置期间创建的,并链接到Azure存储帐户下的BLOB容器。您可以通过访问Azure ML数据存储来查看数据存储和容器之间的关联。一旦找到,您就可以以不同的方式上传存储文件夹:
WindowsAgentArena/src/win-arena-container/vm/storage文件夹。 
az login --use-device-code # Only needed if prompted
az storage blob upload-batch --account-name < STORAGE_ACCOUNT_NAME > --destination < CONTAINER_NAME > --source < LOCAL_FOLDER >
# For a list of parameters check: https://docs.microsoft.com/en-us/cli/azure/storage/blob?view=azure-cli-latestStorage browser->Blob containers ,选择您的容器,然后上传文件夹。对于大型文件,不建议使用此选项,因为连接可能会变得不稳定。 [可选]如果您不使用默认的windowsarena/winarena:latest图像,则可以将自定义图像上传到Azure容器注册表。您可以通过遵循Azure容器注册表文档来做到这一点
az login --use-device-code
# potentially needed if commands below don't work: az acr login --name <ACR_NAME>
docker login # you will be prompted to enter your ACR credentials (username + password which can be found in the Azure portal)
docker tag < IMAGE_NAME > < ACR_NAME > .azurecr.io/ < IMAGE_NAME > : < TAG >
docker push < ACR_NAME > .azurecr.io/ < IMAGE_NAME > : < TAG >config.json文件: {
... // Your previous configs
"AZURE_SUBSCRIPTION_ID" : " <YOUR_AZURE_SUBSCRIPTION_ID> " ,
"AZURE_ML_RESOURCE_GROUP" : " <YOUR_AZURE_ML_RESOURCE_GROUP> " ,
"AZURE_ML_WORKSPACE_NAME" : " <YOUR_AZURE_ML_WORKSPACE_NAME> "
}experiments.json的新文件,以指定每个实验运行所需的任何参数,包括部署的代理和要使用的基础LLM模型。您可以找到一个参考experiments.json由多个实验组成的JSON,可以在scripts/experiments.json上运行。 {
"experiment_1" : {
"ci_startup_script_path" : " Users/<YOUR_USER>/compute-instance-startup.sh " , // As seen in Section 1
"agent" : " navi " ,
"datastore_input_path" : " storage " ,
"docker_img_name" : " windowsarena/winarena:latest " ,
"exp_name" : " experiment_1 " ,
"num_workers" : 4 ,
"use_managed_identity" : false ,
"json_name" : " evaluation_examples_windows/test_all.json " ,
"model_name" : " gpt-4-1106-vision-preview " ,
"som_origin" : " oss " , // or a11y, or mixed-oss
"a11y_backend" : " win32 " // or uia
}
// ...
}--experiments_json和--update_json参数run_azure.py生成experiments.json 。 cd scripts
python run_azure.py --experiments_json " experiments.json " --update_json --exp_name " experiment_1 " --ci_startup_script_path " Users/<YOUR_USER>/compute-instance-startup.sh " --agent " navi " --json_name " evaluation_examples_windows/test_all.json " --num_workers 4 --som_origin oss --a11y_backend win32az login --use-device-code # https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
# If multiple tenants or subscriptions, make sure to select the right ones with:
# az login --use-device-code --tenant "<YOUR_AZURE_AD_TENANT_ID>"
# az account set --subscription "<YOUR_AZURE_AD_TENANT_ID>"
# Make sure you have installed the python requirements in your conda environment
# conda activate winarena
# pip install -r requirements.txt
# From your activated conda environment:
cd scripts
python run_azure.py --experiments_json " experiments.json "对于experiments.json中的任何未完成的实验。
<num_workers azure Compute实例VM。<exp_name>的ML培训工作。运行中的日志将保存在agent_outputs文件夹中,并在上传Windows 11映像的同一BLOB容器中。您可以将agent_outputs文件夹下载到本地计算机并运行show_azure.py脚本,以将每个实验的结果视为Markdown表。
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > 是否想在Windows Agent Arena中测试您自己的代理商?您可以将我们的默认代理用作模板,并在src/win-arena-container/client/mm_agents下创建自己的文件夹。您只需要确保您的agent.py文件功能predict()和reset()函数即可。有关代理开发的更多信息,请查看BYOA文档。
我们欢迎对Windows Agent Arena项目的贡献。特别是我们欢迎:
如果您有兴趣贡献,请查看我们的任务开发指南。
| 成分 | 成本 | 时间 |
|---|---|---|
| Azure Standard_D8_V3 VM | 〜$ 8($ 0.38/h * 40 * 0.5h) | |
| GPT-4V | $ 100 | 〜35分钟40 VM |
| GPT-4O | $ 100 | 〜35分钟40 VM |
| GPT-4O-Mini | $ 15 | 〜30分钟,40 VM |
默认情况下, run-local.sh脚本试图创建具有8 GB RAM和8个CPU内核的QEMU VM。如果您的系统资源有限,则可以通过指定所需的RAM和CPU分配来覆盖这些默认值:
./run-local.sh --ram-size 4G --cpu-cores 4如果您的系统不支持KVM加速度,则可以通过指定--use-kvm false标志来禁用它:
./run-local.sh --use-kvm false请注意,由于性能问题,不建议在没有KVM加速的情况下在本地运行基准测试。在这种情况下,我们建议准备金色图像,以便以后在Azure上运行基准测试。
该项目欢迎贡献和建议。大多数捐款要求您同意撰写贡献者许可协议(CLA),宣布您有权并实际上授予我们使用您的贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com。
当您提交拉动请求时,CLA机器人将自动确定您是否需要提供CLA并适当装饰PR(例如状态检查,评论)。只需按照机器人提供的说明即可。您只需要使用我们的CLA在所有存储库中进行一次。
该项目采用了Microsoft开源的行为代码。有关更多信息,请参见《行为守则常见问题守则》或与其他问题或评论联系[email protected]。
该项目可能包含用于项目,产品或服务的商标或徽标。 Microsoft商标或徽标的授权使用受到了Microsoft的商标和品牌准则的约束。在此项目的修改版本中使用Microsoft商标或徽标不得引起混乱或暗示Microsoft赞助。任何使用第三方商标或徽标都遵守这些第三方政策。