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 funzione 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 ulteriori informazioni 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 la quota di Gemini 2.0 Flash perché il servizio di valutazione dell'AI generativa utilizza gemini-2.0-flash come modello di valutazione sottostante per calcolare queste metriche basate su modelli.
  • Alcune metriche basate su modelli, come MetricX e COMET, utilizzano modelli di machine learning diversi, pertanto non consumano la quota gemini-2.0-flash.

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 supporta diversi punteggi rouge_type.

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 un'unica risposta di riassumere il testo.

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

metric_spec.use_stemmer

(Facoltativo) bool

Indica se utilizzare 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 dell'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 dell'LLM.

FluencyResult

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

score

float: Una delle seguenti opzioni:

  • 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 dell'LLM.

CoherenceResult

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

score

float: Una delle seguenti opzioni:

  • 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 dell'LLM.

SafetyResult

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

score

float: Una delle seguenti opzioni:

  • 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 dell'LLM.

instance.context

(Facoltativo) string

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

GroundednessResult

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

score

float: Una delle seguenti opzioni:

  • 0: Non collegato a terra
  • 1: A terra

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 dell'LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

FulfillmentResult

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

score

float: Una delle seguenti opzioni:

  • 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 dell'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 LLM.

SummarizationQualityResult

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

score

float: Una delle seguenti opzioni:

  • 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 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 dell'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 LLM.

SummarizationHelpfulnessResult

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

score

float: Una delle seguenti opzioni:

  • 1: Inutile
  • 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 dell'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 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 dell'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 LLM.

QuestionAnsweringQualityResult

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

score

float: Una delle seguenti opzioni:

  • 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 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 dell'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 LLM.

QuestionAnsweringRelevancyResult

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

score

float: Una delle seguenti opzioni:

  • 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 dell'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 LLM.

QuestionAnsweringHelpfulnessResult

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

score

float: Una delle seguenti opzioni:

  • 1: Inutile
  • 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 dell'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 LLM.

QuestionAnsweringCorrectnessResult

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

score

float: Una delle seguenti opzioni:

  • 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 modello 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 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 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 modello 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 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 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

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

tool_call_valid_metric_values.score

float: Una delle seguenti opzioni:

  • 0: Chiamata dello 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

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

tool_name_match_metric_values.score

float: Una delle seguenti opzioni:

  • 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 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 in formato BCP-47. Ad esempio, "es".

instance

(Facoltativo) CometInstance

Input di valutazione, costituito da risposta e 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 del modello LLM in fase di valutazione.

instance.source

(Facoltativo) string

Testo di origine. Questo valore è 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) tramite 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 in formato BCP-47. Ad esempio, "es".

instance

(Facoltativo) MetricxInstance

Input di valutazione, costituito da risposta e 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 del modello 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 riassunto a coppie

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

  • 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, ed esegui questo comando:

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

Vai

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 autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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
}

Ottieni 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 seguenti sostituzioni:

  • 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 aggiunte nuove righe 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, ed esegui questo comando:

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, 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/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

Vai

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 autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, 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