فاز 14 · درس 19

بنچمارک‌های ارزیابی ایجنت: SWE-bench، GAIA و AgentBench

نوع
مفهومی
زمان
حدود 60 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
فاز 14 · بخش 06 (فراخوانی ابزار)
یک ترازو و ابزار دقیق اندازه‌گیری فلزی که سه قطعه‌ی نرم‌افزاری و مکعب‌های کدی را در برابر یک ذره‌بین بزرگ ارزیابی می‌کند
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم کلیدی
  4. SWE-bench (ارائه‌شده توسط Jimenez و همکاران، مقاله‌ی شفاهی ICLR 2024)
  5. SWE-bench Verified
  6. نسبت آلودگی
  7. GAIA (ارائه‌شده توسط Mialon و همکاران، نوامبر 2023)
  8. AgentBench (ارائه‌شده توسط Liu و همکاران، ICLR 2024)
  9. مواردی که این بنچمارک‌ها اندازه نمی‌گیرند
  10. خطاهای رایج در بنچمارک‌گیری
  11. پیاده‌سازی از صفر
  12. استفاده از ابزارهای واقعی
  13. خروجی این درس
  14. تمرین‌ها
  15. اصطلاحات کلیدی
  16. برای مطالعه‌ی بیشتر

در هیاهوی جدول‌های رده‌بندی مدل‌های زبانی، نمرات خیره‌کننده همیشه به‌معنای کارایی یک ایجنت در محیط عملیاتی نیست. بسیاری از اعداد تبلیغاتی تحت تأثیر نشت داده‌های آموزشی یا تست‌های نامطمئن قرار دارند؛ بنابراین اگر برای توسعه‌ی دستیارهای برنامه‌نویسی یا ایجنت‌های تصمیم‌گیر به این داده‌ها تکیه کنید، در مرحله‌ی استقرار واقعی غافلگیر خواهید شد.

این درس سه استاندارد معتبر ارزیابی یعنی SWE-bench (برای باگ‌زدایی و اصلاح کد)، GAIA (برای تعامل چندوجهی و فراخوانی ابزارها) و AgentBench (برای تصمیم‌گیری در محیط‌های ناهمگن) را کالبدشکافی می‌کند. با یادگیری سازوکار فیلترهایی مانند FAIL_TO_PASS و تحلیل پدیده‌ی آلودگی داده، می‌توانید معیار ارزیابی دقیق، قابل‌اتکا و متناسب با نیاز سیستم خود بسازید.

در سال 2026، ارزیابی ایجنت‌ها بر پایه‌ی سه بنچمارک اصلی استوار است: SWE-bench اصلاح کد با تکه‌کدها (patch) را می‌سنجد؛ GAIA فراخوانی ابزارها به‌صورت عمومی را ارزیابی می‌کند؛ و AgentBench استدلال در محیط‌های چندگانه را به چالش می‌کشد. ساختار این بنچمارک‌ها، ماجرای آلودگی داده‌های آن‌ها و جنبه‌هایی را که اندازه نمی‌گیرند به‌خوبی بشناسید.

اهداف یادگیری

  • نام‌بردن بستر آزمایشی (test harness) در SWE-bench (معیار FAIL_TO_PASS) و توضیح دلیل تکیه‌ی آن بر آزمون‌های واحد (unit tests).
  • توضیح دلیل پیدایش SWE-bench Verified (توسط OpenAI با 500 تسک) و مواردی که از آن حذف شده است.
  • تشریح طراحی GAIA: ساده برای انسان، سخت برای هوش مصنوعی؛ در سه سطح دشواری.
  • نام‌بردن هشت محیط AgentBench و مانع اصلی مدل‌های زبانی متن‌باز در آن.
  • خلاصه‌سازی یافته‌های مربوط به نسبت آلودگی (contamination) در SWE-bench+ و پیامدهای آن.

صورت مسئله

جدول‌های رده‌بندی (leaderboards) فقط می‌گویند کدام مدل در یک بنچمارک برنده شده است، اما این نکات را روشن نمی‌کنند:

  • آیا بنچمارک آلوده است یا نه (وجود راه‌حل‌ها در داده‌های آموزشی، نشت تست‌ها).
  • آیا بنچمارک دقیقاً همان چیزی را می‌سنجد که برای شما مهم است یا نه (کدنویسی در برابر وب‌گردی یا کارهای عمومی).
  • آیا ارزیاب استحکام کافی دارد یا خیر (تطبیق AST، بررسی وضعیت سیستم، بازبینی انسانی).

