
Agrena Windows Agent Arena (WAA)؟ هو منصة وكيل Windows AI قابلة للتطوير للاختبار وقياس الوكلاء متعدد الوسائط ، منظمة العفو الدولية. يوفر WAA للباحثين والمطورين بيئة نظام التشغيل Windows القابلة للتكرار والواقعية لأبحاث الذكاء الاصطناعي ، حيث يمكن اختبار تدفقات عمل Aulectic AI عبر مجموعة متنوعة من المهام.
تدعم 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 الذهبية). تمثل لقطة سعة 30 جيجابايت هذه VM تعمل بكامل طاقتها مع جميع البرامج اللازمة لتشغيل المعيار. بالإضافة إلى ذلك ، يستضيف VM خادم Python الذي يتلقى وينفذ أوامر الوكيل. لمعرفة المزيد حول المكونات التي يتم تشغيلها ، راجع مخططات المكونات المحلية والسحابة الخاصة بنا.
لإعداد لقطة الذهب ، قم بالتشغيل مرة واحدة :
cd ./scripts
./run-local.sh --prepare-image true يمكنك مراقبة التقدم المحرز في http://localhost:8006 . عملية التحضير آلية بالكامل وستستغرق حوالي 20 دقيقة.
من فضلك لا تتداخل مع VM أثناء تحضيرها. سيتم إيقاف تشغيله تلقائيًا عند اكتمال عملية التوفير.


في النهاية ، يجب أن تتوقع أن تنتهي حاوية Docker المسمى winarena بأمان كما هو موضح من السجلات أدناه.

ستجد صورة ذهبية 30 جيجابايت في WindowsAgentArena/src/win-arena-container/vm/storage ، تتكون من الملفات التالية:

src/win-arena-container في صورة WAA الذهبية ، فيرجى التأكد من تحديد العلم --skip-build false إلى البرنامج النصي run-local.sh (افتراضيًا إلى حقيقي). سيضمن ذلك أن يتم بناء صورة حاوية جديدة بدلاً من استخدام windowsarena/winarena:latest صورة.storage .storage هذا إلى موقع آمن خارج المستودع في حالة إفسادك أو الوكيل بطريق الخطأ 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 > فيما يلي مقارنة بين مجموعات مختلفة من أجهزة HyperParameters التي يستخدمها عامل 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 (Tesseractoch) | ؟ خط الأساس |
./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. ومع ذلك ، فإننا نقدم بعض النصائح لتسهيل هذه العملية. تحقق من Dovip-Tips Doc لمزيد من التفاصيل مثل:
نحن نقدم طريقة سلسة لتشغيل Windows Agent Arena على VMs Azure ML. سيقلل هذا الخيار بشكل كبير من الوقت اللازم لاختبار وكيلك في جميع المهام القياسية من ساعات/أيام إلى دقائق.
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 في هذا الملف وحفظه. سيتم استخدام هذا البرنامج النصي في كل مرة يتم فيها إطلاق VM جديد في Azure لتطبيق بعض التكوينات الأساسية. لاحظ المسار الذي تقوم فيه بحفظ الملف (في شكل Users/<YOUR_USER>/compute-instance-startup.sh ) ، سنستخدمه لتشغيل البرنامج النصي في القسم 3. 
Standard_D8_v3 vm للمعايير الخاصة بنا ، والتي تندرج تحت فئة Standard Dv3 Family Cluster Dedicated vCPUs . كل VM يستخدم 8 نوى. تأكد من أن نوع الجهاز الذي تستخدمه يدعم المحاكاة الافتراضية المتداخلة. 
قم بتحميل مجلد تخزين Windows 11 إلى حاوية BLOB المرتبطة بتفوق البيانات الافتراضي. افتراضيًا ، يتم دعم بيانات مساحة عمل Azure ML ML بواسطة حساب تخزين من خلال واحد أو أكثر من DataStores ML. يتم إنشاء مخزن البيانات الافتراضي ، المسمى workspaceblobstore ، أثناء إعداد مساحة العمل وربطه بحاوية blob تحت حساب Azure Storage. يمكنك مراجعة الارتباط بين Datastores والحاويات من خلال زيارة Dature 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.<exp_name> لكل VM. سيتم حفظ السجلات من التشغيل في مجلد 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 > هل تريد اختبار الوكلاء الخاص بك في Windows Agent Arena؟ يمكنك استخدام وكيلنا الافتراضي كقالب وإنشاء مجلد خاص بك تحت src/win-arena-container/client/mm_agents . تحتاج فقط إلى التأكد من reset() predict() ملف agent.py الخاصة بك. لمزيد من المعلومات حول تطوير الوكيل ، تحقق من DOC BYOA.
نرحب بالمساهمات في مشروع Windows Agent Arena. على وجه الخصوص ، نرحب:
إذا كنت مهتمًا بالمساهمة ، فيرجى مراجعة إرشادات تطوير المهام لدينا.
| عنصر | يكلف | وقت |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ 8 دولارات (0.38 دولار/ساعة * 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 مع 8 جيجابايت من ذاكرة الوصول العشوائي و 8 CPU النوى. إذا كان نظامك يحتوي على موارد محدودة ، فيمكنك تجاوز هذه الإعدادات الافتراضية من خلال تحديد 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 Bot تلقائيًا ما إذا كنت بحاجة إلى توفير CLA وتزيين العلاقات العامة بشكل مناسب (على سبيل المثال ، فحص الحالة ، التعليق). ببساطة اتبع الإرشادات التي يقدمها الروبوت. ستحتاج فقط إلى القيام بذلك مرة واحدة عبر جميع عمليات إعادة الشراء باستخدام CLA لدينا.
اعتمد هذا المشروع رمز سلوك المصدر المفتوح Microsoft. لمزيد من المعلومات ، راجع مدونة الشهادة الأسئلة الشائعة أو الاتصال بـ [email protected] مع أي أسئلة أو تعليقات إضافية.
قد يحتوي هذا المشروع على علامات تجارية أو شعارات للمشاريع أو المنتجات أو الخدمات. يخضع الاستخدام المعتمد للعلامات التجارية أو الشعارات Microsoft ويجب أن يتبعوا إرشادات Microsoft التجارية والعلامة التجارية. يجب ألا يسبب استخدام العلامات التجارية Microsoft أو الشعارات في إصدارات معدلة من هذا المشروع الارتباك أو يعني رعاية Microsoft. يخضع أي استخدام للعلامات التجارية أو الشعارات من طرف ثالث لسياسات تلك الطرف الثالث.