Crea la pipeline di valutazione

Suggerimenti di ingegneria applicata per creare la pipeline di test dell'AI.

Hai progettato le rubriche, scritto le valutazioni basate su regole e allineato il modello di giudice. Ora è il momento di collegare tutto in una pipeline di test automatizzata e continua.

Ogni progetto è diverso. Questo modulo descrive un approccio efficace e stratificato per creare la pipeline di valutazione.

Per creare la pipeline di valutazione, devi disporre di quanto segue:

  • Un orchestratore per i tuoi valutatori
  • Una strategia per gestire più chiamate API e risolvere potenziali errori
  • Un formato di output standardizzato
  • Un'interfaccia di reporting

Orchestrare le chiamate API

L'orchestratore deve avere valutazioni basate su regole e su LLM.

Crea una funzione principale per orchestrare i valutatori basati su regole e LLM. Controlla evalAll() nel codice di esempio.

Centralizza la configurazione della valutazione LLM (istruzioni di sistema, logica di output strutturato e tentativi) in un'unica funzione di utilità riutilizzabile in tutti i valutatori. Controlla evalWithLLM() nel codice di esempio.

Gestire sovraccarichi ed errori dell'API Model

A volte le API del modello si sovraccaricano o scadono. Se la chiamata API non va a buon fine, attiva un nuovo tentativo automatico. Una volta esauriti i tentativi, segnala un ERROR. La segnalazione di un 'eval FAIL distorce i risultati.

const MAX_JUDGE_LLM_API_RETRIES = 3;

async function evalWithLLM(prompt: string): Promise<EvalResult> {
  const maxRetries = MAX_JUDGE_LLM_API_RETRIES;
  let delay = 1000; // Start with 1 second

  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
        // ... Make Gemini API call ...
        return {
            label: result.label,  // PASS or FAIL from judge text
            rationale: result.rationale
        };
    } catch (error: any) {
      if (attempt === maxRetries) {
        // Retries exhausted
        return {
          // Report infrastructure error, NOT an evaluation fail
          label: EvalLabel.ERROR,
          rationale: `Gemini API Judge Error (Retries Exhausted): ${error.message}`
        };
      }
      // Wait to give the service time to recover
      await new Promise(resolve => setTimeout(resolve, delay));
      delay *= 2; // Exponential backoff delay doubling
    }
  }
}

Quando esegui le valutazioni, scegli tra le seguenti opzioni:

  • Esegui le chiamate API in parallelo in modo che un timeout su una valutazione non causi l'arresto anomalo delle altre. A seconda del caso d'uso e del modello di valutazione, questo può ridurre le allucinazioni perché il giudice si concentra su un'attività.
  • Effettua una singola chiamata batch. In questo modo viene creato un unico punto di errore, ad esempio se il modello supera il limite di token.

Prepararsi a più iterazioni

Poiché i modelli LLM non sono deterministici, l'output dell'applicazione varia.

Per testare questo aspetto in modo accurato e avere la certezza che l'output soddisfi i tuoi standard di qualità:

  1. Genera più output (in genere da 5 a 10) per ogni input di test case.
  2. Valuta ogni output separatamente.
  3. Esamina i risultati complessivi nelle varie iterazioni.

Trova un equilibrio pragmatico: un maggior numero di iterazioni aumenta la certezza della regressione, ma un numero inferiore di iterazioni mantiene l'esecuzione abbastanza veloce da integrarsi perfettamente nella tua pipeline di test continui.

Definisci l'output della pipeline di valutazione

Includi quanto segue nei risultati della valutazione:

  • Un tasso di stabilità, ad esempio Superato 8/10 volte → 80% di stabilità. Imposta una soglia per misurare quando una funzionalità è pronta per la produzione.
  • La configurazione dell'applicazione. Ciò include le istruzioni di sistema, il prompt dell'utente e i parametri LLM, come la temperatura o il livello di pensiero. Hai bisogno di queste informazioni per risolvere i problemi di regressione del punteggio delle valutazioni. I prompt possono essere stringhe lunghe con leggere variazioni, quindi aggiungi un numero di versione ai prompt e memorizza un hash per tenerne traccia.
  • La tua configurazione del giudice o un numero di versione. Ti servirà nel caso in cui il tuo punteggio vari in modo significativo dopo un aggiornamento del giudice.

Ecco un esempio di oggetto JSON EvalResponse per le valutazioni di ThemeBuilder:

    {
      "id": "sample-001-messy",
      "judgeMetadata": {
        "modelVersion": "gemini-3-flash-preview",
        "judgeVersion": "1.0.0"
      },
      "appMetadata": {
        "model": "gemini-3-flash-preview",
        "systemInstruction": "...",
        "promptTemplate": "..."
      },
      "userInput": {
        // ... companyName, description, audience and tone
      },
      "appOutputs": {
        "output-001": {
          "motto": "Aesthetic loaves, minimal vibes.",
          "colorPalette": {
            "textColor": "#2D241E",
            "backgroundColor": "#FAF9F6",
            "primary": "#C6A68E",
            "secondary": "#E3D5CA"
          }
        }
        // ... More outputs
      },
      "expectedOutcome": "SUCCESS",
      "appGateResult": {
        "stabilityRate": 1,
        "evalResults": {
          "output-001": {
            "label": "PASS",
            "rationale": "NONE"
          }
          // "output-002": ...
          // ... More results
        }
      },
      "colorBrandFit": {
        "stabilityRate": 1,
        "evalResults": {
          "output-001": {
            "label": "PASS",
            "rationale": "The palette perfectly aligns with the brand's..."
          }
          // "output-002": ...
          // ... More results
        }
      }
      // ...
      // Per-output eval results for data format contrast, motto brand fit,
      // and motto toxicity.
    }

Implementare un'interfaccia per i report

Visualizza i risultati in un report HTML o in un'interfaccia utente web pulita per analizzarli, condividerli, confrontarli ed eseguirne il debug nel tempo.

Un report che mostra i metadati e le motivazioni della valutazione.
Oltre alla percentuale di superamento del test e alla soglia di stabilità della valutazione, mostra i metadati definiti in Definisci la pipeline di valutazione e la motivazione per risolvere i casi di errore.
Un campione di valutazione che non ha superato gli standard di contrasto di colore e idoneità al brand.
Ecco un esempio di campione non riuscito, che non soddisfaceva gli standard di contrasto del colore o di idoneità al brand.

Ora esegui le valutazioni.