
Windows Agent Arena (WAA)? adalah platform agen AI Windows yang dapat diskalakan untuk menguji dan membandingkan agen AI desktop multi-modal, desktop. WAA memberi para peneliti dan pengembang lingkungan OS Windows yang dapat direproduksi dan realistis untuk penelitian AI, di mana alur kerja AI agen dapat diuji di berbagai tugas.
WAA mendukung penyebaran agen pada skala menggunakan infrastruktur cloud Azure ML, memungkinkan untuk menjalankan paralel beberapa agen dan memberikan hasil benchmark cepat untuk ratusan tugas dalam hitungan menit, bukan hari.
diff_lvl="normal" menjadi diff_lvl="hard" di src/win-arena-container/start_client.sh . Di bawah kesulitan yang lebih sulit, dalam banyak tugas, agen juga harus belajar menginisialisasi/mengatur tugas itu sendiri (misalnya, menemukan dan membuka program/aplikasi yang tepat untuk tugas tersebut) daripada memiliki tugas "diatur" untuk mereka dengan tugas tersebut konfigurasi../run-local.sh --som-origin mixed-omni --gpu-enabled trueMakalah Laporan Teknis kami dapat ditemukan di sini. Jika Anda menemukan lingkungan ini bermanfaat, silakan pertimbangkan mengutip pekerjaan kami:
@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 .Kloning repositori dan instal dependensi:
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 Buat config.json baru di root proyek dengan tombol yang diperlukan (dari OpenAi atau Azure Endpoints):
{
"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
}Untuk memulai, tarik gambar dasar dari hub Docker:
docker pull windowsarena/winarena-base:latest Gambar ini mencakup semua dependensi yang diperlukan (seperti paket dan model) yang diperlukan untuk menjalankan kode di direktori src .
Selanjutnya, bangun gambar Winarena secara lokal:
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 Ini akan membuat windowsarena/winarena:latest dengan kode terbaru dari direktori src .
setup.iso dan salin ke direktori WindowsAgentArena/src/win-arena-container/vm/image Sebelum menjalankan arena, Anda perlu menyiapkan snapshot WAA baru (juga disebut gambar emas WAA). Snapshot 30GB ini mewakili Windows 11 VM yang berfungsi penuh dengan semua program yang diperlukan untuk menjalankan tolok ukur. VM ini juga meng -host server Python yang menerima dan mengeksekusi perintah agen. Untuk mempelajari lebih lanjut tentang komponen yang sedang dimainkan, lihat diagram komponen lokal dan cloud kami.
Untuk menyiapkan snapshot emas, jalankan sekali :
cd ./scripts
./run-local.sh --prepare-image true Anda dapat memantau kemajuan di http://localhost:8006 . Proses persiapan sepenuhnya otomatis dan akan memakan waktu ~ 20 menit.
Tolong jangan mengganggu VM saat sedang dipersiapkan. Ini akan ditutup secara otomatis ketika proses penyediaan selesai.


Pada akhirnya, Anda harus mengharapkan wadah Docker bernama winarena akan berakhir dengan anggun seperti yang ditunjukkan dari log di bawah ini.

Anda akan menemukan gambar emas WAA 30GB di WindowsAgentArena/src/win-arena-container/vm/storage , yang terdiri dari file-file berikut:

