Definisci le metriche di valutazione

Dopo aver creato un set di dati di valutazione, il passaggio successivo consiste nel definire le metriche utilizzate per misurare le prestazioni del modello. I modelli di AI generativa possono creare applicazioni per un'ampia gamma di attività e il servizio di valutazione dell'AI generativa utilizza un framework basato sui test che trasforma le valutazioni soggettive in risultati oggettivi e azionabili.

Di seguito sono riportati i concetti di base relativi alle metriche di valutazione:

  • Griglie di valutazione: i criteri per valutare la risposta di un modello o un'applicazione LLM.

  • Metriche: un punteggio che misura l'output del modello rispetto ai criteri di valutazione.

Gen AI evaluation service offre le seguenti categorie di metriche:

  • Metriche basate su rubriche: incorpora gli LLM nei flussi di lavoro di valutazione.

    • Rubriche adattive (consigliate): le rubriche vengono generate dinamicamente per ogni prompt. Le risposte vengono valutate con un feedback granulare e spiegabile di superamento o mancato superamento specifico per il prompt.

    • Rubriche statiche: le rubriche sono definite in modo esplicito e la stessa rubrica si applica a tutti i prompt. Le risposte vengono valutate con lo stesso insieme di valutatori basati su un sistema di punteggio numerico. Un unico punteggio numerico (ad esempio da 1 a 5) per prompt. Quando è richiesta una valutazione su una dimensione molto specifica o quando è richiesta la stessa rubrica esatta per tutti i prompt.

  • Metriche basate su calcolo: valuta le risposte con algoritmi deterministici, di solito utilizzando dati empirici reali. Un punteggio numerico (ad esempio 0,0-1,0) per prompt. Quando i dati empirici reali sono disponibili e possono essere abbinati a un metodo deterministico.

  • Metriche della funzione personalizzata: definisci la tua metrica tramite una funzione Python.

Metriche basate su rubrica

Le metriche basate su rubriche incorporano modelli linguistici di grandi dimensioni nei flussi di lavoro per valutare la qualità delle risposte del modello. Le valutazioni basate su rubriche sono adatte a una serie di attività, in particolare la qualità della scrittura, la sicurezza e il rispetto delle istruzioni, che spesso sono difficili da valutare con algoritmi deterministici.

Rubriche adattive

Le rubriche adattive funzionano come test delle unità per i tuoi modelli. Le rubriche adattive generano dinamicamente un insieme unico di test superati o non superati per ogni singolo prompt nel set di dati. Le griglie mantengono la valutazione pertinente all'attività richiesta e mirano a fornire risultati oggettivi, spiegabili e coerenti.

Il seguente esempio mostra come potrebbero essere generate rubriche adattive per un insieme di prompt:

Prompt Rubriche adattive
"Riassumi il seguente articolo sui vantaggi dell'energia solare in meno di 100 parole…"
  • Il riepilogo è composto da meno di 100 parole?
  • Il riepilogo elenca i vantaggi dell'energia solare?
  • La risposta contiene informazioni non presenti nell'articolo?
"Scrivi un'email breve e cordiale per invitare i dipendenti al picnic aziendale annuale. Menziona che la data è il 15 settembre e che saranno disponibili opzioni vegetariane…"
  • L'email ha un tono cordiale e invitante?
  • L'email indica che la data è il 15 settembre?
  • L'email indica che saranno disponibili opzioni vegetariane?

Puoi accedere alle rubriche adattive tramite l'SDK. Ti consigliamo di iniziare con GENERAL_QUALITY come impostazione predefinita.

Metrica generale sulla qualità

GENERAL_QUALITY genera una serie di rubriche che coprono una varietà di attività come il rispetto delle istruzioni, la formattazione, il tono e lo stile, a seconda del prompt di input. Puoi combinare la generazione della rubrica con la convalida nella seguente riga di codice:

from vertexai import types

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.RubricMetric.GENERAL_QUALITY,
    ],
)

Puoi generare le rubriche separatamente (per rivederle o riutilizzarle in modelli e agenti) prima di utilizzarle per valutare le risposte del modello:

from vertexai import types

# Use GENERAL_QUALITY recipe to generate rubrics, and store them
# as a rubric group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
    src=eval_dataset_df,
    rubric_group_name="general_quality_rubrics",
    predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)

# Specify the group of rubrics to use for the evaluation.
eval_result = client.evals.evaluate(
    dataset=data_with_rubrics,
    metrics=[types.RubricMetric.GENERAL_QUALITY(
      rubric_group_name="general_quality_rubrics",
    )],
)

Puoi anche guidare GENERAL_QUALITY con guidelines in linguaggio naturale per concentrare la generazione della rubrica sui criteri più importanti per te. Il servizio Gen AI evaluation service genera quindi rubriche che coprono sia le attività predefinite sia le linee guida che specifichi.

from vertexai import types

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.RubricMetric.GENERAL_QUALITY(
            metric_spec_parameters={
                "guidelines": "The response must maintain a professional tone and must not provide financial advice."
            }
        )
    ],
)

Metriche sulla qualità scelte come target

Se devi valutare un aspetto più mirato della qualità del modello, puoi utilizzare metriche che generano rubriche incentrate su un'area specifica. Ad esempio:

from vertexai import types

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.RubricMetric.TEXT_QUALITY,
        types.RubricMetric.INSTRUCTION_FOLLOWING,
    ],
)

