
Agent Arena Windows (ваа)? это масштабируемая платформа AI AI Windows для тестирования и сравнительного анализа многомодальных агентов по настольным компьютерам. WAA предоставляет исследователям и разработчикам воспроизводимую и реалистичную среду ОС Windows для исследований искусственного интеллекта, где агентские рабочие процессы ИИ могут быть протестированы в различных целях задач.
WAA поддерживает развертывание агентов в масштабе с использованием облачной инфраструктуры Azure ML, что позволяет параллельному запуску нескольких агентов и обеспечивая быстрые результаты для сотен задач за считанные минуты, а не дни.
diff_lvl="normal" на diff_lvl="hard" в src/win-arena-container/start_client.sh . При более сложной трудности, во многих задачах агенты также должны научиться инициализировать/настраивать задачу сами (например, поиск и открытие правильной программы/приложения для задачи), а не выполнять задачу «настроить» для них задачей конфигурация./run-local.sh --som-origin mixed-omni --gpu-enabled trueНаш документ по техническому отчету можно найти здесь. Если вы найдете эту среду полезной, пожалуйста, рассмотрите возможность ссылаться на нашу работу:
@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 .Клонировать хранилище и установить зависимости:
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 Создайте новый config.json в корне проекта с необходимыми ключами (из конечных точек OpenAI или 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
}Чтобы начать, вытащите базовое изображение из Docker Hub:
docker pull windowsarena/winarena-base:latest Это изображение включает в себя все необходимые зависимости (например, пакеты и модели), необходимые для запуска кода в каталоге src .
Далее постройте изображение Winarena на местном уровне:
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 Это создаст windowsarena/winarena:latest изображение с последним кодом из каталога src .
setup.iso и скопируйте его в каталог WindowsAgentArena/src/win-arena-container/vm/image Прежде чем запустить арену, вам нужно подготовить новый снимок WAA (также называемый WAA Golden Image). Этот снимок 30 ГБ представляет собой полностью функциональную виртуальную машину Windows 11 со всеми программами, необходимыми для запуска эталона. Эта виртуальная машина дополнительно проводит сервер Python, который получает и выполняет команды агента. Чтобы узнать больше о компонентах в игре, посмотрите наши локальные и облачные диаграммы компонентов.
Чтобы подготовить золотой снимок, заберите один раз :
cd ./scripts
./run-local.sh --prepare-image true Вы можете отслеживать прогресс на http://localhost:8006 . Процесс подготовки полностью автоматизирован и займет ~ 20 минут.
Пожалуйста, не мешайте виртуальной машине, пока она готовится. Он автоматически отключается, когда процесс обеспечения будет завершен.


В конце вы должны ожидать, что контейнер Docker назвал winarena изящно прекратить, как показано из журналов ниже.

Вы найдете 30 ГБ золотого изображения в WindowsAgentArena/src/win-arena-container/vm/storage , состоящий из следующих файлов:

