
Windows Agent Arena (WAA)? เป็นแพลตฟอร์มตัวแทน AI Windows AI ที่ปรับขนาดได้สำหรับการทดสอบและการเปรียบเทียบตัวแทนหลายโมดอลเดสก์ท็อป AI WAA ให้นักวิจัยและนักพัฒนาได้รับสภาพแวดล้อม Windows OS ที่ทำซ้ำได้และสมจริงสำหรับการวิจัย AI ซึ่งสามารถทดสอบเวิร์กโฟลว์ ATYIC AI ได้ในงานที่หลากหลาย
WAA รองรับการปรับใช้ตัวแทน ในระดับ โดยใช้โครงสร้างพื้นฐาน Azure ML Cloud ซึ่งช่วยให้สามารถใช้งานได้หลายตัวแทนหลายตัวและส่งมอบผลการวัดผลอย่างรวดเร็วสำหรับงานหลายร้อยในไม่กี่นาทีไม่ใช่วัน
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 endpoints):
{
"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) ภาพรวม 30GB นี้แสดงถึง Windows 11 VM ที่ใช้งานได้อย่างสมบูรณ์พร้อมโปรแกรมทั้งหมดที่จำเป็นในการเรียกใช้เบนช์มาร์ก VM นี้ยังโฮสต์เซิร์ฟเวอร์ Python ซึ่งได้รับและดำเนินการคำสั่ง Agent หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับส่วนประกอบที่เล่นให้ดูไดอะแกรมส่วนประกอบในพื้นที่และเมฆของเรา
ในการเตรียมสแนปชอตสีทองวิ่ง หนึ่งครั้ง :
cd ./scripts
./run-local.sh --prepare-image true คุณสามารถตรวจสอบความคืบหน้าได้ที่ http://localhost:8006 กระบวนการเตรียมการเป็นไปโดยอัตโนมัติอย่างสมบูรณ์และจะใช้เวลาประมาณ 20 นาที
โปรดอย่าเข้าไปยุ่งเกี่ยวกับ VM ในขณะที่กำลังเตรียม มันจะปิดโดยอัตโนมัติเมื่อกระบวนการจัดเตรียมเสร็จสมบูรณ์


ในตอนท้ายคุณควรคาดหวังว่าคอนเทนเนอร์ Docker ชื่อ winarena จะสิ้นสุดลงอย่างสง่างามตามที่แสดงจากบันทึกด้านล่าง

คุณจะพบภาพ 30GB WAA Golden ใน WindowsAgentArena/src/win-arena-container/vm/storage ซึ่งประกอบด้วยไฟล์ต่อไปนี้:

src/win-arena-container ในภาพ WAA Golden โปรดตรวจสอบให้แน่ใจว่าได้ระบุ FALL --skip-build false กับสคริปต์ run-local.sh (ค่าเริ่มต้นเป็น จริง). สิ่งนี้จะช่วยให้มั่นใจได้ว่าภาพคอนเทนเนอร์ใหม่ถูกสร้างขึ้นแทนที่จะใช้ windowsarena/winarena:lateststoragestorage นี้ไปยังสถานที่ปลอดภัยนอกที่เก็บในกรณีที่คุณหรือตัวแทนเสียหาย VM โดยไม่ตั้งใจในบางจุดและคุณต้องการหลีกเลี่ยงการตั้งค่าใหม่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 VM พร้อมกับตัวแทนที่ทำงานอยู่ หากคุณมีพีซีที่มีเนื้อคุณสามารถเรียกใช้การกำหนดค่าตัวแทนที่แข็งแกร่งที่สุดในบทความของเราได้โดยทำ:
./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 > ด้าน run-local.sh คือการเปรียบเทียบชุดค่าผสม hyperparameters ที่ใช้โดยตัวแทน NAVI ในการศึกษาของเราซึ่งสามารถแทนที่ได้โดยการระบุ --som-origin <som_origin> --a11y-backend <a11y_backend>
| สั่งการ | คำอธิบาย | หมายเหตุ |
|---|---|---|
./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 (tesseractocr) | ? พื้นฐาน |
./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 Agent--a11y-backend ระบุประเภทแบ็กเอนด์การเข้าถึง (เมื่อใช้โหมด a11y หรือผสม) ตั้งแต่แรกเห็นมันอาจดูเหมือนท้าทายในการพัฒนา/ดีบักรหัสที่ทำงานภายในคอนเทนเนอร์ Docker อย่างไรก็ตามเราให้คำแนะนำเล็กน้อยเพื่อให้กระบวนการนี้ง่ายขึ้น ตรวจสอบเอกสารการพัฒนาเคล็ดลับสำหรับรายละเอียดเพิ่มเติมเช่น:
เราเสนอวิธีที่ไร้รอยต่อในการเรียกใช้เวที Windows Agent บน Azure ML Compute VMS ตัวเลือกนี้จะช่วยลดเวลาที่จำเป็นในการทดสอบตัวแทนของคุณในงานมาตรฐานทั้งหมดตั้งแต่ชั่วโมง/วันเป็นนาที
AZURE_SUBSCRIPTION_ID ในส่วนที่ 3agents ) ในภูมิภาคที่คุณเลือก จดบันทึกชื่อกลุ่มทรัพยากรเราจะใช้เป็น AZURE_ML_RESOURCE_GROUP ในส่วนที่ 3agents_ml ) จดบันทึกชื่อ ML Workspace เราจะใช้เป็น AZURE_ML_WORKSPACE_NAME ในส่วนที่ 3 ระหว่างการสร้างตัวช่วยสร้างตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายในกล่องเพื่อสร้างใหม่โดยอัตโนมัติ:
agents ) 
Notebooks ในโฟลเดอร์ที่ผู้ใช้กำหนดของคุณ (ดังแสดงในรูปด้านล่าง) สร้างไฟล์ Bash (.sh) ใหม่ชื่อ compute-instance-startup.sh คัดลอกเนื้อหาของ scripts/azure_files/compute-instance-startup.sh ลงในไฟล์นี้และบันทึก สคริปต์นี้จะถูกใช้ทุกครั้งที่มีการเปิดตัว VM ใหม่ใน Azure เพื่อใช้การกำหนดค่าพื้นฐานบางอย่าง จดบันทึกเส้นทางที่คุณบันทึกไฟล์ (ในรูปแบบของ Users/<YOUR_USER>/compute-instance-startup.sh ) เราจะใช้มันเพื่อเรียกใช้สคริปต์ในส่วนที่ 3 
Standard_D8_v3 VM สำหรับการเปรียบเทียบของเราซึ่งอยู่ภายใต้หมวดหมู่ Standard Dv3 Family Cluster Dedicated vCPUs VM แต่ละตัวใช้ 8 คอร์ ตรวจสอบให้แน่ใจว่าประเภทเครื่องที่คุณใช้รองรับการจำลองเสมือนจริง 
อัปโหลดโฟลเดอร์ Windows 11 Storage ไปยังคอนเทนเนอร์ Blob ที่เชื่อมโยงกับที่เก็บข้อมูลเริ่มต้นของคุณ โดยค่าเริ่มต้นข้อมูลพื้นฐานของ Azure ML Workspace ได้รับการสนับสนุนโดยบัญชีจัดเก็บผ่านหนึ่งหรือมากกว่าหนึ่ง ML Datastores Datastore เริ่มต้นชื่อ workspaceblobstore ถูกสร้างขึ้นระหว่างการตั้งค่าพื้นที่ทำงานและเชื่อมโยงกับคอนเทนเนอร์ Blob ภายใต้บัญชี Azure Storage คุณสามารถตรวจสอบความสัมพันธ์ระหว่าง DataStores และคอนเทนเนอร์ได้โดยไปที่ Azure ML Datastore เมื่อพบแล้วคุณสามารถอัปโหลดโฟลเดอร์ที่เก็บข้อมูลได้หลายวิธี:
WindowsAgentArena/src/win-arena-container/vm/storage folder จากเครื่องท้องถิ่นของคุณหลังจากเรียกใช้ขั้นตอนการตั้งค่าในเครื่อง 
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 Container Registry คุณสามารถทำได้โดยทำตามเอกสารเกี่ยวกับ Azure Container Registry
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
}
// ...
}experiments.json ได้โดยใช้ทั้งพารามิเตอร์ --experiments_json และ --update_json พารามิเตอร์ของ run_azure.py , 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 json สคริปต์จะ:
<num_workers Azure คำนวณอินสแตนซ์ VMS<exp_name> ต่อ VM บันทึกจากการรันจะถูกบันทึกในโฟลเดอร์ agent_outputs ในคอนเทนเนอร์หยดเดียวกันที่คุณอัปโหลดรูปภาพ Windows 11 คุณสามารถดาวน์โหลดโฟลเดอร์ agent_outputs ไปยังเครื่องในเครื่องของคุณและเรียกใช้สคริปต์ show_azure.py เพื่อดูผลลัพธ์จากการทดสอบทุกครั้งเป็นตาราง markdown
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > ต้องการทดสอบตัวแทนของคุณเองใน Windows Agent Arena หรือไม่? คุณสามารถใช้เอเจนต์เริ่มต้นของเราเป็นเทมเพลตและสร้างโฟลเดอร์ของคุณเองภายใต้ src/win-arena-container/client/mm_agents คุณเพียงแค่ต้องตรวจสอบให้แน่ใจว่าคุณสมบัติไฟล์ agent.py ของคุณ predict() และ reset() ฟังก์ชั่น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาตัวแทนตรวจสอบเอกสาร BYOA
เรายินดีต้อนรับการมีส่วนร่วมในโครงการ Windows Agent Arena โดยเฉพาะอย่างยิ่งเรายินดีต้อนรับ:
หากคุณสนใจที่จะมีส่วนร่วมโปรดตรวจสอบแนวทางการพัฒนางานของเรา
| ส่วนประกอบ | ค่าใช้จ่าย | เวลา |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ $ 8 ($ 0.38/h * 40 * 0.5h) | |
| GPT-4V | $ 100 | ~ 35 นาทีกับ 40 VMS |
| GPT-4O | $ 100 | ~ 35 นาทีกับ 40 VMS |
| GPT-4O-MINI | $ 15 | ~ 30 นาทีกับ 40 VMS |
โดยค่าเริ่มต้นสคริปต์ run-local.sh พยายามสร้าง QEMU VM ด้วย RAM 8 GB และ 8 CPU CORES หากระบบของคุณมีทรัพยากรที่ จำกัด คุณสามารถแทนที่ค่าเริ่มต้นเหล่านี้ได้โดยการระบุการจัดสรร RAM และ CPU ที่ต้องการ:
./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 อย่างเหมาะสม (เช่นการตรวจสอบสถานะแสดงความคิดเห็น) เพียงทำตามคำแนะนำที่จัดทำโดยบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวใน repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำรหัสการดำเนินงานของ Microsoft โอเพ่นซอร์สมาใช้ สำหรับข้อมูลเพิ่มเติมโปรดดูจรรยาบรรณคำถามที่พบบ่อยหรือติดต่อ [email protected] พร้อมคำถามหรือความคิดเห็นเพิ่มเติมใด ๆ
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการผลิตภัณฑ์หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ที่ได้รับอนุญาตขึ้นอยู่กับและต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในรุ่นที่แก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบอกเป็นสปอนเซอร์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะอยู่ภายใต้นโยบายของบุคคลที่สามเหล่านั้น