API del servizio di valutazione dell'IA generativa

Gen AI evaluation service ti consente di valutare i tuoi modelli linguistici di grandi dimensioni (LLM) in base a diverse metriche con i tuoi criteri. Puoi fornire input in fase di inferenza, risposte LLM e parametri aggiuntivi e Gen AI evaluation service 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 metriche di chiamata di funzioni dello strumento. PointwiseMetric e PairwiseMetric sono metriche generiche basate su modelli che puoi personalizzare con i tuoi criteri. Poiché il servizio prende i risultati della previsione direttamente dai modelli come input, 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 la panoramica di Gen AI evaluation service.

Limitazioni

Di seguito sono riportate le limitazioni del servizio di valutazione:

  • Il servizio di valutazione potrebbe avere un ritardo di propagazione nella prima chiamata.
  • La maggior parte delle metriche basate su modelli consumano throughput di Gemini 2.5 Flash perché Gen AI evaluation service utilizza gemini-2.5-flash come modello di valutazione sottostante per calcolare queste metriche basate su modelli.
  • Alcune metriche basate su modelli, come MetricX e COMET, utilizzano diversi modelli di machine learning, pertanto non consumano il limite di velocità effettiva di Gemini.

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/v1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances \
-d '{
  "pointwise_metric_input" : {
    "metric_spec" : {
      ...
    },
    "instance": {
      ...
    },
  }
}'

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/v1/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 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 replica 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 di input.

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 riassumere il testo di una singola risposta.

pairwise_summarization_quality_input

Facoltativo: PairwiseSummarizationQualityInput

Input per confrontare la qualità complessiva del riepilogo di due risposte.

summarization_helpfulness_input

Facoltativo: SummarizationHelpfulnessInput

Input per valutare la capacità di una singola risposta di fornire un riepilogo che contenga 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 riepilogo conciso.

question_answering_quality_input

Facoltativo: QuestionAnsweringQualityInput

Input per valutare la capacità complessiva di una singola risposta di rispondere alle domande, dato un corpo di 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 corpo di 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 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 basata su punti generica.

pairwise_metric_input

Facoltativo: PairwiseMetricInput

Input per una valutazione generica basata su 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 allo 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 di strumento con nomi di parametri corretti.

tool_parameter_kv_match_input

Facoltativo: ToolParameterKvMatchInput

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

comet_input

Facoltativo: CometInput

Input da valutare utilizzando COMET.

metricx_input

Facoltativo: MetricxInput

Input da valutare utilizzando MetricX.

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, costituito dalla risposta e dal riferimento dell'LLM.

instances.prediction

Facoltativo: string

Risposta LLM.

instances.reference

Facoltativo: string

Risposta LLM di riferimento.

ExactMatchResults

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

exact_match_metric_values

ExactMatchMetricValue[]

Risultati della valutazione per input dell'istanza.

exact_match_metric_values.score

float

Il valore sarà uno dei seguenti:

  • 0: L'istanza non corrisponde 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

Se prendere in considerazione gli ordini di n-grammi senza alcuna corrispondenza.

instances

Facoltativo: BleuInstance[]

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

instances.prediction

Facoltativo: string

Risposta LLM.

instances.reference

Facoltativo: string

Risposta LLM di 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 i 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: prima divide la previsione e il riferimento in frasi, poi calcola la LCS per ogni tupla. Il punteggio finale di rougeLsum è la media di questi singoli punteggi LCS.

metric_spec.use_stemmer

Facoltativo: bool

Indica se deve essere utilizzato lo stemmer Porter per rimuovere i suffissi delle parole e migliorare la corrispondenza.

metric_spec.split_summaries

Facoltativo: bool

Se aggiungere nuove righe tra le frasi per rougeLsum.

instances

Facoltativo: RougeInstance[]

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

instances.prediction

Facoltativo: string

Risposta LLM.

instances.reference

Facoltativo: string

Risposta LLM di 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 i 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, costituito dalla risposta dell'LLM.

instance.prediction

Facoltativo: string

Risposta LLM.

FluencyResult

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

score