Gen AI evaluation service offre i seguenti tipi di rubriche adattive:

  • INSTRUCTION_FOLLOWING: misura il grado di aderenza della risposta ai vincoli e alle istruzioni specifiche nel prompt.

  • TEXT_QUALITY: si concentra in modo specifico sulla qualità linguistica della risposta, valutando la fluidità, la coerenza e la grammatica.

Conversazione a turni multipli

  • multi_turn_general_quality: valuta la qualità complessiva della conversazione in un dialogo a più turni.

  • multi_turn_text_quality: valuta la qualità del testo delle risposte all'interno di un dialogo a più turni.

Valutazione dell'agente

  • final_response_reference_free: valuta la qualità della risposta finale di un agente senza bisogno di una risposta di riferimento.

Per ulteriori dettagli sulle rubriche adattive mirate, vedi Dettagli della rubrica adattiva.

Griglie statiche

Una rubrica statica applica un unico insieme fisso di linee guida per l'assegnazione del punteggio a ogni esempio nel set di dati. Questo approccio basato sul punteggio è utile quando devi misurare il rendimento rispetto a un benchmark coerente in tutti i prompt.

Ad esempio, la seguente griglia statica valuta la qualità del testo su una scala da 1 a 5:

5: (Very good). Exceptionally clear, coherent, fluent, and concise. Fully adheres to instructions and stays grounded.
4: (Good). Well-written, coherent, and fluent. Mostly adheres to instructions and stays grounded. Minor room for improvement.
3: (Ok). Adequate writing with decent coherence and fluency. Partially fulfills instructions and may contain minor ungrounded information. Could be more concise.
2: (Bad). Poorly written, lacking coherence and fluency. Struggles to adhere to instructions and may include ungrounded information. Issues with conciseness.
1: (Very bad). Very poorly written, incoherent, and non-fluent. Fails to follow instructions and contains substantial ungrounded information. Severely lacking in conciseness.

Gen AI evaluation service fornisce le seguenti metriche statiche della rubrica:

  • GROUNDING: verifica la veridicità e la coerenza rispetto a un testo di origine fornito (verità di riferimento). Questa metrica è fondamentale per i sistemi RAG.

  • SAFETY: valuta la risposta del modello per rilevare violazioni delle norme di sicurezza, ad esempio incitamento all'odio o contenuti pericolosi.

Puoi anche utilizzare modelli di prompt per le metriche come FLUENCY.

from vertexai import types

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.RubricMetric.SAFETY,
        types.RubricMetric.GROUNDING,
        types.RubricMetric.FLUENCY,
    ],
)

Personalizzazione delle rubriche statiche

Per esigenze altamente specializzate, puoi creare la tua rubrica statica. Questo metodo offre il massimo controllo, ma richiede di progettare con attenzione il prompt di valutazione per garantire risultati coerenti e affidabili. Ti consigliamo di utilizzare le linee guida con GENERAL_QUALITY prima di personalizzare le rubriche statiche.

# Define a custom metric to evaluate language simplicity
simplicity_metric = types.LLMMetric(
    name='language_simplicity',
    prompt_template=types.MetricPromptBuilder(
        instruction="Evaluate the story's simplicity for a 5-year-old.",
        criteria={
            "Vocabulary": "Uses simple words.",
            "Sentences": "Uses short sentences.",
        },
        rating_scores={
            "5": "Excellent: Very simple, ideal for a 5-year-old.",
            "4": "Good: Mostly simple, with minor complex parts.",
            "3": "Fair: Mix of simple and complex; may be challenging for a 5-year-old.",
            "2": "Poor: Largely too complex, with difficult words/sentences.",
            "1": "Very Poor: Very complex, unsuitable for a 5-year-old."
        }
    )
)

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        simplicity_metric
    ],
)

Metriche basate su calcolo

Le metriche basate su calcolo utilizzano algoritmi deterministici per valutare la risposta di un modello confrontandola con una risposta di riferimento. Richiedono una verità di riferimento nel set di dati e sono ideali per le attività in cui una risposta "corretta" è ben definita.

  • Recall-Oriented Understudy for Gisting Evaluation (rouge_l, rouge_1): misura la sovrapposizione di n-grammi (sequenze contigue di parole) tra la risposta del modello e un testo di riferimento. Viene comunemente utilizzato per valutare il riepilogo del testo.

  • Bilingual Evaluation Understudy (BLEU): misura la somiglianza di una risposta a un testo di riferimento di alta qualità contando gli n-grammi corrispondenti. È la metrica standard per la qualità della traduzione, ma può essere utilizzata anche per altre attività di generazione di testo.

  • Corrispondenza esatta (exact_match): misura la percentuale di risposte identiche alla risposta di riferimento. Questo approccio è utile per le attività di risposta a domande basate su fatti o per le attività in cui esiste una sola risposta corretta.

from vertexai import types

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.Metric(name='bleu'),
        types.Metric(name='rouge_l'),
        types.Metric(name='exact_match')
    ],
)

Metrica della funzione personalizzata

Puoi anche implementare una logica di valutazione personalizzata passando una funzione Python personalizzata al parametro custom_function. Il servizio di valutazione dell'AI generativa esegue questa funzione per ogni riga del set di dati.

# Define a custom function to check for the presence of a keyword
def contains_keyword(instance: dict) -> dict:
    keyword = "magic"
    response_text = instance.get("response", "")
    score = 1.0 if keyword in response_text.lower() else 0.0
    return {"score": score}

keyword_metric = types.Metric(
    name="keyword_check",
    custom_function=contains_keyword
)

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[keyword_metric]
)

Passaggi successivi