تصویری از معیار SWE-PolyBench
تصویری از معیار SWE-PolyBench

AWS، SWE-PolyBench را معرفی می‌کند: یک معیار چندزبانه متن‌باز جدید برای ارزیابی عوامل کدنویسی هوش مصنوعی

پیشرفت‌های اخیر در مدل‌های زبانی بزرگ (LLM) توسعه عوامل کدنویسی مبتنی بر هوش مصنوعی را ممکن ساخته است که می‌توانند کد نرم‌افزاری را تولید، اصلاح و درک کنند. با این حال، ارزیابی این سیستم‌ها محدود باقی مانده و اغلب به معیارهای مصنوعی یا با دامنه محدود، عمدتاً در پایتون محدود می‌شود. این معیارها به ندرت تنوع ساختاری و معنایی پایگاه‌های کد دنیای واقعی را منعکس می‌کنند و در نتیجه، بسیاری از عوامل به جای نشان دادن قابلیت‌های قوی و قابل انتقال، الگوهای خاص معیار را بیش از حد یاد می‌گیرند.

AWS، SWE-PolyBench را معرفی می‌کند: یک چارچوب ارزیابی جامع‌تر

برای رفع این چالش‌ها، AWS AI Labs،

SWE-PolyBench
را معرفی کرده است، یک معیار چندزبانه در سطح مخزن که برای ارزیابی مبتنی بر اجرای عوامل کدنویسی هوش مصنوعی طراحی شده است. این معیار شامل ۲۱ مخزن GitHub در چهار زبان برنامه‌نویسی پرکاربرد—Java، JavaScript، TypeScript و Python—شامل ۲،۱۱۰ کار است که شامل رفع اشکال، پیاده‌سازی ویژگی‌ها و بازسازی کد است.

برخلاف معیارهای قبلی، SWE-PolyBench شامل درخواست‌های pull واقعی (PR) است که مسائل واقعی را بسته و شامل موارد آزمایشی مرتبط است و امکان ارزیابی قابل تأیید را فراهم می‌کند. یک زیرمجموعه کوچکتر و طبقه‌بندی‌شده—

SWE-PolyBench500
—نیز برای پشتیبانی از آزمایش سریعتر و در عین حال حفظ تنوع کار و زبان منتشر شده است.

ساختار فنی و معیارهای ارزیابی

SWE-PolyBench یک خط لوله ارزیابی مبتنی بر اجرا را اتخاذ می‌کند. هر کار شامل یک عکس فوری از مخزن و یک بیانیه مسئله است که از یک issue GitHub گرفته شده است. این سیستم پچ ground truth مرتبط را در یک محیط آزمایشی کانتینری که برای اکوسیستم زبان مربوطه پیکربندی شده است (به عنوان مثال، Maven برای Java، npm برای JS/TS و غیره) اعمال می‌کند. سپس معیار نتایج را با استفاده از دو نوع آزمون واحد اندازه‌گیری می‌کند:

fail-to-pass (F2P)
و
pass-to-pass (P2P)
.

برای ارائه ارزیابی دقیق‌تر از عوامل کدنویسی، SWE-PolyBench معیارهای مبتنی بر

Concrete Syntax Tree (CST)
را معرفی می‌کند. این موارد شامل نمرات بازیابی در سطح فایل و سطح گره است که توانایی عامل را در یافتن و اصلاح بخش‌های مرتبط پایگاه کد ارزیابی می‌کند. این معیارها بینش‌هایی فراتر از نتایج باینری pass/fail، به ویژه برای اصلاحات پیچیده و چند فایلی ارائه می‌دهند.

ارزیابی تجربی و مشاهدات

سه عامل کدنویسی متن‌باز—

Aider
،
SWE-Agent
و
Agentless
—برای SWE-PolyBench اقتباس شدند. همه از Claude 3.5 Anthropic به عنوان مدل زیربنایی استفاده کردند و برای رسیدگی به الزامات چندزبانه در سطح مخزن معیار اصلاح شدند.

این ارزیابی تفاوت‌های قابل توجهی را در عملکرد بین زبان‌ها و انواع وظایف نشان داد. به عنوان مثال، عوامل در وظایف Python بهترین عملکرد را داشتند (تا 24.1٪ نرخ قبولی) اما با TypeScript مشکل داشتند (به اندازه 4.7٪). Java، با وجود پیچیدگی بیشتر از نظر تغییرات متوسط گره، نرخ موفقیت بالاتری نسبت به TypeScript به دست آورد، که نشان می‌دهد که قرار گرفتن در معرض پیش آموزش و آشنایی با نحو نقش مهمی در عملکرد مدل ایفا می‌کند.

عملکرد در زبان‌های مختلف
عملکرد در زبان‌های مختلف

عملکرد همچنین با پیچیدگی کار متفاوت بود. وظایف محدود به تغییرات تک تابعی یا تک کلاسی، نرخ موفقیت بالاتری را به همراه داشت (تا 40٪)، در حالی که وظایف نیازمند تغییرات ترکیبی یا چند فایلی کاهش قابل توجهی را نشان دادند. جالب اینجاست که دقت و یادآوری بالای بازیابی - به ویژه برای شناسایی گره فایل و CST - همیشه به نرخ قبولی بالاتر تبدیل نمی‌شود، که نشان می‌دهد محلی‌سازی کد برای حل مسئله ضروری است اما کافی نیست.

عملکرد در مقابل پیچیدگی کار
عملکرد در مقابل پیچیدگی کار

نتیجه‌گیری: به سوی ارزیابی قوی عوامل کدنویسی هوش مصنوعی

SWE-PolyBench یک چارچوب ارزیابی قوی و دقیق برای عوامل کدنویسی ارائه می‌دهد و محدودیت‌های کلیدی در معیارهای موجود را برطرف می‌کند. با پشتیبانی از چندین زبان برنامه‌نویسی، پوشش طیف گسترده‌تری از انواع وظایف و گنجاندن معیارهای آگاه از نحو، یک ارزیابی نماینده‌تر از کاربرد دنیای واقعی یک عامل ارائه می‌دهد.

این معیار نشان می‌دهد که در حالی که عوامل هوش مصنوعی قابلیت‌های امیدوارکننده‌ای از خود نشان می‌دهند، عملکرد آنها در بین زبان‌ها و وظایف ناهمگون باقی می‌ماند. SWE-PolyBench پایه‌ای برای تحقیقات آینده با هدف بهبود قابلیت تعمیم، استحکام و قابلیت‌های استدلال دستیاران کدنویسی هوش مصنوعی فراهم می‌کند.


وبلاگ AWS DevOps، Hugging Face – SWE-PolyBench و GitHub – SWE-PolyBench را بررسی کنید.