float: Uno dei seguenti:

  • 1: Inarticolato
  • 2: Un po' inarticolato
  • 3: Neutrale
  • 4: Abbastanza fluente
  • 5: Fluente

explanation

string: Giustificazione dell'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

Risposta LLM.

CoherenceResult

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

score

float: Uno dei seguenti:

  • 1: Incoerente
  • 2: Abbastanza incoerente
  • 3: Neutrale
  • 4: Abbastanza coerente
  • 5: Coerente

explanation

string: Giustificazione dell'assegnazione del 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

Risposta LLM.

SafetyResult

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

score

float: Uno dei seguenti:

  • 0: Non sicuro
  • 1: Sicuro

explanation

string: Giustificazione dell'assegnazione del punteggio.

confidence

float: [0, 1] punteggio di confidenza 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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

GroundednessResult

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

score

float: Uno dei seguenti:

  • 0: Ungrounded
  • 1: Grounded

explanation

string: Giustificazione dell'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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

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:

  • 1: nessun completamento
  • 2: Completamento scadente
  • 3: Alcuni adempimenti
  • 4: Good fulfillment
  • 5: Completamento

explanation

string: Giustificazione dell'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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

SummarizationQualityResult

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

score

float: Uno dei seguenti:

  • 1: Molto scadente
  • 2: Non valido
  • 3: Ok
  • 4: Buono
  • 5: Molto buono

explanation

string: Giustificazione dell'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, costituito da input di inferenza e dalla risposta corrispondente.

instance.baseline_prediction

Facoltativo: string

Risposta LLM del modello di base.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello 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 della base di riferimento è migliore
  • CANDIDATE: La previsione dei candidati è migliore
  • TIE: pareggio tra le previsioni di base e quelle del candidato.

explanation

string: Giustificazione dell'assegnazione di pairwise_choice.

confidence

float: [0, 1] punteggio di confidenza 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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

SummarizationHelpfulnessResult

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

score

float: Uno dei seguenti:

  • 1: Non utile
  • 2: Piuttosto inutile
  • 3: Neutrale
  • 4: Piuttosto utile
  • 5: Utile

explanation

string: Giustificazione dell'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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

SummarizationVerbosityResult

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

score

float. Uno dei seguenti valori:

  • -2: Brusca
  • -1: Abbastanza conciso
  • 0: Ottimale
  • 1: Piuttosto dettagliato
  • 2: Verbose

explanation

string: Giustificazione dell'assegnazione del 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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

QuestionAnsweringQualityResult

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

score

float: Uno dei seguenti:

  • 1: Molto scadente
  • 2: Non valido
  • 3: Ok
  • 4: Buono
  • 5: Molto buono

explanation

string: Giustificazione dell'assegnazione del punteggio.

confidence

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

PairwiseQuestionAnsweringQualityInput

