API del servizio di valutazione dell'IA generativa

Il servizio di valutazione dell'IA generativa ti consente i modelli linguistici di grandi dimensioni (LLM), sia puntualmente che a coppie, in diversi metriche, con criteri personalizzati. Puoi fornire input in fase di inferenza, risposte LLM e parametri aggiuntivi e il servizio di valutazione dell'IA generativa restituisce metriche specifiche per l'attività di valutazione.

Le metriche includono metriche basate su modelli, come PointwiseMetric e PairwiseMetric, e metriche calcolate in memoria, come rouge, bleu e le metriche relative alle chiamate di funzioni dello strumento. PointwiseMetric e PairwiseMetric sono metriche generiche basate su modelli che puoi personalizzare in base ai tuoi criteri. Poiché il servizio prende come input i risultati di previsione direttamente dai modelli, il servizio di valutazione può eseguire sia l'inferenza sia la valutazione successiva su tutti i modelli supportati da Vertex AI.

Per saperne di più sulla valutazione di un modello, consulta Panoramica del servizio di valutazione dell'IA generativa.

Limitazioni

Di seguito sono riportate le limitazioni del servizio di valutazione:

  • Le metriche basate su modelli consumano quota gemini-1.5-pro. Il servizio di valutazione dell'IA generativa utilizza gemini-1.5-pro come modello di giudice sottostante per calcolare le metriche basate su modelli.
  • Il servizio di valutazione potrebbe avere un ritardo della propagazione nella prima chiamata.

Sintassi di esempio

Sintassi per inviare una chiamata di valutazione.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances \
-d '{
  "contents": [{
    ...
  }],
  "tools": [{
    "function_declarations": [
      {
        ...
      }
    ]
  }]
}'

Python

import json

from google import auth
from google.api_core import exceptions
from google.auth.transport import requests as google_auth_requests

creds, _ = auth.default(
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

data = {
  ...
}

uri = f'https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances'
result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data)

print(json.dumps(result.json(), indent=2))

Elenco dei parametri

Parametri

exact_match_input

(Facoltativo) ExactMatchInput

Input per valutare se la previsione corrisponde esattamente al riferimento.

bleu_input

(Facoltativo) BleuInput

Input per calcolare il punteggio BLEU confrontando la previsione con il riferimento.

rouge_input

(Facoltativo) RougeInput

Input per calcolare i punteggi di rouge confrontando la previsione con il riferimento. rouge_type supporta diversi punteggi rouge.

fluency_input

Facoltativo: FluencyInput

Input per valutare la padronanza della lingua di una singola risposta.

coherence_input

Facoltativo: CoherenceInput

Input per valutare la capacità di una singola risposta di fornire una risposta coerente e facile da seguire.

safety_input

(Facoltativo) SafetyInput

Input per valutare il livello di sicurezza di una singola risposta.

groundedness_input

(Facoltativo) GroundednessInput

Input per valutare la capacità di una singola risposta di fornire o fare riferimento a informazioni incluse solo nel testo inserito.

fulfillment_input

(Facoltativo) FulfillmentInput

Input per valutare la capacità di una singola risposta di soddisfare completamente le istruzioni.

summarization_quality_input

(Facoltativo) SummarizationQualityInput

Input per valutare la capacità complessiva di una singola risposta di riassumere il testo.

pairwise_summarization_quality_input

Facoltativo: PairwiseSummarizationQualityInput

Input per confrontare due risposte la qualità complessiva del riassunto.

summarization_helpfulness_input

(Facoltativo) SummarizationHelpfulnessInput

Input per valutare la capacità di una singola risposta di fornire un riassunto, che contiene i dettagli necessari per sostituire il testo originale.

summarization_verbosity_input

(Facoltativo) SummarizationVerbosityInput

Input per valutare la capacità di una singola risposta di fornire un riassunto conciso.

question_answering_quality_input

Facoltativo: QuestionAnsweringQualityInput

Input per valutare la capacità complessiva di una singola risposta di rispondere alle domande, dato un testo di riferimento.

pairwise_question_answering_quality_input

(Facoltativo) PairwiseQuestionAnsweringQualityInput

Input per confrontare la capacità complessiva di due risposte di rispondere alle domande, dato un testo di riferimento.

question_answering_relevance_input

Facoltativo: QuestionAnsweringRelevanceInput

