
Windows Agent Arena (WAA)? es una plataforma de agente de IA de Windows escalable para probar y comparar agentes de IA de escritorio multimodal. WAA proporciona a los investigadores y desarrolladores un entorno de Windows OS reproducible y realista para la investigación de IA, donde los flujos de trabajo de IA de agente pueden probarse en una amplia gama de tareas.
WAA admite la implementación de agentes a escala utilizando la infraestructura de la nube Azure ML, permitiendo la ejecución paralela de múltiples agentes y entregando resultados de referencia rápidos para cientos de tareas en minutos, no días.
diff_lvl="normal" a diff_lvl="hard" en src/win-arena-container/start_client.sh . Bajo la dificultad más difícil, en muchas tareas, los agentes también deben aprender a inicializar/configurar la tarea ellos mismos (por ejemplo, encontrar y abrir el programa/aplicación correcta para la tarea) en lugar de tener la tarea "configurada" para ellos por la tarea configuración../run-local.sh --som-origin mixed-omni --gpu-enabled trueNuestro documento de informe técnico se puede encontrar aquí. Si encuentra útil este entorno, considere citar nuestro trabajo:
@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 .Clon el repositorio e instalación de dependencias:
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 Cree un nuevo config.json en la raíz del proyecto con las claves necesarias (desde puntos finales de Operai o 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
}Para comenzar, extraiga la imagen base del Docker Hub:
docker pull windowsarena/winarena-base:latest Esta imagen incluye todas las dependencias necesarias (como paquetes y modelos) necesarios para ejecutar el código en el directorio src .
A continuación, construya la imagen de Winarena localmente:
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 Esto creará windowsarena/winarena:latest imagen con el último código del directorio src .
setup.iso y cópielo al directorio WindowsAgentArena/src/win-arena-container/vm/image Antes de ejecutar la arena, debe preparar una nueva instantánea de WAA (también denominada imagen Golden WAA). Esta instantánea de 30 GB representa una VM de Windows 11 completamente funcional con todos los programas necesarios para ejecutar el punto de referencia. Esta VM también aloja un servidor Python que recibe y ejecuta comandos de agente. Para obtener más información sobre los componentes de juego, consulte nuestros diagramas de componentes locales y en la nube.
Para preparar la instantánea de oro, ejecute una vez :
cd ./scripts
./run-local.sh --prepare-image true Puede monitorear el progreso en http://localhost:8006 . El proceso de preparación está completamente automatizado y tomará ~ 20 minutos.
No interfiera con la VM mientras se está preparando. Se cerrará automáticamente cuando se complete el proceso de aprovisionamiento.


Al final, debe esperar que el contenedor Docker llamado winarena termine con gracia como se muestra en los siguientes registros.

Encontrará la imagen dorada WAA de 30 GB en WindowsAgentArena/src/win-arena-container/vm/storage , que consiste en los siguientes archivos:

src/win-arena-container en la imagen Golden WAA, asegúrese de especificar el indicador --skip-build false en el script run-local.sh (predeterminado a verdadero). Esto asegurará que se construya una nueva imagen de contenedor en lugar de usar el windowsarena/winarena:latest imagen.storage .storage a una ubicación segura fuera del repositorio en caso de que usted o el agente corrompan accidentalmente a la VM en algún momento y desea evitar una nueva configuración.sudo ./bin/bash: bad interpreter: No such file or directory , recomendamos convertir los scripts de bash del formato DOS/Windows a un formato UNIX: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +Ahora estás listo para lanzar la evaluación. Para ejecutar el agente de referencia en todas las tareas de referencia, haga:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helpAbra http: // localhost: 8006 para ver la VM de Windows con el agente en ejecución. Si tiene una PC robusta, puede ejecutar la configuración del agente más fuerte en nuestro documento haciendo:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uiaAl final de la ejecución, puede mostrar los resultados utilizando el comando:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > A continuación se muestra una comparación de varias combinaciones de hiperparámetros utilizados por el agente NAVI en nuestro estudio, que puede anularse especificando --som-origin <som_origin> --a11y-backend <a11y_backend> Al ejecutar el script run-local.sh :
| Dominio | Descripción | Notas |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Combina omniparser con la información del árbol de accesibilidad | Recomendado para obtener los mejores resultados |
./run-local.sh --som-origin omni | Utiliza omniparser para la comprensión de la pantalla | |
./run-local.sh --som-origin oss | Utiliza WebParse, Reundingdino y OCR (Tesseractocr) | ?Base |
./run-local.sh --som-origin a11y --a11y-backend uia | Utiliza un árbol de accesibilidad más lento y preciso | |
./run-local.sh --som-origin a11y --a11y-backend win32 | Utiliza un árbol de accesibilidad más rápido y menos preciso | ?Lo más rápido |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | Combina detecciones de OSS con árbol de accesibilidad |
--som-origin determina cómo el agente Navi detecta elementos de pantalla--a11y-backend especifica el tipo de backend de accesibilidad (cuando se usa a11y o modos mixtos) A primera vista, puede parecer difícil desarrollar/depurar código que se ejecuta dentro del contenedor Docker. Sin embargo, proporcionamos algunos consejos para facilitar este proceso. Consulte el documento de desarrollo de las puntas para obtener más detalles, como:
Ofrecemos una forma perfecta de ejecutar Windows Agent Arena en Azure ML Compute VMS. Esta opción reducirá significativamente el tiempo necesario para probar a su agente en todas las tareas de referencia de horas/días a minutos.
AZURE_SUBSCRIPTION_ID en la Sección 3.agents ) en la región de su elección. Tome nota del nombre del grupo de recursos, lo usaremos como AZURE_ML_RESOURCE_GROUP en la Sección 3.agents_ml ). Tome nota del nombre del espacio de trabajo ML, lo usaremos como AZURE_ML_WORKSPACE_NAME en la Sección 3. Durante el Asistente de creación, asegúrese de verificar las casillas para crear automáticamente nuevo:
agents ) 
Notebooks . En su carpeta asignada por el usuario (como se muestra en la figura a continuación), cree un nuevo archivo bash (.sh) llamado compute-instance-startup.sh . Copie el contenido de scripts/azure_files/compute-instance-startup.sh en este archivo y guárdelo. Este script se utilizará cada vez que se lance una nueva VM en Azure para aplicar algunas configuraciones base. Tome nota de la ruta donde guarde el archivo (en forma de Users/<YOUR_USER>/compute-instance-startup.sh ), lo usaremos para ejecutar el script en la Sección 3. 
Standard_D8_v3 VM para nuestra evaluación comparativa, que se encuentra en la categoría Standard Dv3 Family Cluster Dedicated vCPUs . Cada VM usa 8 núcleos. Asegúrese de que el tipo de máquina que use admite la virtualización anidada. 
Cargue la carpeta de almacenamiento de Windows 11 al contenedor Blob asociado con su almacén de datos predeterminado. Por defecto, los datos subyacentes del espacio de trabajo de Azure ML están respaldados por una cuenta de almacenamiento a través de uno o más almacenes de datos ML. El almacén de datos predeterminado, nombrado workspaceblobstore , se crea durante la configuración del espacio de trabajo y se vincula a un contenedor Blob en la cuenta de almacenamiento de Azure. Puede revisar la asociación entre los almacenes de datos y los contenedores visitando Azure ML DataStore. Una vez encontrado, puede cargar la carpeta de almacenamiento de diferentes maneras:
WindowsAgentArena/src/win-arena-container/vm/storage desde su máquina local después de ejecutar los pasos de configuración 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 , seleccione su contenedor y cargue la carpeta. Esta opción no se recomienda para archivos grandes, ya que las conexiones pueden volverse inestables. [Opcional] Si no está utilizando la imagen predeterminada windowsarena/winarena:latest , puede cargar su imagen personalizada en el Registro de contenedores de Azure. Puede hacerlo siguiendo la documentación del registro de contenedores de 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 en la raíz del proyecto: {
... // 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 para especificar los parámetros necesarios para cada ejecución del experimento, incluido el agente para implementar y el modelo LLM subyacente para usar. Puede encontrar un experiments.json de referencia. JSON que consta de múltiples experimentos para ejecutarse en 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 utilizando los parámetros --experiments_json y --update_json de run_azure.py , el JSON anterior es equivalente al siguiente comando: 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 " Para cualquier experimento inacabado en experiments.json , el script:
<num_workers Azure Compute Instance VMS.<exp_name> por VM. Los registros de la ejecución se guardarán en una carpeta agent_outputs en el mismo contenedor Blob donde cargó la imagen de Windows 11. Puede descargar la carpeta agent_outputs a su máquina local y ejecutar el script show_azure.py para ver los resultados de cada experimento como una tabla de markdown.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > ¿Quiere probar a sus propios agentes en Windows Agent Arena? Puede usar nuestro agente predeterminado como plantilla y crear su propia carpeta en src/win-arena-container/client/mm_agents . Solo necesita asegurarse de que las funciones de su archivo agent.py predict() y reset() funciones. Para obtener más información sobre el desarrollo del agente, consulte el DOC BYOA.
Agradecemos contribuciones al proyecto Windows Agent Arena. En particular, damos la bienvenida:
Si está interesado en contribuir, consulte nuestras pautas de desarrollo de tareas.
| Componente | Costo | Tiempo |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ $ 8 ($ 0.38/h * 40 * 0.5h) | |
| GPT-4V | $ 100 | ~ 35min con 40 Vms |
| GPT-4O | $ 100 | ~ 35min con 40 Vms |
| GPT-4O-Mini | $ 15 | ~ 30 minutos con 40 VM |
Por defecto, el script run-local.sh intenta crear una VM QEMU con 8 GB de RAM y 8 núcleos de CPU. Si su sistema tiene recursos limitados, puede anular estos valores predeterminados especificando la asignación de RAM y CPU deseada:
./run-local.sh --ram-size 4G --cpu-cores 4 Si su sistema no admite la aceleración de KVM, puede deshabilitarlo especificando la bandera --use-kvm false :
./run-local.sh --use-kvm falseTenga en cuenta que no se recomienda ejecutar el punto de referencia localmente sin aceleración de KVM debido a problemas de rendimiento. En este caso, recomendamos preparar la imagen dorada para luego ejecutar el punto de referencia en Azure.
Este proyecto da la bienvenida a las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Acuerdo de Licencia de Contributor (CLA) que declare que tiene derecho y realmente hacernos los derechos para utilizar su contribución. Para más detalles, visite https://cla.opensource.microsoft.com.
Cuando envíe una solicitud de extracción, un BOT CLA determinará automáticamente si necesita proporcionar un CLA y decorar el PR adecuadamente (por ejemplo, verificación de estado, comentario). Simplemente siga las instrucciones proporcionadas por el bot. Solo necesitará hacer esto una vez en todos los reposos usando nuestro CLA.
Este proyecto ha adoptado el Código de Conducta Open Open Microsoft. Para obtener más información, consulte el Código de Conducta Preguntas frecuentes o comuníquese con [email protected] con cualquier pregunta o comentario adicional.
Este proyecto puede contener marcas comerciales o logotipos para proyectos, productos o servicios. El uso autorizado de marcas o logotipos de Microsoft está sujeto y debe seguir las pautas de marca y marca de Microsoft. El uso de marcas registradas de Microsoft o logotipos en versiones modificadas de este proyecto no debe causar confusión o implicar el patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esas partes de terceros.