پیش از آنکه به عددی استناد کنید، این سه بنچمارک محوری و حالت‌های شکست (failure modes) آن‌ها را بشناسید.

مفاهیم کلیدی

SWE-bench (ارائه‌شده توسط Jimenez و همکاران، مقاله‌ی شفاهی ICLR 2024)

  • 2,294 ایشوی واقعی گیت‌هاب از 12 مخزن محبوب پایتون.
  • ورودی به ایجنت: کد مخزن در commit پیش از رفع باگ + شرح متنی ایشو به زبان طبیعی.
  • خروجی ایجنت: یک تکه (patch).
  • ارزیاب: اعمال تکه و اجرای تست‌های مخزن. تکه باید تست‌های FAIL_TO_PASS را پاس کند (تست‌هایی که قبلاً رد می‌شدند و حالا باید قبول شوند)، بدون آنکه تست‌های PASS_TO_PASS را خراب کند.

ایجنت SWE-agent (توسط Yang و همکاران، 2024) در زمان انتشار با تمرکز بر رابط‌های تعاملی ایجنت و کامپیوتر (دستورهای ویرایشگر فایل و سینتکس جست‌وجویی که مدل بفهمد) به امتیاز 12.5% رسید.

SWE-bench Verified

ارائه‌شده توسط OpenAI در اوت 2024؛ زیرمجموعه‌ای شامل 500 تسک که با نظارت انسان گلچین شده است. ایشوهای مبهم، تست‌های غیرقابل‌اتکا و تسک‌هایی با راه‌حل نامشخص از آن حذف شده‌اند. این مجموعه بنچمارک اصلی برای سنجش این پرسش است: «آیا ایجنت شما تکه‌های واقعی و قابل‌استفاده تحویل می‌دهد؟»

نسبت آلودگی

  • بیش از 94% از ایشوهای SWE-bench پیش از تاریخ نهایی داده‌های آموزشی (cutoff) اکثر مدل‌ها ثبت شده‌اند.
  • پروژه‌ی SWE-bench+ نشان داد در 32.67% از تکه‌های موفق، راه‌حل در متن ایشو لو رفته بود (مدل راه‌حل را در توضیحات دیده بود) و 31.08% نیز به‌دلیل پوشش ضعیف تست‌ها مشکوک بودند.
  • نسخه‌ی Verified تمیزتر است، اما کاملاً عاری از آلودگی نیست.

نتیجه‌ی عملی: مدلی که در SWE-bench امتیاز 50% می‌گیرد، ممکن است در SWE-bench+ به 35% برسد. اگر ادعای عملکردی در SWE-bench دارید، همیشه هر دو معیار را گزارش کنید.

GAIA (ارائه‌شده توسط Mialon و همکاران، نوامبر 2023)

  • 466 پرسش؛ 300 مورد برای جدول رده‌بندی خصوصی در huggingface.co/gaia-benchmark نگه‌داشته شده است.
  • فلسفه‌ی طراحی: «از نظر مفهومی ساده برای انسان (92%)، اما سخت برای هوش مصنوعی (GPT-4 همراه با افزونه‌ها: 15%).»
  • سنجش استدلال، چندوجهی بودن، وب و فراخوانی ابزار (tool use).
  • دارای سه سطح دشواری؛ سطح 3 نیازمند زنجیره‌های طولانی ابزار در میان چند مودالیتی است.

برای سنجش «توانمندی عمومی» باید به سراغ GAIA بروید؛ آن را با بنچمارک‌های ویژه‌ی کد اشتباه نگیرید.

AgentBench (ارائه‌شده توسط Liu و همکاران، ICLR 2024)

  • 8 محیط مختلف شامل کد (Bash، پایگاه‌داده، گراف دانش)، بازی‌ها (Alfworld، LTP)، وب (WebShop، Mind2Web) و تولید آزاد متن.
  • چندنوبتی، با حدود 4k تا 13k نوبت گفت‌وگو (turn) در هر بخش.
  • یافته‌ی اصلی: استدلال بلندمدت، تصمیم‌گیری و پیروی از دستورالعمل‌ها، موانع اصلی مدل‌های متن‌باز برای رسیدن به مدل‌های تجاری هستند.

