
Windows Agent Arena (WAA)? é uma plataforma escalável do Windows AI Agent para testar e benchmarking agentes de IA de desktop multimodais. A WAA fornece aos pesquisadores e desenvolvedores um ambiente reprodutível e realista do Windows OS para pesquisas de IA, onde os fluxos de trabalho da IA Agentic podem ser testados em uma gama diversificada de tarefas.
A WAA suporta a implantação de agentes em escala usando a infraestrutura de nuvem do Azure ML, permitindo a execução paralela de vários agentes e fornecendo resultados rápidos de referência para centenas de tarefas em minutos, não dias.
diff_lvl="normal" para diff_lvl="hard" em src/win-arena-container/start_client.sh . Sob a dificuldade mais difícil, em muitas tarefas, os agentes também devem aprender a inicializar/configurar a tarefa (por exemplo, encontrar e abrir o programa/aplicativo certo para a tarefa) em vez de ter a tarefa "configurada" para eles pela tarefa Config../run-local.sh --som-origin mixed-omni --gpu-enabled trueNosso artigo de relatório técnico pode ser encontrado aqui. Se você achar esse ambiente útil, considere citar nosso trabalho:
@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 o repositório e instale dependências:
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 Crie um novo config.json na raiz do projeto com as teclas necessárias (dos terminais 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
}Para começar, puxe a imagem base do Docker Hub:
docker pull windowsarena/winarena-base:latest Esta imagem inclui todas as dependências necessárias (como pacotes e modelos) necessários para executar o código no diretório src .
Em seguida, construa a imagem 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 Isso criará o windowsarena/winarena:latest com o código mais recente do diretório src .
setup.iso e copie-o para o diretório WindowsAgentArena/src/win-arena-container/vm/image Antes de executar a arena, você precisa preparar um novo instantâneo da WAA (também referido como imagem de ouro WAA). Este instantâneo de 30 GB representa uma VM do Windows 11 totalmente funcional com todos os programas necessários para executar a referência. Esta VM também hospeda um servidor Python que recebe e executa comandos do agente. Para saber mais sobre os componentes em jogo, consulte nossos diagramas de componentes locais e de nuvem.
Para preparar o instantâneo de ouro, execute uma vez :
cd ./scripts
./run-local.sh --prepare-image true Você pode monitorar o progresso em http://localhost:8006 . O processo de preparação é totalmente automatizado e levará ~ 20 minutos.
Por favor, não interfira na VM enquanto estiver sendo preparado. Ele desligará automaticamente quando o processo de provisionamento estiver concluído.


No final, você deve esperar que o contêiner do Docker chamado winarena termine graciosamente, como mostrado a partir dos logs abaixo.

Você encontrará a imagem Golden de 30 GB em WindowsAgentArena/src/win-arena-container/vm/storage , consistindo nos seguintes arquivos:

