
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贊助。任何使用第三方商標或徽標都遵守這些第三方政策。