فاز 14 · درس 30

توسعه مبتنی بر ارزیابی ایجنت‌ها (Eval-Driven Development)

نوع
مفهومی و ساختنی
زمان
حدود 60 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
تمام درس‌های فاز 14
یک ترازو و ابزار دقیق سنجش و بازرسی مکانیکی کنار یک مسیر خط لوله خودکار
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم کلیدی
  4. سه لایه‌ی ارزیابی
  5. ارزیاب-بهینه‌ساز (Anthropic)
  6. بهترین روش‌ها در سال 2026
  7. اتصال درس‌های فاز 14 به یکدیگر
  8. دلایل شکست توسعه‌ی مبتنی بر ارزیابی
  9. پیاده‌سازی از صفر
  10. استفاده از ابزارهای واقعی
  11. خروجی این درس
  12. تمرین‌ها
  13. اصطلاحات کلیدی
  14. برای مطالعه‌ی بیشتر

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

توسعه‌ی مبتنی بر ارزیابی (Eval-Driven Development) این چالش را با تبدیل سنجش کیفیت از مرحله‌ی پایانی پروژه به حلقه‌ی هدایت‌کننده‌ی معماری حل می‌کند. در این روش، هر قابلیت، محدودیت یا شکست گذشته به یک مورد ارزیابی در مخزن کد بدل شده و با استقرار در خطوط یکپارچه‌سازی مداوم (CI)، جلوی هرگونه پس‌رفت (Regression) پیش از ادغام کد گرفته می‌شود.

اگر دسترسی به API سرویس‌های ابری خارجی مانند مدل‌های ارزیاب یا ابزارهای تله‌متری با محدودیت‌های شبکه همراه باشد، می‌توانید ارزیابی‌های پایه‌ای را به شکل محلی و با مدل‌های سبک‌تر اجرا کرده و پایپ‌لاین‌های CI خود را بدون وابستگی دائم به زیرساخت‌های ابری پایدار نگه دارید.

توصیه‌ی Anthropic: «با پرامپت‌های ساده شروع کنید، آن‌ها را با ارزیابی جامع بهینه‌سازی کنید، و فقط در صورت نیاز سیستم‌های ایجنتی چندمرحله‌ای را بیفزایید.» ارزیابی مرحله‌ی آخر کار نیست؛ حلقه‌ی بیرونی است که تک‌تک انتخاب‌های دیگر در فاز 14 را هدایت می‌کند.

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

  • نام بردن سه لایه‌ی ارزیابی — بنچ‌مارک‌های ایستا، ارزیابی‌های سفارشی آفلاین، ارزیابی‌های پروداکشن آنلاین — و کاربرد هر کدام.
  • توضیح حلقه‌ی فشرده‌ی ارزیاب-بهینه‌ساز (evaluator-optimizer).
  • شرح بهترین روش‌های سال 2026: استقرار ارزیابی‌ها در کنار کد، اجرا در CI، و اعمال گیت روی PRها.
  • پیوند دادن هر یک از درس‌های فاز 14 به مورد ارزیابی که ایجاد می‌کند.

صورت مسئله

ایجنت‌ها در دموها قبول می‌شوند، ولی در محیط پروداکشن طوری شکست می‌خورند که دموها قادر به پیش‌بینی‌اش نیستند. بنچ‌مارک‌ها به این پرسش پاسخ می‌دهند که «آیا این مدل به‌طور کلی توانمند است؟» نه اینکه «آیا این ایجنت تکه‌های (patches) کُد درستی برای محصول من تحویل می‌دهد؟» راهکار این است: ارزیابی در سه لایه که به‌صورت مداوم اجرا شود و هر گاردریل (ریل ایمنی) و قاعده‌ی آموخته‌شده به یک مورد ارزیابی متصل باشد.

مفاهیم کلیدی