مواردی که این بنچمارک‌ها اندازه نمی‌گیرند

  • هزینه‌ی عملیاتی در دنیای واقعی (مصرف توکن، زمان واقعی اجرا).
  • رفتار امنیتی در شرایط خصمانه.
  • عملکرد روی دامنه‌ی کاری خاص شما (از ارزیابی‌های اختصاصی خودتان استفاده کنید، درس 30).
  • شکست‌های نادربه‌وقوع یا دم‌بلند (بنچمارک‌ها میانگین می‌گیرند؛ اما اپراتورهای محیط پروداکشن نگران بدترین 1% خروجی‌ها هستند).

خطاهای رایج در بنچمارک‌گیری

  • تمرکز روی یک تک‌عدد. عدد 50% در SWE-bench اطلاعات بسیار کمتری نسبت به توزیع هزینه‌ها و گام‌ها در P50، P75 و P95 به شما می‌دهد.
  • ادعاهای آلوده. گزارش امتیاز SWE-bench بدون اشاره به Verified یا SWE-bench+ گمراه‌کننده است.
  • تبدیل بنچمارک به هدف نهایی توسعه. بهینه‌سازی صرفاً برای بنچمارک، کارایی مدل در محیط پروداکشن را کاهش می‌دهد.
دروازه ارزیابی SWE-BENCHآزمون‌ها تکه را نمره‌دهی می‌کنند، نه قضاوت
SWE-BENCH GATESWE-bench scores a patch by running the repo test suite, not by asking a model if it looks right. A task counts as resolved only when the FAIL_TO_PASS tests now pass and the PASS_TO_PASS tests still pass. Execution-based grading is why the benchmark resists gaming, and why SWE-bench Verified strips out tasks whose tests were ambiguous or broken.ایجنتتکه کدبستر آزمایشیFAIL_TO_PASSFAIL_TO_PASSPASS_TO_PASSPASS_TO_PASSRESOLVEDحل‌شده فقط در صورت سبز شدن تمام آزمون‌های دروازه
معیار SWE-bench با اجرای مجموعه آزمون مخزن، یک تکه کد را می‌سنجد نه با پرسیدن از یک مدل که آیا درست به نظر می‌رسد یا خیر. یک تسک تنها زمانی حل‌شده محسوب می‌شود که آزمون‌های FAIL_TO_PASS اکنون قبول شوند و آزمون‌های PASS_TO_PASS همچنان موفق باشند. نمره‌دهی مبتنی بر اجرا به همین دلیل در برابر دور زدن مقاوم است و SWE-bench Verified نیز تسک‌هایی که آزمون مبهم یا خرابی داشتند را حذف می‌کند.

پیاده‌سازی از صفر

فایل code/main.py یک بستر آزمایشی (harness) جمع‌وجور شبیه SWE-bench را پیاده‌سازی می‌کند:

  • تسک‌های ساختگی رفع باگ (3 تسک).
  • یک «ایجنت» اسکریپتی که تکه‌ها را پیشنهاد می‌دهد.
  • یک اجراکننده‌ی تست که FAIL_TO_PASS (باگ اکنون برطرف شده) و PASS_TO_PASS (چیزی خراب نشده) را بررسی می‌کند.
  • یک دسته‌بندی‌کننده‌ی سطح دشواری به سبک GAIA بر اساس عمق خردکردن مسئله.

اجرایش کنید:

python3 code/main.py

خروجی برنامه نرخ رفع مشکل را به‌تفکیک هر تسک و هر سطح دشواری نشان می‌دهد و قواعد ارزیاب را ملموس می‌کند.

استفاده از ابزارهای واقعی

  • SWE-bench Verified برای ایجنت‌های کدنویسی. همیشه نمرات Verified را گزارش کنید.
  • GAIA برای ایجنت‌های همه‌منظوره. از بخش خصوصی جدول رده‌بندی استفاده کنید.
  • AgentBench برای مقایسه در محیط‌های گوناگون.
  • ارزیابی‌های سفارشی (درس 30) متناسب با ساختار واقعی محصول شما.

خروجی این درس

مستند outputs/skill-benchmark-harness.md یک بستر آزمایشی به سبک SWE-bench برای هر جفت «مخزن کد-تسک» با فیلترهای FAIL_TO_PASS و PASS_TO_PASS می‌سازد.

