
Windows Agent Arena (WAA)? ist eine skalierbare Windows-AI-Agentenplattform zum Testen und Benchmarking multi-modaler Desktop-AI-Agenten. WAA bietet Forschern und Entwicklern eine reproduzierbare und realistische Windows -OS -Umgebung für die KI -Forschung, in der agierische KI -Workflows über eine Vielzahl von Aufgaben getestet werden können.
WAA unterstützt den Einsatz von Agenten im Maßstab mithilfe der Azure ML Cloud -Infrastruktur, sodass das parallele Ausführen mehrerer Agenten und die Erbringung von schnellen Benchmark -Ergebnissen für Hunderte von Aufgaben innerhalb von Minuten und nicht in Tagen ermöglicht.
diff_lvl="normal" in diff_lvl="hard" in src/win-arena-container/start_client.sh ändern. Unter der schwierigeren Schwierigkeit müssen Agenten bei vielen Aufgaben auch lernen, die Aufgabe selbst initialisieren/einzurichten (z. Konfiguration../run-local.sh --som-origin mixed-omni --gpu-enabled trueUnser technisches Berichtspapier finden Sie hier. Wenn Sie diese Umgebung nützlich finden, sollten Sie unsere Arbeit zitieren:
@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 .Klonen Sie das Repository und installieren Sie Abhängigkeiten:
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 Erstellen Sie eine neue config.json am root des Projekts mit den erforderlichen Schlüssel (von OpenAI- oder Azure -Endpunkten):
{
"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
}Ziehen Sie zu Beginn das Basisbild von Docker Hub aus:
docker pull windowsarena/winarena-base:latest Dieses Bild enthält alle erforderlichen Abhängigkeiten (z. B. Pakete und Modelle), die zum Ausführen des Code im src -Verzeichnis erforderlich sind.
Erstellen Sie als nächstes das Winarena -Bild 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 Dadurch werden die windowsarena/winarena:latest Bild mit dem neuesten Code aus dem src -Verzeichnis erstellt.
setup.iso um und kopieren Sie sie in das Verzeichnis WindowsAgentArena/src/win-arena-container/vm/image Vor dem Ausführen der Arena müssen Sie einen neuen WAA -Snapshot vorbereiten (auch als WAA Golden Image bezeichnet). Dieser 30 -GB -Snapshot repräsentiert eine voll funktionsfähige Windows 11 -VM mit allen Programmen, die zum Ausführen des Benchmarks erforderlich sind. Diese VM hostet zusätzlich einen Python -Server, der Agentenbefehle empfängt und ausführt. Weitere Informationen zu den Komponenten beim Spielen finden Sie in unseren lokalen und Cloud -Komponenten -Diagrammen.
Um den Gold -Schnappschuss vorzubereiten, laufen Sie einmal :
cd ./scripts
./run-local.sh --prepare-image true Sie können den Fortschritt unter http://localhost:8006 überwachen. Der Vorbereitungsprozess ist vollständig automatisiert und dauert ~ 20 Minuten.
Bitte stören Sie die VM nicht, während es vorbereitet wird. Es wird automatisch heruntergefahren, wenn der Bereitstellungsprozess abgeschlossen ist.


Am Ende sollten Sie erwarten, dass der Docker Container namens winarena anmutig endet, wie aus den folgenden Protokollen gezeigt.

Sie finden das 30 GB WAA Goldene Bild in WindowsAgentArena/src/win-arena-container/vm/storage , die aus den folgenden Dateien bestehen:

src/win-arena-container in das Golden Image von WAA einbeziehen möchten, stellen Sie bitte sicher, dass das Flag --skip-build false für das run-local.sh -Skript angeben (standardmäßig zu WAHR). Dadurch wird sichergestellt, dass ein neues Containerbild erstellt wird, anstatt das vorgebaute windowsarena/winarena:latest Bild zu verwenden.storage löschen.storage an einen sicheren Ort außerhalb des Repositorys zu kopieren, falls Sie oder der Agent die VM irgendwann versehentlich beschädigt haben, und Sie möchten ein frisches Setup vermeiden.sudo ausführen./bin/bash: bad interpreter: No such file or directory begegnen, empfehlen wir, die Bash -Skripte aus dem DOS/Windows -Format in UNIX -Format zu konvertieren: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +Sie sind jetzt bereit, die Bewertung zu starten. Um den Basisagenten für alle Benchmark -Aufgaben auszuführen, tun Sie:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helpÖffnen Sie http: // localhost: 8006, um den Windows VM mit dem Agenten zu sehen. Wenn Sie einen kräftigen PC haben, können Sie stattdessen die stärkste Agentenkonfiguration in unserem Papier ausführen, indem Sie:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uiaAm Ende des Laufs können Sie die Ergebnisse mit dem Befehl anzeigen:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > Im Folgenden finden Sie einen Vergleich verschiedener Kombinationen von Hyperparametern, die vom Navi-Agenten in unserer Studie verwendet werden, die durch Angabe --som-origin <som_origin> --a11y-backend <a11y_backend> beim Ausführen des Skripts run-local.sh überschrieben werden kann:
| Befehl | Beschreibung | Notizen |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Kombiniert Omniparser mit Zugangsbauminformationen | Empfohlen für die besten Ergebnisse |
./run-local.sh --som-origin omni | Verwendet Omniparser zum Bildschirmverständnis | |
./run-local.sh --som-origin oss | Verwendet WebParse, Grounddino und OCR (Tesseractocr) | Basislinie |
./run-local.sh --som-origin a11y --a11y-backend uia | Verwendet langsamer und genauerer Bahnbaum | |
./run-local.sh --som-origin a11y --a11y-backend win32 | Verwendet schnellere, weniger genaue Zugänglichkeitsbaum | ? Schnellste |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | Kombiniert OSS -Erkennungen mit Breacing Tree |
--som-origin bestimmt, wie der NAVI-Agent Bildschirmelemente erkennt--a11y-backend gibt den Backend-Typ der Barrierefreiheit an (bei Verwendung von a11y oder gemischten Modi) Auf den ersten Blick scheint es schwierig zu sein, Code im Docker -Container zu entwickeln/zu debuggen. Wir bieten jedoch ein paar Tipps, um diesen Vorgang zu erleichtern. Weitere Informationen wie:
Wir bieten eine nahtlose Möglichkeit, die Windows Agent Arena auf Azure ML Compute VMs auszuführen. Diese Option verkürzt die benötigte Zeit erheblich, um Ihren Agenten in allen Benchmark -Aufgaben von Stunden/Tagen bis Minuten zu testen.
AZURE_SUBSCRIPTION_ID verwenden.agents ) in der Region Ihrer Wahl. Beachten Sie den Ressourcengruppennamen. Wir werden ihn in Abschnitt 3 als AZURE_ML_RESOURCE_GROUP verwenden.agents_ml ). Beachten Sie den Namen ML Workspace, wir werden ihn in Abschnitt 3 als AZURE_ML_WORKSPACE_NAME verwenden. Während des Erstellungsassistenten überprüfen Sie die Kästchen zum automatischen Erstellen neuer:
agents ) 
Notebooks . Erstellen Sie in Ihrem benutzerdefinierten Ordner (wie in der Abbildung unten gezeigt) eine neue Bash (.sh) -Datei mit dem Namen compute-instance-startup.sh . Kopieren Sie den Inhalt von scripts/azure_files/compute-instance-startup.sh in diese Datei und speichern Sie sie. Dieses Skript wird jedes Mal verwendet, wenn ein neues VM in Azure gestartet wird, um einige Basiskonfigurationen anzuwenden. Beachten Sie den Pfad, in dem Sie die Datei speichern (in Form von Users/<YOUR_USER>/compute-instance-startup.sh ), werden wir das Skript in Abschnitt 3 ausführen. 
Standard_D8_v3 für unser Benchmarking, das unter die Standard Dv3 Family Cluster Dedicated vCPUs fällt. Jeder VM verwendet 8 Kerne. Stellen Sie sicher, dass der von Ihnen verwendete Maschinenart unterstützt verschachteltes Virtualisierung. 
Laden Sie den Windows 11 -Speicherordner in den BLOB -Container hoch, der Ihrem Standarddatastore zugeordnet ist. Standardmäßig werden die zugrunde liegenden Daten des Azure ML Workspace durch ein Speicherkonto über einen oder mehrere ML -Datenspeicher gesichert. Der Standarddatastore namens workspaceblobstore wird während des Arbeitsbereichs erstellt und mit einem Blob -Container unter dem Azure -Speicherkonto verknüpft. Sie können den Zusammenhang zwischen den Datenspeichern und Containern untersuchen, indem Sie den Azure ML -Datenspeicher besuchen. Sobald Sie gefunden wurden, können Sie den Speicherordner auf unterschiedliche Weise hochladen:
WindowsAgentArena/src/win-arena-container/vm/storage von Ihrem lokalen Computer aus, nachdem Sie die lokalen Setup-Schritte ausgeführt haben. 
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 , wählen Sie Ihren Container aus und laden Sie den Ordner hoch. Diese Option wird für große Dateien nicht empfohlen, da Verbindungen möglicherweise instabil werden. [Optional] Wenn Sie nicht das Standard windowsarena/winarena:latest -Image verwenden, können Sie Ihr benutzerdefiniertes Bild in die Registrierung von Azure Container hochladen. Sie können dies tun, indem Sie der Dokumentation der Azure Container -Registrierung folgen
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 zum Stamm des Projekts hinzu: {
... // 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 , um die für jeden Experimentlauf benötigten Parameter anzugeben, einschließlich des zur Verwendungsverkehrs zugrunde liegenden LLM -Modells. Sie können eine Referenzversuche finden experiments.json , das aus mehreren Experimenten besteht, um auf scripts/experiments.json zu ausgeführt.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 generieren, indem Sie sowohl die Parameter --experiments_json als auch --update_json von run_azure.py verwenden. Der obige JSON entspricht dem folgenden Befehl: 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 " Für alle unvollendeten Experimente in experiments.json wird das Skript:
<num_workers azure compute instance vms.<exp_name> pro VM aus. Die Protokolle aus dem Lauf werden in einem Ordner agent_outputs im selben Blob -Container gespeichert, in dem Sie das Windows 11 -Bild hochgeladen haben. Sie können den Ordner agent_outputs auf Ihren lokalen Computer herunterladen und das Skript show_azure.py ausführen, um die Ergebnisse jedes Experiments als Markdown -Tabelle anzuzeigen.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Möchten Sie Ihre eigenen Agenten in der Windows Agent Arena testen? Sie können unseren Standardagenten als Vorlage verwenden und Ihren eigenen Ordner unter src/win-arena-container/client/mm_agents erstellen. Sie müssen lediglich sicherstellen, dass Ihre Funktionen für Ihre Funktionen agent.py predict() und Reset () () und reset() . Weitere Informationen zur Agentenentwicklung finden Sie im BYOA -DOC.
Wir begrüßen Beiträge zum Windows Agent Arena -Projekt. Insbesondere begrüßen wir:
Wenn Sie an einem Beitrag interessiert sind, lesen Sie bitte unsere Richtlinien zur Aufgabenentwicklung.
| Komponente | Kosten | Zeit |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ $ 8 ($ 0,38/H * 40 * 0,5H) | |
| GPT-4V | $ 100 | ~ 35 min mit 40 VMs |
| Gpt-4o | $ 100 | ~ 35 min mit 40 VMs |
| GPT-4O-Mini | $ 15 | ~ 30 Minuten mit 40 VMs |
Standardmäßig versucht das run-local.sh -Skript, eine QEMU-VM mit 8 GB RAM und 8 CPU-Kernen zu erstellen. Wenn Ihr System über nur begrenzte Ressourcen verfügt, können Sie diese Standardeinstellungen überschreiben, indem Sie die gewünschte RAM- und CPU -Zuordnung angeben:
./run-local.sh --ram-size 4G --cpu-cores 4 Wenn Ihr System keine KVM-Beschleunigung unterstützt, können Sie es deaktivieren, indem Sie die --use-kvm false angeben:
./run-local.sh --use-kvm falseBeachten Sie, dass die Ausführung des Benchmarks ohne KVM -Beschleunigung aufgrund von Leistungsproblemen nicht empfohlen wird. In diesem Fall empfehlen wir die Vorbereitung des goldenen Bildes für die spätere Ausführung des Benchmarks auf Azure.
Dieses Projekt begrüßt Beiträge und Vorschläge. In den meisten Beiträgen müssen Sie einer Mitarbeiters Lizenzvereinbarung (CLA) zustimmen, in der Sie erklären, dass Sie das Recht haben und uns tatsächlich tun, um uns die Rechte zu gewähren, Ihren Beitrag zu verwenden. Weitere Informationen finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie eine Pull -Anfrage einreichen, bestimmt ein CLA -Bot automatisch, ob Sie eine CLA angeben und die PR angemessen dekorieren müssen (z. B. Statusprüfung, Kommentar). Befolgen Sie einfach die vom Bot bereitgestellten Anweisungen. Sie müssen dies nur einmal über alle Repos mit unserem CLA tun.
Dieses Projekt hat den Microsoft Open Source -Verhaltenscode übernommen. Weitere Informationen finden Sie im FAQ oder wenden Sie sich an [email protected] mit zusätzlichen Fragen oder Kommentaren.
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Verwendung von Microsoft -Marken oder Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss folgen. Die Verwendung von Microsoft -Marken oder Logos in geänderten Versionen dieses Projekts darf keine Verwirrung verursachen oder Microsoft -Sponsoring implizieren. Jede Verwendung von Marken oder Logos von Drittanbietern unterliegt den Richtlinien dieses Drittanbieters.