הגדרה של מודל שופט בסיסי (חלק 2)

כדי להפעיל את ההערכות הסובייקטיביות, צריך להשלים את ההגדרה של מודל השופט הבסיסי.

התאמה ובדיקה של השופט

יש לכם שופט ראשוני, אבל אתם עדיין לא יכולים לסמוך עליו. השופט מוכן רק אם הוא מסכים באופן עקבי עם שיפוט אנושי.

יצירת מערך נתונים להתאמה

כדי לכייל את השופט, צריך מערך נתונים להתאמה. זהו אוסף קטן של תשומות ותפוקות באיכות גבוהה שסווגו ידנית על ידי בני אדם. מערך הנתונים הזה משמש כמקור האמת. תשתמשו בו כדי לוודא שהלוגיקה של השופט תואמת באופן עקבי לציפיות שלכם.

מערך הנתונים של ההתאמה צריך להכיל 30-50 זוגות של קלט-פלט. הסט גדול מספיק כדי לכסות כמה מקרים קיצוניים, אבל קטן מספיק כדי שתוכלו לתייג אותו תוך פרק זמן קצר.

בדוגמה של ThemeBuilder, רשומה במערך הנתונים של ההתאמה נראית כך (קלט, פלט, תווית אנושית):

{
  "id": "sample-014",
  "userInput": {
    "companyName": "Rawrr!",
    "audience": "kids 5-10",
    "tone": ["prehistoric", "loud", "fun"]
  },
  "appOutput": {
    "motto": "Experiencing the prehistoric era."
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "FAIL",
      "rationale": "While on-theme, this motto is too formal for kids.
        It fails to capture the required 'loud' and 'fun' energy."
    }
  }
}

כדי ליצור קלט ופלט, אפשר לשלוף נתונים מיומני ייצור אם הם זמינים, ליצור את הנתונים באופן ידני, להשתמש ב-LLM (נתונים סינתטיים) או להתחיל עם כמה דוגמאות שנבחרו בקפידה ולבקש מ-LLM להגדיל את מערך הנתונים.

אחרי שהקלט והפלט מוכנים, משתמשים בקריטריון ההערכה כדי לתייג את הפלט כ-PASS או כ-FAIL יחד עם הצוות. זה הופך למקור המידע האמין שלכם.

חשוב לוודא שערכת הנתונים להתאמה כוללת גם דוגמאות PASS וגם דוגמאות FAIL ברמות קושי שונות, למשל:

  • 10 דוגמאות לתרחישים חיוביים שהשופט צריך לתייג כ-PASS.
  • 20 מקרים לדוגמה שהשופט צריך לתייג כ-FAIL:
    • כשלים ברורים, למשל סיסמה רעילה מאוד או סיסמה שלא קשורה למותג.
    • כשלים עדינים, למשל סיסמה שמושלמת מבחינה דקדוקית אבל רשמית מדי למותג שובב, או שמתאימה רק באופן חלקי לטון.

השופט שלכם הוא שומר סף. אם תתאימו את המדד למערך נתונים שמכיל יותר מקרים של כשלים מאשר מקרים של הצלחות, יהיו לכם יותר הזדמנויות להתאים את קריטריון ההערכה כדי לזהות כשלים, ובסופו של דבר לשפר את יכולת הזיהוי של הכשלים.

אחרי שהכנתם את מערך הנתונים להתאמה, הוא אמור להיראות בערך כך:

מקרים של נתיב אופטימלי (PASS)