تمرین‌ها

  1. بستر آزمایشی این درس را طوری تغییر دهید که روی یک مخزن واقعی (یکی از پروژه‌های خودتان) اجرا شود. برای 3 باگ مشخص، تست‌های FAIL_TO_PASS بنویسید.
  2. یک متریک برای تعداد گام‌ها اضافه کنید. در این 3 تسک، ایجنت برای حل هر مسئله به چند گام نیاز دارد؟
  3. مقاله‌ی SWE-bench+ را بخوانید. سازوکاری برای بررسی نشت راه‌حل پیاده‌سازی کنید (تطبیق الگو بین متن ایشو و diff تغییرات).
  4. یک پرسش GAIA را از مجموعه‌ی عمومی دانلود کنید. ردگیری محاسبات (Trace) اقدامات یک ایجنت در سطح GPT-4 را مشخص کنید. چنین ایجنتی به چه ابزارهایی نیاز دارد؟
  5. تحلیل تفکیکی هر محیط را در مقاله‌ی AgentBench بخوانید. کدام محیط بیشترین شباهت را به محصول شما دارد؟ بهترین مدل‌های موجود (SOTA) در آن محیط چه عملکردی دارند؟

اصطلاحات کلیدی

اصطلاح برداشتی که رایج است معنای واقعی آن
SWE-bench «بنچمارک ایجنت کدنویسی» 2,294 ایشوی گیت‌هاب؛ تکه باید تست‌های FAIL_TO_PASS را پاس کند
SWE-bench Verified «نسخه‌ی تمیز SWE-bench» 500 تسک گلچین‌شده توسط انسان، OpenAI
FAIL_TO_PASS «فیلتر رفع باگ» تست‌هایی که قبلاً رد می‌شدند و پس از اعمال تکه باید حتماً قبول شوند
PASS_TO_PASS «فیلتر عدم بازگشت باگ» تست‌هایی که قبلاً قبول می‌شدند و همچنان باید پاس شوند
GAIA «بنچمارک عمومی» 466 پرسش چندابزاری؛ ساده برای انسان و دشوار برای هوش مصنوعی
AgentBench «بنچمارک چندمحیطی» 8 محیط؛ با نوبت‌های گفت‌وگوی متعدد و افق زمانی طولانی
نسبت آلودگی (Contamination) «نشت داده‌های آموزشی» حضور تسک‌های بنچمارک در داده‌های آموزش مدل
SWE-bench+ «ممیزی آلودگی» کشف 32.67% نشت راه‌حل در تکه‌های موفق SWE-bench

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسارزیاب SWE-bench چه چیزی را در یک تکه کاندید بررسی می‌کند؟
  2. پیش از درسچرا SWE-bench Verified ایجاد شد؟
  3. حین درسپروژه SWE-bench+ درباره تکه‌های موفق چه چیزی کشف کرد؟
  4. حین درسفلسفه طراحی GAIA چیست؟
  5. حین درسکدام مورد جزو دسته‌بندی‌های محیطی AgentBench نیست؟
  6. پس از درسدرس چه روشی را شیوه نادرست گزارش نتایج SWE-bench معرفی می‌کند؟
  7. پس از درساین بنچمارک‌ها کدام بعد را ارزیابی نمی‌کنند؟

سؤالات متداول

معیار FAIL_TO_PASS در SWE-bench دقیقاً چه کاری انجام می‌دهد؟

این معیار تضمین می‌کند که تکه‌کد پیشنهادی ایجنت، تست‌های واحدی را که پیش از اعمال پچ رد می‌شدند، با موفقیت پاس کند؛ در واقع اثبات می‌کند باگ موردنظر واقعاً رفع شده است.

چرا نسخه SWE-bench Verified معرفی شد؟

این نسخه توسط انسان‌ها بازبینی شده و 500 تسک تمیز را شامل می‌شود تا ایشوهای مبهم، تست‌های ناپایدار و باگ‌هایی با راه‌حل نامشخص از بنچمارک اصلی حذف شوند.

منظور از آلودگی (Contamination) در بنچمارک‌های ارزیابی چیست؟

آلودگی زمانی رخ می‌دهد که صورت مسئله، متن تست‌ها یا خود راه‌حل رفع باگ در داده‌های پیش‌آموزش مدل لو رفته باشند، که باعث بالارفتن کاذب نمره‌ی بنچمارک می‌شود.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.