سه لایه‌ی ارزیابی

  1. بنچ‌مارک‌های ایستا — SWE-bench Verified برای کد (درس 19)، WebArena/OSWorld برای مرور وب و دسکتاپ (درس 20)، GAIA برای توانمندی‌های عمومی (درس 19)، BFCL V4 برای فراخوانی ابزار (Tool Use) (درس 06). کاربرد: مقایسه‌ی میان‌مدلی و اعمال گیت بر اساس پس‌رفت (regression). نسبت آلودگی (contamination) کاملاً واقعی است: پروژه‌ی +SWE-bench نشان داد که 32.67% نشت راه‌حل وجود دارد. همیشه امتیازها را روی SWE-bench Verified یا مجموعه‌ای بازبینی‌شده از نظر نشت داده، مثل +SWE-bench، گزارش کنید.

  2. ارزیابی‌های سفارشی آفلاین — متناسب با ساختار محصول شما:

    • مدل زبانی در نقش داور (LLM-as-judge) (با Langfuse ،Phoenix ،Opik — درس 24).
    • مبتنی بر اجرا (اجرای تکه، بررسی آزمون‌ها).
    • مبتنی بر مسیر حرکت (مقایسه‌ی توالی اقدام‌ها با مسیر مرجع؛ پروژه‌ی OSWorld-Human نشان می‌دهد ایجنت‌های برتر 1.4 تا 2.7 برابر مسیر مرجع گام برمی‌دارند).
  3. ارزیابی‌های آنلاین — محیط پروداکشن:

    • بازپخش نشست‌ها (Langfuse).
    • هشدارهای فعال‌شده توسط گاردریل (درس‌های 16 و 21).
    • ردیابی هزینه و تاخیر در هر گام (اسپن‌های OTel در درس 23).

ارزیاب-بهینه‌ساز (Anthropic)

حلقه‌ی فشرده:

  1. پیشنهاددهنده خروجی را تولید می‌کند.
  2. ارزیاب داوری می‌کند.
  3. بازبینی و اصلاح ادامه می‌یابد تا ارزیاب خروجی را تایید کند.

این رویکرد تعمیم‌یافته‌ی Self-Refine (درس 05) است. برای افزایش قابلیت اطمینان، می‌توانید هر جریان ایجنتی مهمی را درون یک ارزیاب-بهینه‌ساز بپیچید.

بهترین روش‌ها در سال 2026

  • ارزیابی‌ها در کنار کد قرار می‌گیرند.
  • در هر PR درون CI اجرا می‌شوند.
  • ادغام (merge) بر اساس امتیازهای ارزیابی مشروط می‌شود (مثلاً «عدم وجود پس‌رفت بیشتر از 5% نسبت به شاخه‌ی main»).
  • هر گاردریل به یک مورد ارزیابی متصل است.
  • هر قاعده‌ی آموخته‌شده (Reflexion یا یادگیری قواعد در جریان‌های کاری پیشرفته) به یک حالت شکست نگاشت می‌شود.

اتصال درس‌های فاز 14 به یکدیگر

بیشتر درس‌های فاز 14 یک مورد ارزیابی مشخص تولید می‌کنند. جدول زیر درس‌هایی را نشان می‌دهد که روشن‌ترین موارد را دارند:

درس مورد ارزیابی حاصل از آن
01 حلقه‌ی ایجنت اتمام بودجه، محافظت در برابر حلقه‌ی بی‌نهایت
02 ReWOO برنامه‌ریزی مجدد و درستِ برنامه‌ریز هنگام شکست ابزار
03 Reflexion اعمال بازتاب‌های آموخته‌شده در تلاش مجدد
05 Self-Refine/CRITIC قبولی خروجی اصلاح‌شده توسط داور
06 فراخوانی ابزار کارکرد صحیح تبدیل نوع آرگومان‌ها؛ رد ابزارهای ناشناخته
07-10 حافظه تطابق ارجاع‌های بازیابی با منابع؛ باطل‌سازی فکت‌های منسوخ
12 الگوهای گردش کار تولید خروجی درست توسط هر الگو
13 LangGraph بازتولید دقیق وضعیت هنگام ادامه‌ی کار (Resume)
14 اکتورهای AutoGen به‌دام‌انداختن گرداننده‌های متوقف‌شده توسط DLQ
16 SDK ایجنت‌های OpenAI فعال‌شدن گاردریل روی ورودی‌های درست
17 SDK ایجنت Claude بازگشت نتایج زیرایجنت‌ها به هماهنگ‌کننده (Orchestrator)
19-20 بنچ‌مارک‌ها امتیاز SWE-bench Verified، نرخ موفقیت WebArena، کارایی OSWorld
21 استفاده از کامپیوتر مهار DOMهای تزریق‌شده توسط ایمنی گام‌به‌گام
23 OTel انتشار ویژگی‌های الزامی توسط اسپن‌ها
26 حالت‌های شکست برچسب‌گذاری خطاهای شناخته‌شده توسط آشکارسازها
27 تزریق پرامپت رد بازیابی‌های مسموم توسط PVE
28 ارکستراسیون مسیریابی سرپرست به متخصص مناسب
29 ساختارهای محیط اجرا مدیریت N% خطا توسط DLQ