// Easy, clean input + Good output
{
  "id": "sample-001",
  "userInput": {
    "companyName": "Kinetica",
    "description": "Carbon-fiber plated performance footwear engineered for
    elite marathon runners.",
    "audience": "competitive triathletes and professional runners",
    "tone": [
      "aggressive",
      "high-performance",
      "technical"
    ]
  },
  "appOutput": {
    "motto": "Unlock your kinetic potential.",
    "colorPalette": {
      "textColor": "#FFFFFF",
      "backgroundColor": "#000000",
      "primary": "#DC2626",
      "secondary": "#E2E8F0"
    }
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "PASS",
      "rationale": "This motto powerfully aligns the brand's technical
      engineering with the ambitious goals of its elite athletic audience.
      Relevance: Uses 'kinetic' to expertly link the brand to physical
      energy. Audience appeal: 'Unlock your potential' resonates perfectly
      with competitive runners. Tone consistency: Nails the required
      aggressive, high-performance marks."
    },
    "mottoToxicity": {
      "label": "PASS",
      "rationale": "Perfectly clean and motivational. No offensive or
      exclusionary language."
    },
    "colorBrandFit": {
      "label": "PASS",
      "rationale": "The chosen color palette perfectly mirrors Kinetica's
      aggressive and technical brand identity by utilizing high-impact tones
      that resonate with elite athletes. Relevance: Psychological association:
      Blood red creates urgency and speed. Harmony: Stark contrast against
      black/white feels highly technical.
      Appropriateness: Extremely effective aesthetic for premium athletic gear."
    }
  }
}

כשלים ברורים (FAIL)

// Off-brand color palette
{
  "id": "sample-014",
  "userInput": {
    "companyName": "Rawrr!",
    "description": "Dinosaur themed playground and party venue.",
    "audience": "kids 5-10",
    "tone": [
      "prehistoric",
      "loud",
      "fun"
    ]
  },
  "appOutput": {
    "motto": "Experiencing the prehistoric era.",
    "colorPalette": {
      "textColor": "#4A4A4A",
      "backgroundColor": "#F5F5DC",
      "primary": "#D2B48C",
      "secondary": "#C0C0C0"
    }
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "FAIL",
      "rationale": "While the motto relates to the dinosaur theme, its overly
      academic and formal tone fails to capture the loud and fun energy
      essential for a children's playground brand. Relevance: Effectively fits
      the dinosaur theme. Audience appeal: A bit formal ('Experiencing' versus
      something punchy), acceptable for parents booking events but should be
      more exciting for kids, it's too formal and academic for a children's
      playground, lacks the 'loud' and 'fun' energy requested in the tone.
      Tone consistency: It touches on the 'prehistoric' element adequately."
    },
    "mottoToxicity": {
      "label": "PASS",
      "rationale": "A completely family-friendly, educational-sounding statement."
    },
    "colorBrandFit": {
      "label": "FAIL",
      "rationale": "This muted and sophisticated color scheme fails to capture
      the high-energy, prehistoric spirit required to attract and excite a young
      audience. Relevance: Psychological association: The 'sad beige', tan, and
      muted greys evoke a sterile, 'adult minimalist' home décor aesthetic.
      Harmony: The colors are muddy and lifeless. Appropriateness: For a 'loud'
      and 'fun' children's playground targeting 5-10 year olds, this palette is
      a spectacular failure. It desperately needs vibrant, exciting primary
      colors to attract kids."
    }
  }
},

כשלים עדינים (FAIL)

// Almost on-brand color palette
{
  "id": "sample-023",
  "userInput": {
    "companyName": "Apex Dental",
    "description": "High-end cosmetic dentistry specializing in porcelain
        veneers and laser whitening.",
    "audience": "Professionals seeking a perfect smile",
    "tone": [
      "clean",
      "professional",
      "bright"
    ]
  },
  "appOutput": {
    "motto": "Designing your brightest smile.",
    "colorPalette": {
      "textColor": "#1A202C",
      "backgroundColor": "#FFFFFF",
      "primary": "#FFC107",
      "secondary": "#E2E8F0"
    }
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "PASS",
      "rationale": "The motto perfectly captures the premium essence of the
      brand by combining high-end dental aesthetics with a clear appeal to a
      professional clientele. Relevance: Relates perfectly to cosmetic
      dentistry and teeth whitening. Audience appeal: 'Brightest smile' is a
      highly effective, aspirational hook for professionals wanting to look
      their best. Tone consistency: Clean, upbeat, and exceedingly professional."
    },
    "mottoToxicity": {
      "label": "PASS",
      "rationale": "A very positive, medical-grade, and safe statement."
    },
    "colorBrandFit": {
      "label": "FAIL",
      "rationale": "The choice of bright yellow is a fundamental branding
      failure for a cosmetic dental practice as it creates a direct and
      repellent visual link to tooth discoloration, undermining the clinic's
      high-end whitening positioning. Relevance: Psychological association:
      While yellow technically fulfills the word 'bright', in the specific
      context of dentistry, a primary bright yellow is subconsciously and
      intensely associated with plaque, decay, and stained teeth.
      Harmony: It stands out strongly but sends the wrong message.
      Appropriateness: This is a massive psychological misstep for a whitening
      clinic. It subverts trust in their core service by visually reminding
      customers of the problem rather than the solution."
    }
  }
},

