Configurare un modello di giudice di base (parte 2)

Completa la configurazione del modello di giudizio di base per avviare le valutazioni soggettive.

Allineare e testare il giudice

Hai un giudice iniziale, ma non puoi ancora fidarti. Il giudice è pronto solo quando concorda costantemente con il giudizio umano.

Crea un set di dati di allineamento

Per calibrare il giudice, è necessario un set di dati di allineamento. Si tratta di una piccola raccolta di input e output di alta qualità che sono stati valutati manualmente da persone. Questo set di dati funge da verità di riferimento. Lo utilizzi per verificare che la logica del giudice sia sempre in linea con le tue aspettative.

Il set di dati di allineamento deve contenere 30-50 coppie input-output. Il set è abbastanza grande da coprire alcuni casi limite, ma abbastanza piccolo da poterlo etichettare in un breve periodo di tempo.

Nell'esempio di ThemeBuilder, una voce nel set di dati di allineamento ha questo aspetto (input, output, etichetta umana):

{
  "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."
    }
  }
}

Per generare input e output, puoi estrarli dai log di produzione (se disponibili), creare i dati manualmente, utilizzare un LLM (dati sintetici) o partire da alcuni campioni selezionati manualmente e chiedere a un LLM di aumentare il set di dati.

Una volta che gli input e gli output sono pronti, utilizza la rubrica per etichettare gli output come PASS o FAIL con il tuo team. Questo diventa il tuo ground truth.

Assicurati che il set di dati di allineamento includa esempi di PASS ed esempi di FAIL di varia difficoltà, ad esempio:

  • 10 esempi di casi di percorso felice che i tuoi giudici etichettano come PASS.
  • 20 casi di esempio che i tuoi giudici etichettano come FAIL:
    • Errori evidenti, ad esempio un motto altamente tossico o completamente fuori tema.
    • Errori sottili, ad esempio uno slogan grammaticalmente perfetto ma un po' troppo formale per un brand giocoso o che si adatta solo in parte al tono.

Il tuo giudice LLM è un gatekeeper. L'allineamento su un set di dati che contiene più errori che casi superati offre maggiori opportunità di modificare i criteri per rilevare gli errori e, in definitiva, migliora la capacità del giudice di rilevarli.

Una volta pronto, il set di dati di allineamento avrà un aspetto simile al seguente:

Scenari di esito positivo (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."
    }
  }
}

Errori evidenti (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."
    }
  }
},

Errori lievi (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."
    }
  }
},

Allineamento della copertura

Una volta preparati i dati empirici reali, allinea il giudice alle etichette umane. Il tuo obiettivo è assicurarti che il giudice sia sempre d'accordo con te e imiti il giudizio umano. Puoi calcolare un punteggio di allineamento come percentuale delle etichette create dal giudice che corrispondono a quelle create dall'uomo.

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

Imposta un punteggio di allineamento target, ad esempio 85%. Il target può variare in base al tuo caso d'uso.

Esegui il modello di valutazione sul set di dati di allineamento. Se il tuo punteggio di allineamento è inferiore al target, leggi la motivazione del giudice per capire perché ha fornito un'etichetta errata. Modifica le istruzioni di sistema e il prompt del giudice per colmare le lacune. Ripeti finché non raggiungi il punteggio target.

Best practice

Per aiutare il giudice a valutare in modo coerente, segui queste best practice:

  • Evita l'overfitting. Generalizza le istruzioni ed evita di renderle troppo specifiche per il tuo set di dati di allineamento. Se fornisci istruzioni specifiche, ad esempio evitare determinate frasi, il giudice supera questo test di allineamento specifico in modo efficace, ma non riesce a generalizzare i nuovi dati. Questo problema è noto come overfitting.
  • Ottimizza le istruzioni di sistema e il prompt di valutazione. Le tecniche di ottimizzazione dei prompt includono la modifica manuale dei prompt, la richiesta a un altro LLM di suggerire miglioramenti o l'applicazione di modifiche basate su una combinazione di queste tecniche. Le tecniche di ottimizzazione dei prompt possono variare da manuali a molto avanzate, ad esempio algoritmi che imitano l'evoluzione biologica. Tieni un registro delle modifiche per ripristinarle se necessario.

Per vedere l'allineamento in azione per ThemeBuilder, esegui il test di allineamento.

Output del terminale di un test di allineamento che mostra i tassi di superamento/esito negativo.
Esempio di test di allineamento.