Input per valutare la capacità di una singola risposta di fornire informazioni pertinenti quando viene posta una domanda.

question_answering_helpfulness_input

(Facoltativo) QuestionAnsweringHelpfulnessInput

Input per valutare la capacità di una singola risposta di fornire dettagli chiave quando si risponde a una domanda.

question_answering_correctness_input

(Facoltativo) QuestionAnsweringCorrectnessInput

Input per valutare la capacità di una singola risposta di rispondere correttamente a una domanda.

pointwise_metric_input

(Facoltativo) PointwiseMetricInput

Input per una valutazione puntuale generica.

pairwise_metric_input

Facoltativo: PairwiseMetricInput

Input per una valutazione generica di coppie.

tool_call_valid_input

Facoltativo: ToolCallValidInput

Input per valutare la capacità di una singola risposta di prevedere una chiamata allo strumento valida.

tool_name_match_input

Facoltativo: ToolNameMatchInput

Input per valutare la capacità di una singola risposta di prevedere una chiamata di strumento con il nome dello strumento corretto.

tool_parameter_key_match_input

(Facoltativo) ToolParameterKeyMatchInput

Input per valutare la capacità di una singola risposta di prevedere una chiamata allo strumento con i nomi dei parametri corretti.

tool_parameter_kv_match_input

(Facoltativo) ToolParameterKvMatchInput

Input per valutare la capacità di una singola risposta di prevedere una chiamata di strumento con i nomi e i valori dei parametri corretti

ExactMatchInput