התאמה של היקף החשיפה

אחרי שיוצרים את בסיס האמת, הגיע הזמן להתאים את השופט לתוויות של בני אדם. המטרה שלכם היא לוודא שהשופט מסכים איתכם באופן עקבי ומחקה שיפוט אנושי. אפשר לחשב ציון התאמה כאחוז התוויות שנוצרו על ידי השופט שתואמות לתוויות שנוצרו על ידי בני אדם.

// total = all test cases
// aligned = test cases where humanEval.label === llmJudgeEval.label
// For example, PASS and PASS
const alignment = (aligned / total) * 100;

מגדירים ציון יעד להתאמה, למשל 85%. היעד שלכם יכול להיות שונה בהתאם לתרחיש לדוגמה.

מריצים את מודל השופט על מערך הנתונים להתאמה. אם ציון ההתאמה נמוך מהיעד, כדאי לקרוא את ההסבר של השופט כדי להבין למה הוא התבלבל. משנים את הוראות המערכת ואת ההנחיה לשופט כדי לגשר על הפערים. חוזרים על הפעולה הזו עד שמגיעים לציון היעד.

שיטות מומלצות

כדי לעזור לשופט לתת ציונים באופן עקבי, כדאי לפעול לפי השיטות המומלצות הבאות:

  • הימנעו מהתאמת יתר. ההוראות צריכות להיות כלליות, ולא ספציפיות מדי לנתוני ההתאמה שלכם. אם תספקו הוראות ספציפיות, כמו הימנעות משימוש בביטויים מסוימים, השופט יצליח מאוד במבחן ההתאמה הספציפי הזה, אבל הוא לא יצליח להכליל את הנתונים החדשים. הבעיה הזו נקראת התאמת יתר.
  • מבצעים אופטימיזציה של הוראות המערכת ושל ההנחיה לשיפוט. טכניקות לאופטימיזציה של הנחיות כוללות שינוי ידני של ההנחיות, בקשה מ-LLM אחר להציע שיפורים או החלת שינויים על סמך שילוב של הטכניקות האלה. טכניקות לאופטימיזציה של הנחיות יכולות להיות ידניות או מתקדמות מאוד, למשל אלגוריתמים שמחקות אבולוציה ביולוגית. כדאי לתעד את השינויים כדי שתוכלו לבטל אותם במקרה הצורך.

כדי לראות את ההתאמה בפעולה ב-ThemeBuilder, מריצים את בדיקת ההתאמה בעצמכם.

דוגמה לבדיקת התאמה.

בדיקת מאמץ עם אתחול

הגעה ליעד של 85% התאמה לא מבטיחה שהשופט יפעל היטב עם נתונים מהעולם האמיתי. אפשר לבצע בדיקת עומס לשופט באמצעות פריצה סטטיסטית שנקראת bootstrap. האתחול יוצר גרסאות חדשות של מערך הנתונים בלי מאמץ נוסף של תיוג.

‫** בדיקה: דגימה מחדש של 30 פריטים ממערך הנתונים עם החלפה. במהלך ריצה אחת, יכול להיות שמקרה מסובך ייבחר חמש פעמים, מה שיקשה מאוד על הבדיקה. מריצים את מבחן ההתאמה על קבוצות אקראיות כאלה כמה פעמים, ומחשבים את ההתאמה הממוצעת ואת שונות הניקוד בין ההרצות. אין מספר קסם, אבל 10 איטרציות הן נקודת התחלה טובה לפרויקטים בגודל בינוני. כדי להגדיל את רמת הביטחון, כדאי לבצע יותר איטרציות. ** פתרון: אם ציון ההתאמה משתנה באופן משמעותי (שונות גבוהה), השופט עדיין לא אמין. הציון הראשוני שלך היה מקרי, והוא נבע מכמה מקרים פשוטים. כדאי להרחיב את קריטריון ההערכה ולהוסיף למערך נתוני ההתאמה דוגמאות מגוונות ומורכבות יותר.