src/win-arena-container dalam gambar emas WAA, harap pastikan untuk menentukan bendera --skip-build false ke skrip run-local.sh (default ke BENAR). Ini akan memastikan bahwa gambar wadah baru dibangun alih -alih menggunakan prebuilt windowsarena/winarena:latest .storage .storage ini ke lokasi yang aman di luar repositori jika Anda atau agen secara tidak sengaja merusak VM di beberapa titik dan Anda ingin menghindari pengaturan baru.sudo ./bin/bash: bad interpreter: No such file or directory , kami sarankan untuk mengonversi skrip bash dari format DOS/Windows ke format UNIX: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +Anda sekarang siap meluncurkan evaluasi. Untuk menjalankan agen baseline pada semua tugas benchmark, lakukan:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helpBuka http: // localhost: 8006 untuk melihat Windows VM dengan agen berjalan. Jika Anda memiliki PC gemuk, Anda dapat menjalankan konfigurasi agen terkuat di makalah kami dengan melakukan:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uiaDi akhir jalan, Anda dapat menampilkan hasil menggunakan perintah:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > Di bawah ini adalah perbandingan dari berbagai kombinasi hiperparameter yang digunakan oleh agen navi dalam penelitian kami, yang dapat ditimpa dengan menentukan --som-origin <som_origin> --a11y-backend <a11y_backend> Saat menjalankan skrip run-local.sh :
| Memerintah | Keterangan | Catatan |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Menggabungkan omniparser dengan informasi pohon aksesibilitas | Direkomendasikan untuk hasil terbaik |
./run-local.sh --som-origin omni | Menggunakan omniparser untuk pemahaman layar | |
./run-local.sh --som-origin oss | Menggunakan WebParse, Grounddino, dan OCR (Tesseractoc) | ? Baseline |
./run-local.sh --som-origin a11y --a11y-backend uia | Menggunakan pohon aksesibilitas yang lebih lambat dan lebih akurat | |
./run-local.sh --som-origin a11y --a11y-backend win32 | Menggunakan pohon aksesibilitas yang lebih cepat dan kurang akurat | ? Tercepat |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | Menggabungkan deteksi OSS dengan pohon aksesibilitas |
--som-origin Menentukan bagaimana agen navi mendeteksi elemen layar--a11y-backend Menentukan jenis backend aksesibilitas (saat menggunakan mode a11y atau campuran) Pada pandangan pertama mungkin tampak menantang untuk mengembangkan/men -debug kode yang berjalan di dalam wadah Docker. Namun, kami memberikan beberapa tips untuk membuat proses ini lebih mudah. Periksa Dokter Pengembangan Tips untuk detail lebih lanjut seperti:
Kami menawarkan cara yang mulus untuk menjalankan arena Windows Agent pada Azure ML Compute VMS. Opsi ini akan secara signifikan mengurangi waktu yang dibutuhkan untuk menguji agen Anda di semua tugas tolok ukur dari jam/hari hingga menit.
AZURE_SUBSCRIPTION_ID di bagian 3.agents ) di wilayah pilihan Anda. Perhatikan nama grup sumber daya, kami akan menggunakannya sebagai AZURE_ML_RESOURCE_GROUP di bagian 3.agents_ml ). Perhatikan nama ruang kerja ML, kami akan menggunakannya sebagai AZURE_ML_WORKSPACE_NAME di bagian 3. Selama wizard pembuatan, pastikan untuk memeriksa kotak untuk secara otomatis membuat yang baru:
agents ) 
Notebooks . Di folder yang ditugaskan pengguna Anda (seperti yang ditunjukkan pada gambar di bawah), buat file bash (.sh) baru bernama compute-instance-startup.sh . Salin konten scripts/azure_files/compute-instance-startup.sh ke dalam file ini dan simpan. Skrip ini akan digunakan setiap kali VM baru diluncurkan di Azure untuk menerapkan beberapa konfigurasi dasar. Perhatikan jalur di mana Anda menyimpan file (dalam bentuk Users/<YOUR_USER>/compute-instance-startup.sh ), kami akan menggunakannya untuk menjalankan skrip di bagian 3. 
Standard_D8_v3 VM untuk benchmarking kami, yang berada di bawah kategori Standard Dv3 Family Cluster Dedicated vCPUs . Setiap VM menggunakan 8 core. Pastikan jenis mesin yang Anda gunakan mendukung virtualisasi bersarang. 
Unggah folder penyimpanan Windows 11 ke wadah gumpalan yang terkait dengan datastore default Anda. Secara default, data dasar Azure ML Workspace didukung oleh akun penyimpanan melalui satu atau lebih ML datastores. Datastore default, bernama workspaceblobstore , dibuat selama pengaturan ruang kerja dan ditautkan ke wadah gumpalan di bawah akun penyimpanan Azure. Anda dapat meninjau hubungan antara datastores dan wadah dengan mengunjungi Azure ML Datastore. Setelah ditemukan, Anda kemudian dapat mengunggah folder penyimpanan dengan cara yang berbeda:
WindowsAgentArena/src/win-arena-container/vm/storage dari mesin lokal Anda setelah menjalankan langkah pengaturan lokal. 
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 , pilih wadah Anda, dan unggah folder. Opsi ini tidak disarankan untuk file besar karena koneksi mungkin menjadi tidak stabil. [Opsional] Jika Anda tidak menggunakan windowsarena/winarena:latest , Anda dapat mengunggah gambar khusus Anda ke Azure Container Registry. Anda dapat melakukannya dengan mengikuti dokumentasi Registry Azure Container
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 di root proyek: {
... // 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 untuk menentukan parameter apa pun yang diperlukan untuk setiap percobaan yang dijalankan, termasuk agen untuk menggunakan dan model LLM yang mendasari untuk digunakan. Anda dapat menemukan experiments.json referensi.json yang terdiri dari beberapa percobaan untuk dijalankan di 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 dengan menggunakan parameter --experiments_json dan --update_json dari run_azure.py , JSON di atas setara dengan perintah berikut: 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 " Untuk setiap percobaan yang belum selesai dalam experiments.json , skrip akan:
<num_workers Azure.<exp_name> per vm. Log dari run akan disimpan di folder agent_outputs di wadah gumpalan yang sama di mana Anda mengunggah gambar Windows 11. Anda dapat mengunduh folder agent_outputs ke mesin lokal Anda dan menjalankan skrip show_azure.py untuk melihat hasil dari setiap percobaan sebagai tabel penurunan harga.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Ingin menguji agen Anda sendiri di Windows Agent Arena? Anda dapat menggunakan agen default kami sebagai templat dan membuat folder Anda sendiri di bawah src/win-arena-container/client/mm_agents . Anda hanya perlu memastikan bahwa fitur file agent.py Anda predict() dan reset() fungsi. Untuk informasi lebih lanjut tentang pengembangan agen, periksa BYOA Doc.
Kami menyambut kontribusi untuk proyek Windows Agent Arena. Secara khusus, kami menyambut:
Jika Anda tertarik untuk berkontribusi, silakan lihat pedoman pengembangan tugas kami.
| Komponen | Biaya | Waktu |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ $ 8 ($ 0,38/jam * 40 * 0,5 jam) | |
| GPT-4V | $ 100 | ~ 35 menit dengan 40 VM |
| GPT-4O | $ 100 | ~ 35 menit dengan 40 VM |
| GPT-4O-Mini | $ 15 | ~ 30 menit dengan 40 VM |
Secara default, skrip run-local.sh berupaya membuat qEMU VM dengan 8 GB RAM dan 8 core CPU. Jika sistem Anda memiliki sumber daya yang terbatas, Anda dapat mengganti default ini dengan menentukan RAM yang diinginkan dan alokasi CPU:
./run-local.sh --ram-size 4G --cpu-cores 4 Jika sistem Anda tidak mendukung akselerasi KVM, Anda dapat menonaktifkannya dengan menentukan-bendera --use-kvm false :
./run-local.sh --use-kvm falsePerhatikan bahwa menjalankan patokan secara lokal tanpa akselerasi KVM tidak disarankan karena masalah kinerja. Dalam hal ini, kami sarankan menyiapkan gambar emas untuk kemudian menjalankan tolok ukur di Azure.
Proyek ini menyambut kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda untuk menyetujui perjanjian lisensi kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar -benar melakukannya, beri kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.opensource.microsoft.com.
Saat Anda mengirimkan permintaan tarik, bot CLA akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghiasi PR secara tepat (misalnya, pemeriksaan status, komentar). Cukup ikuti instruksi yang disediakan oleh bot. Anda hanya perlu melakukan ini sekali di semua repo menggunakan CLA kami.
Proyek ini telah mengadopsi kode perilaku open source Microsoft. Untuk informasi lebih lanjut, lihat FAQ Kode Perilaku atau hubungi [email protected] dengan pertanyaan atau komentar tambahan.
Proyek ini dapat berisi merek dagang atau logo untuk proyek, produk, atau layanan. Penggunaan resmi merek dagang atau logo Microsoft tunduk dan harus mengikuti pedoman merek dagang & merek Microsoft. Penggunaan merek dagang atau logo Microsoft dalam versi yang dimodifikasi dari proyek ini tidak boleh menyebabkan kebingungan atau menyiratkan sponsor Microsoft. Setiap penggunaan merek dagang atau logo pihak ketiga tunduk pada kebijakan pihak ketiga tersebut.