{
  "exact_match_input": {
    "metric_spec": {},
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Parametri

metric_spec

(Facoltativo) ExactMatchSpec.

Specifica della metrica, che definisce il comportamento della metrica.

instances

(Facoltativo) ExactMatchInstance[]

Input di valutazione, composto dalla risposta e dal riferimento dell'LLM.

instances.prediction

(Facoltativo) string

la risposta LLM.

instances.reference

Facoltativo: string

Risposta LLM dorata come riferimento.

ExactMatchResults

{
  "exact_match_results": {
    "exact_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

exact_match_metric_values

ExactMatchMetricValue[]

Risultati della valutazione per input istanza.

exact_match_metric_values.score

float

Il valore sarà uno dei seguenti:

  • 0: l'istanza non corrispondeva esattamente
  • 1: corrispondenza esatta

BleuInput

{
  "bleu_input": {
    "metric_spec": {
      "use_effective_order": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Parametri

metric_spec

Facoltativo: BleuSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.use_effective_order

Facoltativo: bool

Indica se prendere in considerazione gli ordini di n-gram senza corrispondenze.

instances

(Facoltativo) BleuInstance[]

Input di valutazione, composto dalla risposta e dal riferimento dell'LLM.

instances.prediction

(Facoltativo) string

la risposta LLM.

instances.reference

Facoltativo: string

Risposta LLM dorata come riferimento.

BleuResults

{
  "bleu_results": {
    "bleu_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

bleu_metric_values

BleuMetricValue[]

Risultati della valutazione per input dell'istanza.

bleu_metric_values.score

float: [0, 1], dove punteggi più alti indicano che la previsione è più simile al riferimento.

RougeInput

{
  "rouge_input": {
    "metric_spec": {
      "rouge_type": string,
      "use_stemmer": bool,
      "split_summaries": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Parametri

metric_spec

(Facoltativo) RougeSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.rouge_type

Facoltativo: string

Valori accettati:

  • rougen[1-9]: calcola i punteggi rouge in base alla sovrapposizione di n-grammi tra la previsione e il riferimento.
  • rougeL: calcola i punteggi rouge in base alla sottosequenza comune più lunga (LCS) tra la previsione e il riferimento.
  • rougeLsum: suddivide prima la previsione e il riferimento in frasi, quindi calcola la LCS per ogni tupla. Il punteggio rougeLsum finale è la media di questi singoli punteggi LCS.

metric_spec.use_stemmer

(Facoltativo) bool

Indica se deve essere utilizzato il stemmer di Porter per rimuovere i suffissi di parola al fine di migliorare la corrispondenza.

metric_spec.split_summaries

Facoltativo: bool

Indica se aggiungere nuove righe tra le frasi per rougeLsum.

instances

(Facoltativo) RougeInstance[]

Input di valutazione, composto dalla risposta e dal riferimento dell'LLM.

instances.prediction

(Facoltativo) string

la risposta LLM.

instances.reference

Facoltativo: string

Risposta LLM dorata come riferimento.

RougeResults

{
  "rouge_results": {
    "rouge_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

rouge_metric_values

RougeValue[]

Risultati della valutazione per input dell'istanza.

rouge_metric_values.score

float: [0, 1], dove punteggi più alti indicano che la previsione è più simile al riferimento.

FluencyInput

{
  "fluency_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Parametri

metric_spec

Facoltativo: FluencySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: FluencyInstance

Input di valutazione, composto da una risposta LLM.

instance.prediction

(Facoltativo) string

la risposta LLM.

FluencyResult

{
  "fluency_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: inarticolato
  • 2: abbastanza inarticolato
  • 3: neutro
  • 4: Abbastanza fluente
  • 5: Fluent

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

CoherenceInput

{
  "coherence_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Parametri

metric_spec

Facoltativo: CoherenceSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) CoherenceInstance

Input di valutazione, costituito dalla risposta dell'LLM.

instance.prediction

(Facoltativo) string

la risposta LLM.

CoherenceResult

{
  "coherence_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: incoerente
  • 2: abbastanza incoerente
  • 3: neutrale
  • 4: abbastanza coerente
  • 5: Coherent

explanation

string: giustificazione per l'assegnazione di un punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

SafetyInput

{
  "safety_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Parametri

metric_spec

Facoltativo: SafetySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: SafetyInstance

Input di valutazione, costituito dalla risposta dell'LLM.

instance.prediction

(Facoltativo) string

la risposta LLM.

SafetyResult

{
  "safety_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 0: Non sicuro
  • 1: sicuro

explanation

string: giustificazione per l'assegnazione di un punteggio.

confidence

float: [0, 1] punteggio di affidabilità del nostro risultato.

GroundednessInput

{
  "groundedness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "context": string
    }
  }
}

Parametro

Descrizione

metric_spec

(Facoltativo) GroundednessSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) GroundednessInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.context

(Facoltativo) string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

GroundednessResult

{
  "groundedness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 0: senza grounding
  • 1: con grounding

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

FulfillmentInput

{
  "fulfillment_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string
    }
  }
}
Parametri

metric_spec

Facoltativo: FulfillmentSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) FulfillmentInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

FulfillmentResult

{
  "fulfillment_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: nessun completamento
  • 2: scarso adempimento
  • 3: alcuni completamenti
  • 4: distribuzione soddisfacente
  • 5: completamento dell'ordine

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

SummarizationQualityInput

{
  "summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parametri

metric_spec

Facoltativo: SummarizationQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: SummarizationQualityInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

SummarizationQualityResult

{
  "summarization_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: Molto scadente
  • 2: non valido
  • 3: Ok
  • 4: buono
  • 5: molto bene

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

PairwiseSummarizationQualityInput

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parametri

metric_spec

Facoltativo: PairwiseSummarizationQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) PairwiseSummarizationQualityInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.baseline_prediction

(Facoltativo) string

Risposta del modello LLM di riferimento.

instance.prediction

(Facoltativo) string

Risposta del modello LLM candidato.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

PairwiseSummarizationQualityResult

{
  "pairwise_summarization_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
Output

pairwise_choice

PairwiseChoice: enum con i seguenti valori possibili:

  • BASELINE: la previsione di riferimento è migliore
  • CANDIDATE: la previsione dei candidati è migliore
  • TIE: parità tra le previsioni di riferimento e quelle dei candidati.

explanation

string: giustificazione per l'assegnazione coppiawise_choice.

confidence

float: [0, 1] punteggio di affidabilità del nostro risultato.

SummarizationHelpfulnessInput

{
  "summarization_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parametri

metric_spec

Facoltativo: SummarizationHelpfulnessSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) SummarizationHelpfulnessInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

SummarizationHelpfulnessResult

{
  "summarization_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: Non utile
  • 2: abbastanza inutile
  • 3: neutro
  • 4: Abbastanza utile
  • 5: Utile

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

SummarizationVerbosityInput

{
  "summarization_verbosity_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parametri

metric_spec

Facoltativo: SummarizationVerbositySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: SummarizationVerbosityInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

SummarizationVerbosityResult

{
  "summarization_verbosity_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float. Uno dei seguenti elementi:

  • -2: Brusca
  • -1: un po' conciso
  • 0: ottimale
  • 1: abbastanza dettagliato
  • 2: dettagliato

explanation

string: giustificazione per l'assegnazione di un punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

QuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parametri

metric_spec

Facoltativo: QuestionAnsweringQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) QuestionAnsweringQualityInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

QuestionAnsweringQualityResult

{
  "question_answering_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: Molto scadente
  • 2: non valido
  • 3: Ok
  • 4: buono
  • 5: molto bene

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

PairwiseQuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Parametri

metric_spec

Facoltativo: QuestionAnsweringQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) QuestionAnsweringQualityInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.baseline_prediction

(Facoltativo) string

Risposta del modello LLM di riferimento.

instance.prediction

(Facoltativo) string

Risposta del modello LLM candidato.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

PairwiseQuestionAnsweringQualityResult

{
  "pairwise_question_answering_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
Output

pairwise_choice

PairwiseChoice: enum con i seguenti valori possibili:

  • BASELINE: la previsione di riferimento è migliore
  • CANDIDATE: la previsione dei candidati è migliore
  • TIE: parità tra le previsioni di riferimento e quelle dei candidati.

explanation

string: giustificazione per il compito pairwise_choice.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

QuestionAnsweringRelevanceInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Parametri

metric_spec

Facoltativo: QuestionAnsweringRelevanceSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: QuestionAnsweringRelevanceInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

QuestionAnsweringRelevancyResult

{
  "question_answering_relevancy_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: Non pertinente
  • 2: Piuttosto irrilevante
  • 3: neutrale
  • 4: Abbastanza pertinente
  • 5: pertinente

explanation

string: giustificazione per l'assegnazione di un punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

QuestionAnsweringHelpfulnessInput

{
  "question_answering_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Parametri

metric_spec

Facoltativo: QuestionAnsweringHelpfulnessSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: QuestionAnsweringHelpfulnessInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

QuestionAnsweringHelpfulnessResult

{
  "question_answering_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 1: Non utile
  • 2: abbastanza inutile
  • 3: neutro
  • 4: Abbastanza utile
  • 5: Utile

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

QuestionAnsweringCorrectnessInput

{
  "question_answering_correctness_input": {
    "metric_spec": {
      "use_reference": bool
    },
    "instance": {
      "prediction": string,
      "reference": string,
      "instruction": string,
      "context": string
    }
  }
}
Parametri

metric_spec

Facoltativo: QuestionAnsweringCorrectnessSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.use_reference

(Facoltativo) bool

Indica se viene utilizzato o meno il riferimento nella valutazione.

instance

(Facoltativo) QuestionAnsweringCorrectnessInstance

Input di valutazione, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

la risposta LLM.

instance.reference

Facoltativo: string

Risposta LLM dorata come riferimento.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in base al tempo di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta LLM.

QuestionAnsweringCorrectnessResult

{
  "question_answering_correctness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Output

score

float: uno dei seguenti valori:

  • 0: risposta errata
  • 1: risposta corretta

explanation

string: giustificazione per l'assegnazione di un punteggio.

confidence

float: [0, 1] Punteggio di confidenza del nostro risultato.

PointwiseMetricInput

{
  "pointwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
Parametri

metric_spec

Obbligatorio: PointwiseMetricSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.metric_prompt_template

Obbligatorio: string

Un modello di prompt che definisce la metrica. Il rendering viene eseguito dalle coppie chiave-valore in instance.json_instance

instance

Obbligatorio: PointwiseMetricInstance

Input di valutazione, composto da json_instance.

instance.json_instance

Facoltativo: string

Le coppie chiave-valore in formato JSON. Ad esempio, {"key_1": "value_1", "key_2": "value_2"}. Viene utilizzato per eseguire il rendering di metric_spec.metric_prompt_template.

PointwiseMetricResult

{
  "pointwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
Output

score

float: un punteggio per il risultato della valutazione della metrica punto per punto.

explanation

string: motivazione per l'assegnazione del punteggio.

PairwiseMetricInput

{
  "pairwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
Parametri

metric_spec

Obbligatorio: PairwiseMetricSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.metric_prompt_template

Obbligatorio: string

Un modello di prompt che definisce la metrica. Viene visualizzato dalle coppie chiave-valore in instance.json_instance

instance

Obbligatorio: PairwiseMetricInstance

Input di valutazione, composto da json_instance.

instance.json_instance

(Facoltativo) string

Le coppie chiave-valore in formato JSON. Ad esempio, {"key_1": "value_1", "key_2": "value_2"}. Viene utilizzato per eseguire il rendering di metric_spec.metric_prompt_template.

PairwiseMetricResult

{
  "pairwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
Output

score

float: un punteggio per il risultato della valutazione delle metriche accoppiate.

explanation

string: motivazione per l'assegnazione del punteggio.

ToolCallValidInput

{
  "tool_call_valid_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parametri

metric_spec

Facoltativo: ToolCallValidSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: ToolCallValidInstance

Input di valutazione, composto dalla risposta e dal riferimento dell'LLM.

instance.prediction

Facoltativo: string

Risposta del modello LLM candidato, ovvero una stringa JSON serializzata contenente le chiavi content e tool_calls. Il valore content è il testo prodotto dal modello. Il valore tool_call è una stringa JSON serializzata di un elenco di chiamate allo strumento. Un esempio è:

{
  "content": "",
  "tool_calls": [
    {
      "name": "book_tickets",
      "arguments": {
        "movie": "Mission Impossible Dead Reckoning Part 1",
        "theater": "Regal Edwards 14",
        "location": "Mountain View CA",
        "showtime": "7:30",
        "date": "2024-03-30",
        "num_tix": "2"
      }
    }
  ]
}

instance.reference

(Facoltativo) string

Output del modello Golden nello stesso formato della previsione.

ToolCallValidResults

{
  "tool_call_valid_results": {
    "tool_call_valid_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

tool_call_valid_metric_values

ripetuto ToolCallValidMetricValue: risultati della valutazione per input istanza.

tool_call_valid_metric_values.score

float: uno dei seguenti valori:

  • 0: chiamata allo strumento non valida
  • 1: chiamata allo strumento valida

ToolNameMatchInput

{
  "tool_name_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parametri

metric_spec

Facoltativo: ToolNameMatchSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: ToolNameMatchInstance

Input di valutazione, composto da risposta e riferimento LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente chiavi content e tool_calls. Il valore content è l'output di testo del modello. Il valore tool_call è una stringa JSON serializzata di un elenco di chiamate allo strumento.

instance.reference

Facoltativo: string

Output del modello Golden nello stesso formato della previsione.

ToolNameMatchResults

{
  "tool_name_match_results": {
    "tool_name_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

tool_name_match_metric_values

ripetuto ToolNameMatchMetricValue: risultati della valutazione per input istanza.

tool_name_match_metric_values.score

float: uno dei seguenti valori:

  • 0: il nome della chiamata dello strumento non corrisponde al riferimento.
  • 1: il nome della chiamata dello strumento corrisponde al riferimento.

ToolParameterKeyMatchInput

{
  "tool_parameter_key_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parametri

metric_spec

(Facoltativo) ToolParameterKeyMatchSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

Facoltativo: ToolParameterKeyMatchInstance

Input di valutazione, composto da risposta e riferimento LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente chiavi content e tool_calls. Il valore content è l'output di testo del modello. Il valore tool_call è una stringa JSON serializzata di un elenco di chiamate allo strumento.

instance.reference

Facoltativo: string

Output del modello Golden nello stesso formato della previsione.

ToolParameterKeyMatchResults

{
  "tool_parameter_key_match_results": {
    "tool_parameter_key_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

tool_parameter_key_match_metric_values

ripetuto ToolParameterKeyMatchMetricValue: risultati della valutazione per input dell'istanza.

tool_parameter_key_match_metric_values.score

float: [0, 1], dove punteggi più alti indicano che un maggior numero di parametri corrisponde a quelli di riferimento i nomi degli utenti.

ToolParameterKVMatchInput

{
  "tool_parameter_kv_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parametri

metric_spec

(Facoltativo) ToolParameterKVMatchSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) ToolParameterKVMatchInstance

Input di valutazione, composto da risposta e riferimento LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente chiavi content e tool_calls. Il valore content è l'output di testo del modello. Il valore tool_call è una stringa JSON serializzata di un elenco di chiamate allo strumento.

instance.reference

Facoltativo: string

Output del modello Golden nello stesso formato della previsione.

ToolParameterKVMatchResults

{
  "tool_parameter_kv_match_results": {
    "tool_parameter_kv_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Output

tool_parameter_kv_match_metric_values

ripetuto ToolParameterKVMatchMetricValue: risultati della valutazione per input istanza.

tool_parameter_kv_match_metric_values.score

float: [0, 1], dove i punteggi più alti indicano che più parametri corrispondono ai nomi e ai valori dei parametri di riferimento.

Esempi

Valuta un output

L'esempio seguente mostra come chiamare l'API Gen AI Evaluation per valutare l'output di un LLM utilizzando una serie di metriche di valutazione, tra cui:

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulness
  • summarization_verbosity

Python

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask, MetricPromptTemplateExamples

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

eval_dataset = pd.DataFrame(
    {
        "instruction": [
            "Summarize the text in one sentence.",
            "Summarize the text such that a five-year-old can understand.",
        ],
        "context": [
            """As part of a comprehensive initiative to tackle urban congestion and foster
            sustainable urban living, a major city has revealed ambitious plans for an
            extensive overhaul of its public transportation system. The project aims not
            only to improve the efficiency and reliability of public transit but also to
            reduce the city\'s carbon footprint and promote eco-friendly commuting options.
            City officials anticipate that this strategic investment will enhance
            accessibility for residents and visitors alike, ushering in a new era of
            efficient, environmentally conscious urban transportation.""",
            """A team of archaeologists has unearthed ancient artifacts shedding light on a
            previously unknown civilization. The findings challenge existing historical
            narratives and provide valuable insights into human history.""",
        ],
        "response": [
            "A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
            "Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
        ],
    }
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        MetricPromptTemplateExamples.Pointwise.SUMMARIZATION_QUALITY,
        MetricPromptTemplateExamples.Pointwise.GROUNDEDNESS,
        MetricPromptTemplateExamples.Pointwise.VERBOSITY,
        MetricPromptTemplateExamples.Pointwise.INSTRUCTION_FOLLOWING,
    ],
)

prompt_template = (
    "Instruction: {instruction}. Article: {context}. Summary: {response}"
)
result = eval_task.evaluate(prompt_template=prompt_template)

print("Summary Metrics:\n")

for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
# Summary Metrics:
# row_count:      2
# summarization_quality/mean:     3.5
# summarization_quality/std:      2.1213203435596424
# ...

Valuta un output: qualità di riassunto di coppia

L'esempio seguente mostra come chiamare l'API Gen AI Evaluation Service per valutare l'output di un LLM utilizzando un confronto della qualità di riassunto a coppie.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: la regione in cui elaborare la richiesta.
  • PREDICTION: risposta LLM.
  • BASELINE_PREDICTION: risposta del modello LLM del modello di riferimento.
  • INSTRUCTION: l'istruzione utilizzata al momento dell'inferenza.
  • CONTEXT: testo in fase di inferenza contenente tutte le informazioni pertinenti, che può essere utilizzato nella risposta LLM.

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \

Corpo JSON della richiesta:

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": "PREDICTION",
      "baseline_prediction": "BASELINE_PREDICTION",
      "instruction": "INSTRUCTION",
      "context": "CONTEXT",
    }
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

import pandas as pd

import vertexai
from vertexai.generative_models import GenerativeModel
from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    MetricPromptTemplateExamples,
)

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

prompt = """
Summarize the text such that a five-year-old can understand.

# Text

As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
"""

eval_dataset = pd.DataFrame({"prompt": [prompt]})

# Baseline model for pairwise comparison
baseline_model = GenerativeModel("gemini-1.5-pro-001")

# Candidate model for pairwise comparison
candidate_model = GenerativeModel(
    "gemini-1.5-pro-002", generation_config={"temperature": 0.4}
)

prompt_template = MetricPromptTemplateExamples.get_prompt_template(
    "pairwise_summarization_quality"
)

summarization_quality_metric = PairwiseMetric(
    metric="pairwise_summarization_quality",
    metric_prompt_template=prompt_template,
    baseline_model=baseline_model,
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[summarization_quality_metric],
    experiment="pairwise-experiment",
)
result = eval_task.evaluate(model=candidate_model)

baseline_model_response = result.metrics_table["baseline_model_response"].iloc[0]
candidate_model_response = result.metrics_table["response"].iloc[0]
winner_model = result.metrics_table[
    "pairwise_summarization_quality/pairwise_choice"
].iloc[0]
explanation = result.metrics_table[
    "pairwise_summarization_quality/explanation"
].iloc[0]

print(f"Baseline's story:\n{baseline_model_response}")
print(f"Candidate's story:\n{candidate_model_response}")
print(f"Winner: {winner_model}")
print(f"Explanation: {explanation}")
# Example response:
# Baseline's story:
# A big city wants to make it easier for people to get around without using cars! They're going to make buses and trains ...
#
# Candidate's story:
# A big city wants to make it easier for people to get around without using cars! ... This will help keep the air clean ...
#
# Winner: CANDIDATE
# Explanation: Both responses adhere to the prompt's constraints, are grounded in the provided text, and ... However, Response B ...

Ottieni il punteggio di rosso

L'esempio seguente chiama l'API Gen AI evaluation service per ottenere il punteggio Rouge di una previsione, generata da una serie di input. Gli input Rouge utilizzano metric_spec, che determina il comportamento della metrica.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: la regione in cui elaborare la richiesta.
  • PREDICTION: risposta LLM.
  • REFERENCE: risposta LLM ideale di riferimento.
  • ROUGE_TYPE: il calcolo utilizzato per determinare il punteggio rosso. Vedi metric_spec.rouge_type per i valori accettabili.
  • USE_STEMMER: determina se lo stemmer di Porter viene utilizzato per rimuovere i suffissi delle parole al fine di migliorare la corrispondenza. Per i valori accettabili, vedi metric_spec.use_stemmer.
  • SPLIT_SUMMARIES: determina se vengono aggiunte nuove righe tra le frasi rougeLsum. Per i valori accettabili, consulta la sezione metric_spec.split_summaries .

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \

Corpo JSON della richiesta:

{
  "rouge_input": {
    "instances": {
      "prediction": "PREDICTION",
      "reference": "REFERENCE.",
    },
    "metric_spec": {
      "rouge_type": "ROUGE_TYPE",
      "use_stemmer": USE_STEMMER,
      "split_summaries": SPLIT_SUMMARIES,
    }
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

text_to_summarize = """
The Great Barrier Reef, located off the coast of Queensland in northeastern
Australia, is the world's largest coral reef system. Stretching over 2,300
kilometers, it is composed of over 2,900 individual reefs and 900 islands.
The reef is home to a wide variety of marine life, including many endangered
species. However, climate change, ocean acidification, and coral bleaching
pose significant threats to its ecosystem."""

prompt = f"Summarize the following text:\n\n{text_to_summarize}"

reference_summarization = """
The Great Barrier Reef, the world's largest coral reef system, is
located off the coast of Queensland, Australia. It's a vast
ecosystem spanning over 2,300 kilometers with thousands of reefs
and islands. While it harbors an incredible diversity of marine
life, including endangered species, it faces serious threats from
climate change, ocean acidification, and coral bleaching."""

# Use pre-generated model responses to compare different summarization outputs
# against a consistent reference.
eval_dataset = pd.DataFrame(
    {
        "prompt": [prompt] * 3,
        "response": [
            """The Great Barrier Reef, the world's largest coral reef system located
        in Australia, is a vast and diverse ecosystem. However, it faces serious
        threats from climate change, ocean acidification, and coral bleaching,
        endangering its rich marine life.""",
            """The Great Barrier Reef, a vast coral reef system off the coast of
        Queensland, Australia, is the world's largest. It's a complex ecosystem
        supporting diverse marine life, including endangered species. However,
        climate change, ocean acidification, and coral bleaching are serious
        threats to its survival.""",
            """The Great Barrier Reef, the world's largest coral reef system off the
        coast of Australia, is a vast and diverse ecosystem with thousands of
        reefs and islands. It is home to a multitude of marine life, including
        endangered species, but faces serious threats from climate change, ocean
        acidification, and coral bleaching.""",
        ],
        "reference": [reference_summarization] * 3,
    }
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        "rouge_1",
        "rouge_2",
        "rouge_l",
        "rouge_l_sum",
    ],
)
result = eval_task.evaluate()

print("Summary Metrics:\n")

for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
#                                 prompt    ...    rouge_1/score  rouge_2/score    ...
# 0  Summarize the following text:\n\n\n    ...         0.659794       0.484211    ...
# 1  Summarize the following text:\n\n\n    ...         0.704762       0.524272    ...
# ...

Passaggi successivi