RubricEval
معیارهای وزندار و شرطهای لازم رو توی یه rubric نسخهدار تعریف میکنی و ریپوی GitHub یا فایل ZIP میدی. LLM کد رو معیاربهمعیار بررسی میکنه؛ تصمیم نهایی قبول، بازبینی یا رد رو قانونهای مشخص برنامه میگیرن تا نتیجه قابل تکرار باشه.
تصاویر و ویدیوها
مسئله
اگه همهٔ ارزیابی کد رو به یه prompt بسپری، معلوم نیست با تغییر prompt چرا نتیجه عوض شده. RubricEval سه کار رو جدا میکنه: معیارها توی rubric نسخهدار تعریف میشن، LLM روی فایلهای واقعی به هر معیار نمره میده و قانونهای ثابت برنامه تصمیم نهایی رو میگیرن. میشه دید هر نتیجه از کجا اومده و بعداً هم دوباره همون ارزیابی رو انجام داد.
نقش من
کل پلتفرم رو طراحی و ساختم: بکاند FastAPI با SQLAlchemy غیرهمزمان و صف کار مقاوم، و فرانتاند Next.js با TypeScript.
مسیر کار
- ۰۱ریپو یا ZIP
- ۰۲دریافت و یکسانسازی
- ۰۳نمره به هر معیار
- ۰۴چک کردن شواهد
- ۰۵policy قطعی
- ۰۶گزارش زنده
تصمیمهای فنی مهم
مدل نمره میده، کد تصمیم میگیره
LLM هر معیار رو جداگانه نمره میده. بعد یه تابع policy تستشده با همون نمرهها تصمیم قبول، بازبینی یا رد رو میگیره؛ تصمیم به تغییر حالوهوای مدل وابسته نمیمونه.
شواهد با فایلهای واقعی چک میشن
اگه مدل به یه فایل، شمارهخط یا تکهکد استناد کنه، برنامه اون رو با فایل واقعی مقایسه میکنه. ارجاعی که پیدا نشه مشخص میشه تا به عنوان مدرک پذیرفته نشه.
میشه فهمید هر نتیجه با کدوم معیار به دست اومده
هر rubric یه hash داره و کنار نتیجه، اسم مدل و نسخهٔ prompt هم ثبت میشه. اگه معیارها بعداً تغییر کنن، معلومه نتیجهٔ قبلی با کدوم نسخه گرفته شده.
ارزیابی وسط کار گم نمیشه
کارها توی صفی میمونن که بعد از crash هم ادامه پیدا میکنه و بین چند worker پخش میشه. نتیجهها زنده پخش میشن؛ با FakeLLM و مجموعهٔ مرجع هم میشه تغییرهای prompt یا مدل رو آفلاین تست کرد.
نتیجه
- برای هر تصمیم، معیارها و شواهدش مشخصه؛ میشه ارزیابی رو دوباره انجام داد و نتیجه رو بررسی کرد.
- با FakeLLM میشه موتور رو بدون اینترنت اجرا کرد و تغییرهای prompt یا مدل رو با یه مجموعهٔ مرجع سنجید.