اگر مجموعه‌ی ارزیابی شما برای هر ردیف یک مورد داشته باشد، هسته‌ی فاز 14 را پوشش داده‌اید.

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

  • نبود خط مبنا (Baseline). ارزیابی‌ها بدون آخرین وضعیت تاییدشده غیرقابل‌فهم هستند. خطوط مبنا را ذخیره کنید.
  • داوری مدل زبانی بدون ارجاع‌دهی مکانی (Grounding). داورها هم دچار توهم می‌شوند. از الگوی CRITIC (درس 05) استفاده کنید تا داور به ابزارهای بیرونی متکی باشد.
  • بیش‌برازش روی ارزیابی‌ها. بهینه‌سازی افراطی برای ارزیابی‌ها، کارایی در دنیای واقعی پروداکشن را کم می‌کند. موارد ارزیابی را به‌صورت دوره‌ای تغییر دهید.
  • ارزیابی‌های ناپایدار (Flaky). آزمون‌های غیرقطعی هشدارهای کاذب می‌سازند. مقدار seed را ثابت نگه دارید و از وضعیت‌ها اسنپ‌شات بگیرید.
حلقه‌ی مبتنی بر ارزیابیسه لایه‌ی پیرامون فرآیند ساخت
EVAL-DRIVEN LOOPEvaluation is not the final checkbox; it is the outer loop that drives every choice. Static benchmarks fix the model, custom offline evals measure your product shape, and online production evals catch regressions on live traffic. The three rings turn around the build continuously, which is why 2026 practice keeps evals next to code, in CI, gating every PR.ساختایجنتبنچمارک‌های ایستاآفلاین سفارشیپروداکشن آنلاینSWE-bench, GAIA, BFCLداور مدل زبانی، اجرا، مسیر سیرترافیک زنده، پسرفت‌ها، دروازه‌هاارزیابی حلقه‌ی بیرونی است، نه مرحله‌ی آخر
ارزیابی صرفاً چک‌باکس نهایی نیست؛ حلقه‌ی بیرونی است که هر تصمیمی را هدایت می‌کند. بنچمارک‌های ایستا مدل را تثبیت می‌کنند، ارزیابی‌های آفلاین سفارشی فرم محصول شما را می‌سنجند، و ارزیابی‌های پروداکشن آنلاین پسرفت‌ها را در ترافیک زنده شناسایی می‌کنند. این سه حلقه مدام گرد فرآیند ساخت می‌چرخند؛ به همین دلیل در استانداردهای سال 2026، ارزیابی‌ها در کنار کد، درون CI و به‌عنوان دروازه‌ی ورود هر PR نگهداری می‌شوند.

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

فایل code/main.py یک بستر آزمایشی (harness) ارزیابی با کتابخانه‌ی استاندارد است:

  • رجیستری موارد آزمون با دسته‌بندی مشخص (بنچ‌مارک، سفارشی، آنلاین).
  • یک ایجنت آزمایشی مبتنی بر اسکریپت تحت آزمون.
  • حلقه‌ی ارزیاب-بهینه‌ساز: پیشنهاد، داوری، اصلاح تا زمان قبولی یا رسیدن به سقف دورها.
  • گیت CI: محاسبه‌ی مجموع نرخ قبولی (Pass Rate) و سنجش پس‌رفت نسبت به خط مبنا.

اجرای برنامه:

python3 code/main.py

خروجی: قبولی یا ردی در هر مورد، هشدار پس‌رفت، و حکم نهایی گیت CI.

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

  • موارد ارزیابی را در همان مخزن کد ایجنت بنویسید.
  • آن‌ها را در هر PR از طریق CI اجرا کنید.
  • در صورت پس‌رفت، فرایند ساخت را متوقف کنید.
  • روند تغییرات نرخ قبولی را در طول زمان زیر نظر بگیرید.
  • هر شکست در پروداکشن را به یک مورد ارزیابی تازه متصل کنید.

خروجی این درس

فایل outputs/skill-eval-suite.md یک مجموعه‌ی ارزیابی سه‌لایه‌ای برای یک محصول ایجنتی به‌همراه گیت‌های CI و ردیابی پس‌رفت می‌سازد.

تمرین‌ها

  1. یکی از شکست‌های سیستم خود در پروداکشن را بردارید و یک مورد ارزیابی برای بازتولید آن بنویسید. آیا ایجنت شما الان در آن قبول می‌شود؟
  2. یک شیوه‌نامه‌ی نمره‌دهی (Rubric) برای داوری مدل زبانی در دامنه‌ی کاری خود با سه بعد (صحت فکت‌ها، لحن، دامنه) بسازید. عملکرد 50 نشست را ارزیابی کنید.
  3. مجموعه‌ی ارزیابی را به CI متصل کنید؛ طوری که با پس‌رفت 5% یا بیشتر، ساخت ناموفق شود.
  4. معیار کارایی مسیر حرکت را اضافه کنید: ایجنت در مقایسه با مسیر مرجع چند گام برداشته است؟
  5. هر یک از درس‌های فاز 14 را به یک مورد ارزیابی در مجموعه‌ی خود نگاشت کنید. موردی جا مانده؟ این همان شکافی است که باید پر شود.

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

اصطلاح بر زبان‌ها در عمل
بنچ‌مارک ایستا «ارزیابی آماده» SWE-bench ،GAIA ،AgentBench ،WebArena ،OSWorld
ارزیابی سفارشی آفلاین «ارزیابی دامنه» داوری مدل زبانی / مبتنی بر اجرا / ارزیابی مسیر متناسب با محصول شما
ارزیابی آنلاین «ارزیابی پروداکشن» بازپخش نشست‌ها، هشدارهای گاردریل، ردیابی هزینه و تاخیر
ارزیاب-بهینه‌ساز «پیشنهاد-داوری-اصلاح» تکرار فرایند تا تایید نهایی داور
گیت CI «مانع ادغام» متوقف کردن ساخت در صورت پس‌رفت در ارزیابی
خط مبنا «آخرین وضعیت تاییدشده» امتیاز مرجع برای تشخیص پس‌رفت
کارایی مسیر حرکت «تعداد گام‌ها نسبت به مسیر مرجع» تعداد گام‌های ایجنت تقسیم بر حداقل گام‌های کارشناس انسانی

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

خودآزمایی

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

  1. پیش از درسسه لایه‌ی ارزیابی که در درس نام برده شده کدامند؟
  2. پیش از درسنقطه‌ی شروع توصیه‌شده توسط Anthropic چیست؟
  3. حین درسحلقه‌ی فشرده‌ی ارزیاب-بهینه‌ساز چیست؟
  4. حین درسبهترین روش سال 2026 برای محل قرارگیری ارزیابی‌ها چیست؟
  5. حین درسچرا این درس نسبت به داور LLM بدون ارجاع‌دهی مکانی هشدار می‌دهد؟
  6. پس از درسخطر بیش‌برازش (over-fitting) روی ارزیابی‌ها چیست؟
  7. پس از درسچرا ارزیابی‌های ناپایدار (flaky) مشکل‌ساز هستند؟

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

سه لایه‌ی ارزیابی ایجنت‌ها کدامند و چه نقشی دارند؟

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

الگوی ارزیاب-بهینه‌ساز (Evaluator-Optimizer) چگونه کار می‌کند؟

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

چرا ارزیابی ایجنت‌ها باید به خطوط CI متصل شود؟

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

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

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