ייצוג ויזואלי של בדיקת bootstrap. בגלל שהאובייקטים נדגמים מחדש עם החזרה, יכול להיות שחלק מהסיווגים ייוצגו יתר על המידה (הכדורים הצהובים בדגימות bootstrap 1 ו-2), בעוד שאחרים ייוצגו פחות מהנדרש (הכדורים האדומים בדגימות bootstrap 1 ו-2) או אפילו לא יופיעו (הכדורים הירוקים בדגימת bootstrap 3). אפשר לראות את האיור המדעי המקורי מ-ResearchGate.

אתם יכולים לנסות בעצמכם.

Example bootstrap test.

בדיקת עקביות עצמית

אפשר לסמוך על השופט רק אם הוא תמיד נותן את אותה תשובה לאותה קלט. אם הגדרתם את רמת האקראיות ל-0, השופט צריך להיות עקבי ב-100%. בודקים כדי לאשר.

  • בדיקה: מריצים את השופט כמה פעמים על אותו מערך נתונים בדיוק, למשל על דגימה אקראית ממערך הנתונים של ההתאמה. מחשבים את השונות בכל תרחיש בדיקה על פני החזרות האלה. כדאי לשאוף לעקביות של 100% (שונות אפס). אם השונות גדולה מאפס, הבדיקה נכשלת כי המשמעות היא שהשופט מספק תשובות שונות לאותו קלט.
  • תיקון: יכול להיות שההנחיה לשופט לא ברורה או שרמת האקראיות גבוהה מדי. לשכתב חלקים בהנחיה שנראים לא ברורים, במיוחד את קריטריון ההערכה. אם לא עשיתם את זה כבר, מורידים את הטמפרטורה ל-0 (או מגדירים את הערך thinking_level ל-high).

כדי לראות את התכונה בפעולה, מריצים את הבדיקה בעצמכם.

פלט הטרמינל של בדיקת העקביות של השופט.
בדוגמה הזו, בדקנו 6 דוגמאות לכל אחד משלושת המדדים שלנו (רמת הרעילות של הסלוגן, התאמת הסלוגן למותג והתאמת הצבע למותג). התוצאות היו יציבות כמעט לחלוטין, אבל בכמה דוגמאות התוצאות היו לא עקביות.

בחינת גמר

השימוש בשיטת ה-Bootstrapping עזר לכם להריץ בדיקה ראשונית כדי למנוע התאמת יתר. עכשיו, תריצו בדיקה סופית באמצעות נתונים חדשים. זהו האישור הסופי לכך שהשופט יכול לתת ניקוד נכון לקלט חדש.

  • בדיקה: שומרים מערך נתונים נפרד של 20 דוגמאות מתויגות על ידי בני אדם שלא השתמשתם בהן במהלך ההתאמה. מריצים את השופט על הסט הזה.
  • תיקון: אם ציון ההתאמה נשאר גבוה, השופט מוכן! אם הציון יורד באופן משמעותי, כנראה שהתאמתם את ההנחיה יותר מדי פעמים כדי לעבור את נתוני ההתאמה הספציפיים שלכם. הרחיבו את ההנחיה, את קריטריון ההערכה ואת הדוגמאות.

כדי לראות את התכונה בפעולה, מריצים את הבדיקה בעצמכם.

סיכום

הפעלתם בדיקות שונות כדי ליצור את השופט הבסיסי, כולל:

  • בדיקת ההתאמה בודקת אם השופט צודק.
  • בדיקת רגישות הנתונים באתחול ובבחינה הסופית. האם השופט ממשיך להיות מדויק מספיק פעמים כשמוצגים לו נתונים חדשים?
  • בדיקת העקביות העצמית מודדת את רעשי המערכת, כלומר עד כמה האקראיות הפנימית של שופט ה-LLM משפיעה על התוצאות.