{
  "pairwise_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, costituito da input di inferenza e dalla risposta corrispondente.

instance.baseline_prediction

Facoltativo: string

Risposta LLM del modello di base.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello 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 della base di riferimento è migliore
  • CANDIDATE: La previsione dei candidati è migliore
  • TIE: pareggio tra le previsioni di base e quelle del candidato.

explanation

string: motivazione per l'assegnazione di 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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

QuestionAnsweringRelevancyResult

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

score

float: Uno dei seguenti:

  • 1: Irrilevante
  • 2: Non molto pertinente
  • 3: Neutrale
  • 4: Abbastanza pertinente
  • 5: Pertinente

explanation

string: Giustificazione dell'assegnazione del 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, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

QuestionAnsweringHelpfulnessResult

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

score

float: Uno dei seguenti:

  • 1: Non utile
  • 2: Piuttosto inutile
  • 3: Neutrale
  • 4: Piuttosto utile
  • 5: Utile

explanation

string: Giustificazione dell'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

Se il riferimento viene utilizzato o meno nella valutazione.

instance

Facoltativo: QuestionAnsweringCorrectnessInstance

Input di valutazione, costituito da input di inferenza e dalla risposta corrispondente.

instance.prediction

Facoltativo: string

Risposta LLM.

instance.reference

Facoltativo: string

Risposta LLM di riferimento.

instance.instruction

Facoltativo: string

Istruzione utilizzata al momento dell'inferenza.

instance.context

Facoltativo: string

Testo in fase di inferenza contenente tutte le informazioni, che possono essere utilizzate nella risposta del modello LLM.

QuestionAnsweringCorrectnessResult

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

score

float: Uno dei seguenti:

  • 0: Errato
  • 1: Corretto

explanation

string: Giustificazione dell'assegnazione del 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 template di prompt che definisce la metrica. Viene visualizzato dalle coppie chiave-valore in instance.json_instance

instance

Obbligatorio: PointwiseMetricInstance

Input di valutazione, costituito 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 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 basata su punti.

explanation

string: Giustificazione dell'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 template di prompt che definisce la metrica. Viene visualizzato dalle coppie chiave-valore in instance.json_instance

instance

Obbligatorio: PairwiseMetricInstance

Input di valutazione, costituito 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 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 della metrica basata su coppie.

explanation

string: Giustificazione dell'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, costituito dalla risposta e dal riferimento dell'LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente le 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 di strumenti. 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 di riferimento nello stesso formato della previsione.

ToolCallValidResults

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

tool_call_valid_metric_values

repeated ToolCallValidMetricValue: Evaluation results per instance input.

tool_call_valid_metric_values.score

float: Uno dei seguenti:

  • 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, costituito dalla risposta e dal riferimento dell'LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente le 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 di strumenti.

instance.reference

Facoltativo: string

Output del modello di riferimento nello stesso formato della previsione.

ToolNameMatchResults

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

tool_name_match_metric_values

repeated ToolNameMatchMetricValue: Evaluation results per instance input.

tool_name_match_metric_values.score

float: Uno dei seguenti:

  • 0: Il nome della chiamata allo strumento non corrisponde al riferimento.
  • 1: Il nome della chiamata allo 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, costituito dalla risposta e dal riferimento dell'LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente le 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 di strumenti.

instance.reference

Facoltativo: string

Output del modello di riferimento 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

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

tool_parameter_key_match_metric_values.score

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

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, costituito dalla risposta e dal riferimento dell'LLM.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato, ovvero una stringa serializzata JSON contenente le 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 di strumenti.

instance.reference

Facoltativo: string

Output del modello di riferimento 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

ToolParameterKVMatchMetricValue ripetuto: risultati della valutazione per input dell'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.

CometInput

{
  "comet_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}
Parametri

metric_spec

Facoltativo: CometSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.version

Facoltativo: string

COMET_22_SRC_REF: COMET 22 per la traduzione, l'origine e il riferimento. Valuta la traduzione (previsione) utilizzando tutti e tre gli input.

metric_spec.source_language

Facoltativo: string

Lingua di origine nel formato BCP-47. Ad esempio, "es".

metric_spec.target_language

Facoltativo: string

Lingua di destinazione nel formato BCP-47. Ad esempio, "es".

instance

Facoltativo: CometInstance

Input di valutazione, costituito dalla risposta e dal riferimento dell'LLM. I campi esatti utilizzati per la valutazione dipendono dalla versione di COMET.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato. Questo è l'output dell'LLM in fase di valutazione.

instance.source

Facoltativo: string

Testo di origine. nella lingua originale da cui è stata tradotta la previsione.

instance.reference

Facoltativo: string

Dati empirici reali utilizzati per il confronto con la previsione. È nella stessa lingua della previsione.

CometResult

{
  "comet_result" : {
    "score": float
  }
}
Output

score

float: [0, 1], dove 1 rappresenta una traduzione perfetta.

MetricxInput

{
  "metricx_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}
Parametri

metric_spec

Facoltativo: MetricxSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.version

Facoltativamente,

string

Il valore sarà uno dei seguenti:

  • METRICX_24_REF: MetricX 24 per la traduzione e il riferimento. Valuta la previsione (traduzione) confrontandola con il testo di riferimento fornito.
  • METRICX_24_SRC: MetricX 24 per la traduzione e l'origine. Valuta la traduzione (previsione) mediante la stima della qualità (QE), senza un input di testo di riferimento.
  • METRICX_24_SRC_REF: MetricX 24 per la traduzione, l'origine e il riferimento. Valuta la traduzione (previsione) utilizzando tutti e tre gli input.

metric_spec.source_language

Facoltativo: string

Lingua di origine nel formato BCP-47. Ad esempio, "es".

metric_spec.target_language

Facoltativo: string

Lingua di destinazione nel formato BCP-47. Ad esempio, "es".

instance

Facoltativo: MetricxInstance

Input di valutazione, costituito dalla risposta e dal riferimento dell'LLM. I campi esatti utilizzati per la valutazione dipendono dalla versione di MetricX.

instance.prediction

Facoltativo: string

Risposta LLM del modello candidato. Questo è l'output dell'LLM in fase di valutazione.

instance.source

Facoltativo: string

Il testo di origine nella lingua originale da cui è stata tradotta la previsione.

instance.reference

Facoltativo: string

Dati empirici reali utilizzati per il confronto con la previsione. È nella stessa lingua della previsione.

MetricxResult

{
  "metricx_result" : {
    "score": float
  }
}
Output

score

float: [0, 25], dove 0 rappresenta una traduzione perfetta.

Esempi

Valutare un output

Il seguente esempio 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
# ...

Go

import (
	context_pkg "context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// evaluateModelResponse evaluates the output of an LLM for groundedness, i.e., how well
// the model response connects with verifiable sources of information
func evaluateModelResponse(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context_pkg.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	// evaluate the pre-generated model response against the reference (ground truth)
	responseToEvaluate := `
The city is undertaking a major project to revamp its public transportation system.
This initiative is designed to improve efficiency, reduce carbon emissions, and promote
eco-friendly commuting. The city expects that this investment will enhance accessibility
and usher in a new era of sustainable urban transportation.
`
	reference := `
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.
`
	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		// Check the API reference for a full list of supported metric inputs:
		// https://cloud.google.com/vertex-ai/docs/reference/rpc/google.cloud.aiplatform.v1beta1#evaluateinstancesrequest
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_GroundednessInput{
			GroundednessInput: &aiplatformpb.GroundednessInput{
				MetricSpec: &aiplatformpb.GroundednessSpec{},
				Instance: &aiplatformpb.GroundednessInstance{
					Context:    &reference,
					Prediction: &responseToEvaluate,
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	results := resp.GetGroundednessResult()
	fmt.Fprintf(w, "score: %.2f\n", results.GetScore())
	fmt.Fprintf(w, "confidence: %.2f\n", results.GetConfidence())
	fmt.Fprintf(w, "explanation:\n%s\n", results.GetExplanation())
	// Example response:
	// score: 1.00
	// confidence: 1.00
	// explanation:
	// STEP 1: All aspects of the response are found in the context.
	// The response accurately summarizes the city's plan to overhaul its public transportation system, highlighting the goals of ...
	// STEP 2: According to the rubric, the response is scored 1 because all aspects of the response are attributable to the context.

	return nil
}

Valutare un output: qualità del riepilogo a coppie

L'esempio seguente mostra come chiamare l'API Gen AI evaluation service per valutare l'output di un LLM utilizzando un confronto della qualità del riepilogo a coppie.

REST

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

  • PROJECT_ID: .
  • LOCATION: La regione in cui elaborare la richiesta.
  • PREDICTION: risposta LLM.
  • BASELINE_PREDICTION: Risposta 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 possono essere utilizzate nella risposta dell'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 di queste 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, 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/LOCATION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI 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-2.0-flash-lite-001")

# Candidate model for pairwise comparison
candidate_model = GenerativeModel(
    "gemini-2.0-flash-001", 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 ...

Go

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Vertex AI Go.

Per eseguire l'autenticazione in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

import (
	context_pkg "context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// pairwiseEvaluation lets the judge model to compare the responses of two models and pick the better one
func pairwiseEvaluation(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context_pkg.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	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.
`
	instruction := "Summarize the text such that a five-year-old can understand."
	baselineResponse := `
The city wants to make it easier for people to get around without using cars.
They're going to make the buses and trains better and faster, so people will want to
use them more. This will help the air be cleaner and make the city a better place to live.
`
	candidateResponse := `
The city is making big changes to how people get around. They want to make the buses and
trains work better and be easier for everyone to use. This will also help the environment
by getting people to use less gas. The city thinks these changes will make it easier for
everyone to get where they need to go.
`

	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_PairwiseSummarizationQualityInput{
			PairwiseSummarizationQualityInput: &aiplatformpb.PairwiseSummarizationQualityInput{
				MetricSpec: &aiplatformpb.PairwiseSummarizationQualitySpec{},
				Instance: &aiplatformpb.PairwiseSummarizationQualityInstance{
					Context:            &context,
					Instruction:        &instruction,
					Prediction:         &candidateResponse,
					BaselinePrediction: &baselineResponse,
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	results := resp.GetPairwiseSummarizationQualityResult()
	fmt.Fprintf(w, "choice: %s\n", results.GetPairwiseChoice())
	fmt.Fprintf(w, "confidence: %.2f\n", results.GetConfidence())
	fmt.Fprintf(w, "explanation:\n%s\n", results.GetExplanation())
	// Example response:
	// choice: BASELINE
	// confidence: 0.50
	// explanation:
	// BASELINE response is easier to understand. For example, the phrase "..." is easier to understand than "...". Thus, BASELINE response is ...

	return nil
}

Ottenere il punteggio ROUGE

L'esempio seguente chiama l'API del servizio di valutazione dell'AI generativa 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 sostituzioni seguenti:

  • PROJECT_ID: .
  • LOCATION: La regione in cui elaborare la richiesta.
  • PREDICTION: risposta LLM.
  • REFERENCE: Risposta LLM di riferimento.
  • ROUGE_TYPE: il calcolo utilizzato per determinare il punteggio di rischio. Consulta metric_spec.rouge_type per i valori accettabili.
  • USE_STEMMER: determina se viene utilizzato lo stemmer Porter per rimuovere i suffissi delle parole e migliorare la corrispondenza. Per i valori accettabili, vedi metric_spec.use_stemmer.
  • SPLIT_SUMMARIES: determina se vengono aggiunti nuovi spazi tra le frasi rougeLsum. Per i valori accettabili, vedi 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 di queste 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 Python, consulta Installare l'SDK Vertex AI 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")

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

# Compare pre-generated model responses against the reference (ground truth).
eval_dataset = pd.DataFrame(
    {
        "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:
#
# Summary Metrics:
#
# row_count:      3
# rouge_1/mean:   0.7191161666666667
# rouge_1/std:    0.06765143922270488
# rouge_2/mean:   0.5441118566666666
# ...
# Metrics Table:
#
#                                        response                         reference  ...  rouge_l/score  rouge_l_sum/score
# 0  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.577320           0.639175
# 1  The Great Barrier Reef, a vast coral...  \n    The Great Barrier Reef, the ...  ...       0.552381           0.666667
# 2  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.774775           0.774775

Go

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Vertex AI Go.

Per eseguire l'autenticazione in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// getROUGEScore evaluates a model response against a reference (ground truth) using the ROUGE metric
func getROUGEScore(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	modelResponse := `
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.
`
	reference := `
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.
`
	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_RougeInput{
			RougeInput: &aiplatformpb.RougeInput{
				// Check the API reference for the list of supported ROUGE metric types:
				// https://cloud.google.com/vertex-ai/docs/reference/rpc/google.cloud.aiplatform.v1beta1#rougespec
				MetricSpec: &aiplatformpb.RougeSpec{
					RougeType: "rouge1",
				},
				Instances: []*aiplatformpb.RougeInstance{
					{
						Prediction: &modelResponse,
						Reference:  &reference,
					},
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	fmt.Fprintln(w, "evaluation results:")
	fmt.Fprintln(w, resp.GetRougeResults().GetRougeMetricValues())
	// Example response:
	// [score:0.6597938]

	return nil
}

Passaggi successivi