מערכת הבדיקה שלך תשקר לך לפני שהמודל שלך יעשה זאת
לוח התוצאות של ההערכה שלך ציין ששני המנועים נכשלו.
Llama3.2 נכשל ב-5 מתוך 6 מקרים. Anthropic Sonnet נכשל ב-6 מתוך 6 מקרים.
התיוג היה "malformed". אך הסיבות היו שונות.
כישלון אחד היה שגיאת API מכיוון שהקרדיטים נגמרו. כישלון אחד נבע מתווי בקרה של הטרמינל מפקודת CLI ששיבשו את הטקסט. כישלון אחד היה JSON תקין שעוטף ב-markdown fences שה-parser לא הצליח לקרוא.
אם הייתי מפרסם את הסיכום הראשון הזה, הייתי משקר. הייתי מאשים את המודלים בכישלונות בקוד שלי עצמי.
מצאתי את הבאגים האלה על ידי בדיקת הרשומות הגולמיות (raw records) במקום לסמוך על הסיכום.
הבאג הראשון קרה כי השתמשתי ב-CLI subprocess כדי לקרוא ל-Ollama. הפקודה ייצרה אנימציות טרמינל כמו spinners ותנועות סמן. תווים אלו (ANSI control bytes) נכנסו לתוך הנתונים שלי. ה-parser זיהה תווים בלתי נראים וקרס.
התיקון: מעבר מ-CLI subprocess ל-HTTP API ישיר.
הבאג השני קרה מכיוון ש-LLMs נוטים לעטוף JSON ב-markdown fences. ה-parser שלי השתמש ב-json.loads() על המחרוזת הגולמית. הוא זיהה את ה-backticks ונכשל.
התיקון: הוספת פונקציה להסרת code fences לפני ה-parsing.
ברגע שתיקנתי את ה-pipeline, התוצאות האמיתיות הופיעו.
המודלים לא היו "מתים". הם פשוט עברו עיוות על ידי ה-harness. לאחר התיקון, הפער באיכות בין שני המודלים הפך לנראה ולניתן למדידה.
לקחים עבור ה-AI evaluation pipeline שלכם:
- שמרו על הפלט הגולמי (raw output). אם הסיכום אומר malformed, הפלט הגולמי הוא מקור האמת היחיד שלכם.
- תעדו את סיבת הכישלון. אל תגידו רק "malformed". אמרו "API error" או "parse error".
- הקפיאו את סטנדרטי הבדיקה שלכם. אל תשנו את הכללים כדי לגרום לתוצאות להיראות טוב יותר.
- התייחסו ל-harness כחלק מהמערכת הנבדקת.
המודל הוא לא הדבר היחיד שנמצא למשפט. גם הקוד שלכם כן.
מקור: https://dev.to/kenielzep97/your-harness-will-lie-to-you-before-your-model-does-662
קהילת למידה אופציונלית: https://t.me/GyaanSetuAi
