
Windows Agent Arena (WAA)? est une plate-forme d'agent Windows AI évolutive pour les tests et l'analyse comparative des agents multimodaux de bureau. WAA fournit aux chercheurs et aux développeurs un environnement de Windows OS reproductible et réaliste pour la recherche sur l'IA, où les flux de travail de l'IA agentiques peuvent être testés sur un éventail diversifié de tâches.
WAA prend en charge le déploiement d'agents à grande échelle en utilisant l'infrastructure Cloud Azure ML, permettant le fonctionnement parallèle de plusieurs agents et fournissant des résultats de référence rapides pour des centaines de tâches en minutes, pas des jours.
diff_lvl="normal" par défaut sur diff_lvl="hard" dans src/win-arena-container/start_client.sh . Sous la difficulté plus difficile, dans de nombreuses tâches, les agents doivent également apprendre à initialiser / configurer la tâche eux-mêmes (par exemple, trouver et ouvrir le bon programme / application pour la tâche) plutôt que de faire en sorte que la tâche "configure" par la tâche par la tâche config../run-local.sh --som-origin mixed-omni --gpu-enabled trueNotre document de rapport technique peut être trouvé ici. Si vous trouvez cet environnement utile, veuillez envisager de citer notre travail:
@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 .Clone le référentiel et les dépendances d'installation:
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 Créez une nouvelle config.json à la racine du projet avec les touches nécessaires (à partir des points de terminaison Openai ou Azure):
{
"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
}Pour commencer, tirez l'image de base de Docker Hub:
docker pull windowsarena/winarena-base:latest Cette image comprend toutes les dépendances nécessaires (telles que les packages et les modèles) nécessaires pour exécuter le code dans le répertoire src .
Ensuite, construisez l'image Winarena localement:
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 Cela créera la windowsarena/winarena:latest image avec le dernier code du répertoire src .
setup.iso et copiez-le dans le répertoire WindowsAgentArena/src/win-arena-container/vm/image Avant d'exécuter l'arène, vous devez préparer un nouvel instantané WAA (également appelé WAA Golden Image). Cet instantané de 30 Go représente une VM Windows 11 entièrement fonctionnelle avec tous les programmes nécessaires pour exécuter l'indice de référence. Cette machine virtuelle héberge en outre un serveur Python qui reçoit et exécute des commandes d'agent. Pour en savoir plus sur les composants en jeu, consultez nos diagrammes de composants locaux et cloud.
Pour préparer l'instantané d'or, courez une fois :
cd ./scripts
./run-local.sh --prepare-image true Vous pouvez suivre les progrès sur http://localhost:8006 . Le processus de préparation est entièrement automatisé et prendra environ 20 minutes.
Veuillez ne pas interférer avec la machine virtuelle pendant sa préparation. Il s'arrêtera automatiquement lorsque le processus d'approvisionnement sera terminé.


À la fin, vous devez vous attendre à ce que le conteneur Docker nommé winarena se termine gracieusement comme indiqué dans les journaux ci-dessous.

Vous trouverez l'image Golden de 30 Go WAA dans WindowsAgentArena/src/win-arena-container/vm/storage , composé des fichiers suivants:

run-local.sh développement, si vous souhaitez inclure des modifications apportées dans le répertoire src/win-arena-container dans l'image WAA Golden, veuillez vous assurer de spécifier l'indicateur --skip-build false vrai). Cela garantira qu'une nouvelle image de conteneur est construite à la place que d'utiliser la dernière image windowsarena/winarena:latest image.storage .storage dans un emplacement sûr à l'extérieur du référentiel au cas où vous ou l'agent corrompez accidentellement la machine virtuelle à un moment donné et vous souhaitez éviter une nouvelle configuration.sudo ./bin/bash: bad interpreter: No such file or directory , nous vous recommandons de convertir les scripts bash du format DOS / Windows au format UNIX: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +Vous êtes maintenant prêt à lancer l'évaluation. Pour exécuter l'agent de base sur toutes les tâches de référence, faites:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helpOuvrez http: // localhost: 8006 pour voir la machine virtuelle Windows avec l'agent en cours d'exécution. Si vous avez un PC Beefy, vous pouvez à la place exécuter la configuration d'agent la plus forte de notre article en faisant:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uiaÀ la fin de l'exécution, vous pouvez afficher les résultats à l'aide de la commande:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > Vous trouverez ci-dessous une comparaison de diverses combinaisons d'hyperparamètres utilisées par l'agent Navi dans notre étude, qui peut être remplacée en spécifiant --som-origin <som_origin> --a11y-backend <a11y_backend> lors de l'exécution du script run-local.sh Script:
| Commande | Description | Notes |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Combine omniparser avec des informations sur les arbres d'accessibilité | Recommandé pour les meilleurs résultats |
./run-local.sh --som-origin omni | Utilise omniparser pour la compréhension de l'écran | |
./run-local.sh --som-origin oss | Utilise WebParse, GroundingDino et OCR (Tesseractocr) | ? |
./run-local.sh --som-origin a11y --a11y-backend uia | Utilise l'arbre d'accessibilité plus lent et plus précis | |
./run-local.sh --som-origin a11y --a11y-backend win32 | Utilise l'arbre d'accessibilité plus rapide et moins précis | «Le plus rapide |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | Combine les détections OSS avec une arborescence d'accessibilité |
--som-origin détermine comment l'agent Navi détecte les éléments d'écran--a11y-backend spécifie le type de backend d'accessibilité (lors de l'utilisation de modes a11y ou mixtes) À première vue, il peut sembler difficile de développer / déboguer le code exécuté à l'intérieur du conteneur Docker. Cependant, nous fournissons quelques conseils pour faciliter ce processus. Vérifiez le Doc de développement-tips pour plus de détails tels que:
Nous offrons un moyen transparent d'exécuter le Windows Agent Arena sur Azure ML Compute VMS. Cette option réduira considérablement le temps nécessaire pour tester votre agent dans toutes les tâches de référence des heures / jours à quelques minutes.
AZURE_SUBSCRIPTION_ID dans la section 3.agents ) dans la région de votre choix. Prenez note du nom du groupe de ressources, nous l'utiliserons comme AZURE_ML_RESOURCE_GROUP dans la section 3.agents_ml ). Prenez note du nom de l'espace de travail ML, nous l'utiliserons comme AZURE_ML_WORKSPACE_NAME dans la section 3. Pendant l'assistant de création, assurez-vous de cocher les cases pour la création automatique de nouveau:
agents ) 
Notebooks . Dans votre dossier attribué par l'utilisateur (comme indiqué dans la figure ci-dessous), créez un nouveau fichier bash (.sh) nommé compute-instance-startup.sh . Copiez le contenu de scripts/azure_files/compute-instance-startup.sh dans ce fichier et enregistrez-le. Ce script sera utilisé chaque fois qu'une nouvelle machine virtuelle est lancée dans Azure pour appliquer certaines configurations de base. Prenez note du chemin où vous enregistrez le fichier (sous la forme d' Users/<YOUR_USER>/compute-instance-startup.sh ), nous l'utiliserons pour exécuter le script dans la section 3. 
Standard_D8_v3 pour notre comparaison, qui relève de la catégorie Standard Dv3 Family Cluster Dedicated vCPUs . Chaque machine virtuelle utilise 8 cœurs. Assurez-vous que le type de machine que vous utilisez prend en charge la virtualisation imbriquée. 
Téléchargez le dossier de stockage Windows 11 dans le conteneur blob associé à votre bosses de données par défaut. Par défaut, les données sous-jacentes de l'espace de travail Azure ML sont soutenues par un compte de stockage via une ou plusieurs datastores ML. Le centre de données par défaut, nommé workspaceblobstore , est créé lors de la configuration de l'espace de travail et lié à un conteneur blob sous le compte de stockage Azure. Vous pouvez consulter l'association entre les datastores et les conteneurs en visitant Azure ML Datastore. Une fois trouvé, vous pouvez ensuite télécharger le dossier de stockage de différentes manières:
WindowsAgentArena/src/win-arena-container/vm/storage de votre machine locale après avoir exécuté les étapes de configuration locales. 
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 , sélectionnez votre conteneur et téléchargez le dossier. Cette option n'est pas recommandée pour les fichiers volumineux car les connexions peuvent être instables. [Facultatif] Si vous n'utilisez pas la par défaut windowsarena/winarena:latest image, vous pouvez télécharger votre image personnalisée dans le registre des conteneurs Azure. Vous pouvez le faire en suivant la documentation du registre des conteneurs 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 à la racine du projet: {
... // 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 pour spécifier tous les paramètres nécessaires pour chaque exécution d'expérience, y compris l'agent à déployer et le modèle LLM sous-jacent à utiliser. Vous pouvez trouver une référence experiments.json composée de plusieurs expériences à exécuter sur 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 en utilisant à la fois les paramètres --experiments_json et --update_json de run_azure.py , le JSON ci-dessus est équivalent à la commande suivante: 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 " Pour toutes les expériences inachevées dans experiments.json , le script sera:
<num_workers azure calculer les machines virtuelles d'instance.<exp_name> par machine virtuelle. Les journaux de l'exécution seront enregistrés dans un dossier agent_outputs dans le même conteneur blob où vous avez téléchargé l'image Windows 11. Vous pouvez télécharger le dossier agent_outputs sur votre machine locale et exécuter le script show_azure.py pour voir les résultats de chaque expérience comme une table de démarrage.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Vous voulez tester vos propres agents dans Arec Area Windows? Vous pouvez utiliser notre agent par défaut comme modèle et créer votre propre dossier sous src/win-arena-container/client/mm_agents . Il vous suffit de vous assurer que les fonctions de fichier agent.py predict() et reset() . Pour plus d'informations sur le développement des agents, consultez le DOC BYOA.
Nous accueillons des contributions au projet Windows Agent Arena. En particulier, nous accueillons:
Si vous souhaitez contribuer, veuillez consulter nos directives de développement des tâches.
| Composant | Coût | Temps |
|---|---|---|
| VM Azure Standard_D8_V3 | ~ 8 $ (0,38 $ / h * 40 * 0,5h) | |
| GPT-4V | 100 $ | ~ 35 minutes avec 40 VM |
| GPT-4O | 100 $ | ~ 35 minutes avec 40 VM |
| GPT-4O-MINI | 15 $ | ~ 30 minutes avec 40 VM |
Par défaut, le script run-local.sh tente de créer une machine virtuelle Qemu avec 8 Go de RAM et 8 cœurs CPU. Si votre système dispose de ressources limitées, vous pouvez remplacer ces valeurs par défaut en spécifiant l'allocation RAM et CPU souhaitée:
./run-local.sh --ram-size 4G --cpu-cores 4 Si votre système ne prend pas en charge l'accélération KVM, vous pouvez le désactiver en spécifiant le --use-kvm false :
./run-local.sh --use-kvm falseNotez que l'exécution de la référence localement sans accélération KVM n'est pas recommandée en raison de problèmes de performances. Dans ce cas, nous vous recommandons de préparer l'image dorée pour exécuter plus tard le référence sur Azure.
Ce projet accueille les contributions et les suggestions. La plupart des contributions vous obligent à accepter un accord de licence de contributeur (CLA) déclarant que vous avez le droit de faire et en fait, accordez-nous les droits d'utilisation de votre contribution. Pour plus de détails, visitez https://cla.opensource.microsoft.com.
Lorsque vous soumettez une demande de traction, un bot CLA déterminera automatiquement si vous devez fournir un CLA et décorer le RP de manière appropriée (par exemple, vérification d'état, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez besoin de le faire qu'une seule fois sur tous les dépositions en utilisant notre CLA.
Ce projet a adopté le code de conduite open source Microsoft. Pour plus d'informations, consultez le code de conduite FAQ ou contactez [email protected] avec toute question ou commentaire supplémentaire.
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée de marques ou de logos Microsoft est soumise et doit suivre les directives de marque et de marque de Microsoft. L'utilisation de marques ou de logos de Microsoft dans des versions modifiées de ce projet ne doit pas provoquer de confusion ou impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumis aux politiques de ces tiers.