src/win-arena-container в изображении WAA Golden, убедитесь, что укажите флаг --skip-build false для сценария run-local.sh (по умолчанию к истинный). Это гарантирует, что вместо этого будет построено новое изображение контейнера, чем использование предварительно построенного windowsarena/winarena:latest изображение.storage .storage в безопасное место за пределами репозитория, если вы или агент случайно повреждают виртуальную машину в какой -то момент, и вы хотите избежать свежей установки.sudo ./bin/bash: bad interpreter: No such file or directory , мы рекомендуем преобразовать сценарии Bash из формата DOS/Windows в формат Unix: cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +Теперь вы готовы запустить оценку. Чтобы запустить базовый агент по всем контрольным задачам, сделайте:
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helpОткройте http: // localhost: 8006, чтобы увидеть виртуальную машину Windows с запуском агента. Если у вас есть мускулистый компьютер, вы можете вместо этого запустить самую сильную конфигурацию агента в нашей статье, выполнив:
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uiaВ конце запуска вы можете отобразить результаты, используя команду:
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > Ниже приводится сравнение различных комбинаций гиперпараметров, используемых агентом Navi в нашем исследовании, которые можно переопределить, указав --som-origin <som_origin> --a11y-backend <a11y_backend> при запуске сценария run-local.sh :
| Командование | Описание | Примечания |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Объединяет Omniparser с информацией о дереве доступности | Рекомендуется для достижения наилучших результатов |
./run-local.sh --som-origin omni | Использует Omniparser для понимания экрана | |
./run-local.sh --som-origin oss | Использует WebParse, Groundingdino и OCR (Tesseractoc) | ? Базовая линия |
./run-local.sh --som-origin a11y --a11y-backend uia | Использует более медленное, более точное дерево доступности | |
./run-local.sh --som-origin a11y --a11y-backend win32 | Использует более быстрое, менее точное дерево доступности | ? Самые быстрые |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | Сочетает обнаружения OSS с деревом доступности |
--som-origin определяет, как агент Navi обнаруживает элементы экрана--a11y-backend указывает тип бэкэнда доступности (при использовании a11y или смешанных режима) На первый взгляд может показаться сложным разработкой/отладкой кода, работающего в контейнере Docker. Тем не менее, мы предоставляем несколько советов, чтобы облегчить этот процесс. Проверьте Doc-Tips Development для получения более подробной информации, такой как:
Мы предлагаем беспроблемный способ запуска Agent Arena Windows на Azure ML Compute VMS. Этот вариант значительно сократит время, необходимое для тестирования вашего агента во всех эталонных задачах от часов/дней до минут.
AZURE_SUBSCRIPTION_ID в разделе 3.agents ) в регионе по вашему выбору. Обратите внимание на имя группы ресурсов, мы будем использовать его в качестве AZURE_ML_RESOURCE_GROUP в разделе 3.agents_ml ). Обратите внимание на имя рабочей области ML, мы будем использовать его в качестве AZURE_ML_WORKSPACE_NAME в разделе 3. Во время мастера создания обязательно установите флажки для автоматического создания нового:
agents ) 
Notebooks . В вашей посвященной пользователю папке (как показано на рисунке ниже) создайте новый файл Bash (.sh) с именем compute-instance-startup.sh . Скопируйте содержимое scripts/azure_files/compute-instance-startup.sh в этом файле и сохраните его. Этот скрипт будет использоваться каждый раз, когда в Azure запускается новая виртуальная машина для применения некоторых базовых конфигураций. Обратите внимание на путь, в котором вы сохраняете файл (в форме Users/<YOUR_USER>/compute-instance-startup.sh ), мы будем использовать его для запуска скрипта в разделе 3. 
Standard_D8_v3 для нашего сравнительного анализа, который подпадает под Standard Dv3 Family Cluster Dedicated vCPUs . Каждая виртуальная машина использует 8 ядер. Убедитесь, что тип машины, который вы используете, поддерживает вложенную виртуализацию. 
Загрузите папку для хранения Windows 11 в контейнер Blob, связанный с вашим хранилищем данных по умолчанию. По умолчанию базовые данные Azure ML -пространства поддерживаются учетной записью хранения через один или несколько данных ML. ДАННАЛЬНОЕ ОБСЛУЖИВАНИЕ ДАННЫХ ДАННЫХ, Именованное workspaceblobstore , создается во время настройки рабочей области и связано с контейнером Blob в рамках учетной записи Hazure Storage. Вы можете просмотреть связь между данными и контейнерами, посетив Azure ML Datastore. После того, как вы найдете, вы можете загружать папку хранения по -разному:
WindowsAgentArena/src/win-arena-container/vm/storage с локальной машины после выполнения локальных шагов настройки. 
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 , выберите контейнер и загрузите папку. Эта опция не рекомендуется для больших файлов, так как подключения могут стать нестабильными. [Необязательно] Если вы не используете windowsarena/winarena:latest изображение, вы можете загрузить свое пользовательское изображение в реестр контейнеров Azure. Вы можете сделать это, следуя документации реестра контейнеров 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 в корне проекта: {
... // 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 , чтобы указать любые параметры, необходимые для каждого запуска эксперимента, включая агент для развертывания, и базовую модель LLM для использования. Вы можете найти эталонные experiments.json Json, состоящий из нескольких экспериментов для работы на 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
}
// ...
}run_azure.py --update_json experiments.json --experiments_json 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 " Для любых незаконченных экспериментов в experiments.json .
<num_workers Azure Compute VMS VMS.<exp_name> за виртуальную машину. Журналы из запуска будут сохранены в папке agent_outputs в том же контейнере Blob, где вы загрузили изображение Windows 11. Вы можете загрузить папку agent_outputs на локальную машину и запустить сценарий show_azure.py , чтобы увидеть результаты из каждого эксперимента в виде таблицы разметки.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Хотите проверить свои собственные агенты на Agent Arena Windows? Вы можете использовать наш агент по умолчанию в качестве шаблона и создать свою собственную папку в рамках src/win-arena-container/client/mm_agents . Вам просто нужно убедиться, что ваши функции файла agent.py predict() и reset() . Для получения дополнительной информации о разработке агента ознакомьтесь с Doc.
Мы приветствуем взносы в проект Agent Arena Windows. В частности, мы приветствуем:
Если вы заинтересованы в соревнованиях, пожалуйста, ознакомьтесь с нашими рекомендациями по разработке задач.
| Компонент | Расходы | Время |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ 8 долларов (0,38 долл. США/ч * 40 * 0,5H) | |
| GPT-4V | 100 долларов | ~ 35 минут с 40 ВМС |
| GPT-4O | 100 долларов | ~ 35 минут с 40 ВМС |
| GPT-4O-Mini | $ 15 | ~ 30 минут с 40 ВМС |
По умолчанию скрипт run-local.sh пытается создать виртуальную машину Qemu с 8 ГБ оперативной памяти и 8 ядер ЦП. Если ваша система имеет ограниченные ресурсы, вы можете переопределить эти значения по умолчанию, указав желаемое распределение ОЗУ и ЦП:
./run-local.sh --ram-size 4G --cpu-cores 4 Если ваша система не поддерживает ускорение KVM, вы можете отключить ее, указав --use-kvm false :
./run-local.sh --use-kvm falseОбратите внимание, что запуск эталона локально без ускорения KVM не рекомендуется из -за проблем с производительностью. В этом случае мы рекомендуем подготовить золотое изображение для дальнейшего запуска эталона на Azure.
Этот проект приветствует вклады и предложения. Большинство взносов требуют, чтобы вы согласились с лицензионным соглашением о участнике (CLA), заявив, что вы имеете право и фактически предоставить нам права на использование вашего вклада. Для получения подробной информации, посетите https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на привлечение, бот CLA автоматически определит, нужно ли вам предоставить CLA и правильно украсить PR (например, проверка состояния, комментарий). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз во всех репо, используя наш CLA.
Этот проект принял код поведения с открытым исходным кодом Microsoft. Для получения дополнительной информации см. Кодекс поведения FAQ или свяжитесь с [email protected] с любыми дополнительными вопросами или комментариями.
Этот проект может содержать товарные знаки или логотипы для проектов, продуктов или услуг. Уполномоченное использование товарных знаков или логотипов Microsoft подлежит и должно следовать указаниям Microsoft по товарной марке и брендам. Использование товарных знаков Microsoft или логотипов в модифицированных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование сторонних товарных знаков или логотипов подвержена политике сторонних сторон.