Stress test con bootstrapping

Il raggiungimento del target di allineamento dell'85% non garantisce che il giudice funzioni bene con i dati reali. Metti alla prova il tuo giudice con una tecnica statistica chiamata bootstrap. Il bootstrapping crea nuove versioni del set di dati senza ulteriore lavoro di etichettatura.

  • Test:esegui un nuovo campionamento casuale di 30 elementi dal set di dati con sostituzione. In un'esecuzione, un caso difficile potrebbe essere scelto cinque volte, rendendo il test molto più difficile. Esegui il test di allineamento su questi set randomizzati più volte e calcola la varianza media dell'allineamento e del punteggio tra queste esecuzioni. Non esiste un numero specifico, ma 10 iterazioni sono un punto di riferimento utile per progetti di medie dimensioni. Esegui più iterazioni per una maggiore affidabilità.
  • Correzione:se il punteggio di allineamento varia in modo significativo (varianza elevata), il giudice non è ancora affidabile. Il tuo punteggio iniziale era una coincidenza dovuta ad alcuni casi semplici. Amplia la rubrica e aggiungi esempi più diversi e stimolanti al set di dati di allineamento.
Una rappresentazione visiva di un test bootstrap, che mostra come il ricampionamento con sostituzione può sovra rappresentare o sottorappresentare determinate classi di dati.
Poiché gli oggetti vengono sottocampionati con sostituzione, alcune classi potrebbero essere sovra rappresentate (biglie gialle nei campioni bootstrap 1 e 2), mentre altre potrebbero essere sottorappresentate (biglie rosse nei campioni bootstrap 1 e 2) o addirittura mancanti (biglie verdi nel campione bootstrap 3). Visualizza la figura scientifica originale di ResearchGate.

Puoi provare.

Output del terminale di un test di bootstrap.
Esempio di test bootstrap.

Testare l'autocoerenza

Il giudice può essere considerato attendibile solo se fornisce sempre la stessa risposta per lo stesso input. Se hai impostato la temperatura su 0, il giudice è coerente al 100%. Conferma questa coerenza.

  • Test: esegui il giudice più volte sullo stesso identico set di dati, ad esempio un'estrazione casuale dal set di dati di allineamento. Calcola la varianza per ogni caso di test in queste ripetizioni. Punta a una coerenza del 100% (varianza pari a zero). Se la varianza è maggiore di zero, il test non riesce perché il giudice fornisce risposte diverse per lo stesso input.
  • Soluzione: il prompt del giudice potrebbe essere ambiguo o la temperatura troppo alta. Riscrivi le parti del prompt che mancano di chiarezza, in particolare la rubrica di valutazione. Abbassa la temperatura a 0 (o imposta thinking_level su alto), se non l'hai ancora fatto.

Per vedere come funziona, esegui il test.

Output del terminale del test di coerenza del giudice.
In questo esempio, abbiamo testato 6 campioni per ciascuna delle nostre tre metriche (tossicità del motto, idoneità del motto al brand e idoneità del colore al brand). I risultati sono stati quasi interamente stabili, ma alcuni campioni hanno dato risultati incoerenti.

Esame finale

Il bootstrapping ti ha aiutato a eseguire un controllo iniziale per evitare l'overfitting. Successivamente, eseguirai un test finale utilizzando nuovi dati. Questa è la conferma finale che il giudice può valutare correttamente i nuovi input.

  • Test: conserva un set di dati separato per l'esame finale di 20 campioni etichettati da persone che non hai utilizzato durante l'allineamento. Esegui il giudice su questo set.
  • Correzione: se il tuo punteggio di allineamento rimane alto, il giudice è pronto. Se il punteggio scende bruscamente, significa che si è verificato un overfitting: hai modificato il prompt troppe volte per superare i dati di allineamento specifici. Amplia il prompt, la griglia e gli esempi few-shot.

Per vedere come funziona, esegui il test.

Riepilogo

Hai eseguito diversi test per creare il tuo giudice di base, tra cui:

  • Il test di allineamento verifica se il giudice è corretto.
  • Bootstrapping e controllo del test dell'esame finale sensibilità ai dati: la capacità del giudice di rimanere corretto quando si trova di fronte a nuovi dati.
  • Il test di autoconsistenza misura il rumore del sistema, ovvero la misura in cui la casualità interna del giudice LLM influisce sui risultati.