src/win-arena-container na imagem Golden WAA, certifique-se de especificar a bandeira --skip-build false no script run-local.sh (padrão para verdadeiro). Isso garantirá que uma nova imagem de contêiner seja construída em vez de usar a imagem mais recente windowsarena/winarena:latest .storage .storage para um local seguro fora do repositório, caso você ou o agente corrompe acidentalmente a VM em algum momento e você deseja evitar uma nova configuração.sudo ./bin/bash: bad interpreter: No such file or directory , recomendamos a conversão dos scripts de bash do formato DOS/Windows em formato Unix: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +Agora você está pronto para iniciar a avaliação. Para executar o agente de linha de base em todas as tarefas de referência, faça:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helpAbra http: // localhost: 8006 para ver a VM do Windows com o agente em execução. Se você tem um PC robusto, pode executar a configuração mais forte do agente em nosso artigo fazendo:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uiaNo final da corrida, você pode exibir os resultados usando o comando:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > Abaixo está uma comparação de várias combinações de hiperparâmetros usados pelo agente Navi em nosso estudo, que podem ser substituídos especificando --som-origin <som_origin> --a11y-backend <a11y_backend> Ao executar o script run-local.sh :
| Comando | Descrição | Notas |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Combina omniparsser com informações da árvore de acessibilidade | Recomendado para obter melhores resultados |
./run-local.sh --som-origin omni | Usa omnipars para entender a tela | |
./run-local.sh --som-origin oss | Usa Webparse, Groundingdino e OCR (Tesseractocr) | ? Linha de base |
./run-local.sh --som-origin a11y --a11y-backend uia | Usa árvore de acessibilidade mais lenta e precisa | |
./run-local.sh --som-origin a11y --a11y-backend win32 | Usa árvore de acessibilidade mais rápida e mais precisa | ? Mais rápido |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | Combina detecções de OSS com árvore de acessibilidade |
--som-origin determina como o agente NAVI detecta elementos de tela--a11y-backend Especifica o tipo de back-end de acessibilidade (ao usar modos a11y ou misto) À primeira vista, pode parecer desafiador desenvolver/depurar código em execução dentro do contêiner do Docker. No entanto, fornecemos algumas dicas para facilitar esse processo. Verifique o documento do desenvolvimento para mais detalhes, como:
Oferecemos uma maneira perfeita de executar a Windows Agent Arena nas VMs do Azure ML Compute. Esta opção reduzirá significativamente o tempo necessário para testar seu agente em todas as tarefas de referência de horas/dias a minutos.
AZURE_SUBSCRIPTION_ID na Seção 3.agents ) na região de sua escolha. Tome nota do nome do grupo de recursos, nós o usaremos como AZURE_ML_RESOURCE_GROUP na Seção 3.agents_ml ). Anote o nome do espaço de trabalho da ML, nós o usaremos como AZURE_ML_WORKSPACE_NAME na Seção 3. Durante o Assistente de Criação, verifique as caixas para criar automaticamente novos:
agents ) 
Notebooks . Na sua pasta atribuída ao usuário (como mostrado na figura abaixo), crie um novo arquivo Bash (.sh) chamado compute-instance-startup.sh . Copie o conteúdo de scripts/azure_files/compute-instance-startup.sh nesse arquivo e salve-o. Este script será usado sempre que uma nova VM é lançada no Azure para aplicar algumas configurações básicas. Anote o caminho em que você salva o arquivo (na forma de Users/<YOUR_USER>/compute-instance-startup.sh ), nós o usaremos para executar o script na Seção 3. 
Standard_D8_v3 para o nosso benchmarking, que se enquadra na categoria Standard Dv3 Family Cluster Dedicated vCPUs . Cada VM usa 8 núcleos. Verifique se o tipo de máquina que você usa suporta virtualização aninhada. 
Carregue a pasta de armazenamento do Windows 11 para o recipiente do BLOB associado ao seu armazenamento de dados padrão. Por padrão, os dados subjacentes do espaço de trabalho do Azure ML são apoiados por uma conta de armazenamento por meio de um ou mais dados de dados de ML. O armazenamento de dados padrão, chamado workspaceblobstore , é criado durante a configuração da área de trabalho e vinculada a um contêiner de blob na conta de armazenamento do Azure. Você pode revisar a associação entre os dados e contêineres visitando o Azure ML DataStore. Uma vez encontrado, você pode enviar a pasta de armazenamento de maneiras diferentes:
WindowsAgentArena/src/win-arena-container/vm/storage da máquina local depois de executar as etapas de configuração local. 
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 , selecione seu contêiner e faça o upload da pasta. Esta opção não é recomendada para arquivos grandes, pois as conexões podem ficar instáveis. [Opcional] Se você não estiver usando o windowsarena/winarena:latest , poderá fazer upload de sua imagem personalizada para o registro do contêiner do Azure. Você pode fazer isso seguindo a documentação do registro de contêineres do 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 na raiz do projeto: {
... // 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 os parâmetros necessários para cada experiência executada, incluindo o agente a ser implantado e o modelo LLM subjacente a ser usado. Você pode encontrar um experiments.json de referência.json composto por vários experimentos para executar em 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 usando os parâmetros --experiments_json e --update_json de run_azure.py , o JSON acima é equivalente ao seguinte 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 quaisquer experimentos inacabados em experiments.json , o script será:
<num_workers AZURE COMPUTE instância VMS.<exp_name> por VM. Os logs da execução serão salvos em uma pasta agent_outputs no mesmo contêiner de blob, onde você carregou a imagem do Windows 11. Você pode baixar a pasta agent_outputs na sua máquina local e executar o script show_azure.py para ver os resultados de todos os experimentos como uma tabela de marcação.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Deseja testar seus próprios agentes na Windows Agent Arena? Você pode usar nosso agente padrão como modelo e criar sua própria pasta em src/win-arena-container/client/mm_agents . Você só precisa garantir que os recursos do seu agent.py do arquivo predict() e reset() funções. Para obter mais informações sobre o desenvolvimento do agente, consulte o BYOA DOC.
Congratulamo -nos com contribuições para o projeto Windows Agent Arena. Em particular, bem -vindo:
Se você estiver interessado em contribuir, confira nossas diretrizes de desenvolvimento de tarefas.
| Componente | Custo | Tempo |
|---|---|---|
| Azure padrão_d8_v3 vm | ~ $ 8 (US $ 0,38/h * 40 * 0,5h) | |
| GPT-4V | $ 100 | ~ 35min com 40 VMs |
| GPT-4O | $ 100 | ~ 35min com 40 VMs |
| GPT-4O-MINI | $ 15 | ~ 30min com 40 VMs |
Por padrão, o script run-local.sh tenta criar uma VM QEMU com 8 GB de núcleos de RAM e 8 CPU. Se o seu sistema tiver recursos limitados, você poderá substituir esses padrões especificando a alocação desejada de RAM e CPU:
./run-local.sh --ram-size 4G --cpu-cores 4 Se o seu sistema não suportar a aceleração do KVM, você poderá desativá-lo especificando o sinalizador --use-kvm false :
./run-local.sh --use-kvm falseObserve que a execução da referência localmente sem aceleração do KVM não é recomendada devido a problemas de desempenho. Nesse caso, recomendamos a preparação da imagem dourada para executar mais tarde a referência no Azure.
Este projeto recebe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito e, na verdade, concede -nos os direitos de usar sua contribuição. Para detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação de tração, um BOT do CLA determina automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, verificação de status, comentar). Simplesmente siga as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta Open Microsoft. Para obter mais informações, consulte o Código de Conduta Perguntas frequentes ou entre em contato com [email protected] com quaisquer perguntas ou comentários adicionais.
Este projeto pode conter marcas comerciais ou logotipos para projetos, produtos ou serviços. O uso autorizado de marcas comerciais ou logotipos da Microsoft está sujeito e deve seguir as diretrizes de marca registrada e marca da Microsoft. O uso de marcas comerciais da Microsoft ou logotipos em versões modificadas deste projeto não deve causar confusão ou implicar o patrocínio da Microsoft. Qualquer uso de marcas comerciais ou logotipos de terceiros estão sujeitas às políticas de terceiros.