API del servizio di valutazione dell'IA generativa

Il servizio di valutazione dell'IA generativa ti consente di valutare i tuoi modelli linguistici di grandi dimensioni (LLM) in base a diverse metriche e ai tuoi criteri. Puoi fornire input in fase di inferenza, risposte LLM e parametri aggiuntivi e il servizio di valutazione dell'IA generativa restituisce metriche specifiche per l'attività di valutazione.

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

Per ulteriori informazioni sulla valutazione di un modello, consulta la Panoramica del servizio di valutazione dell'IA generativa.

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 consuma la quota Gemini 1.5 Pro perché il servizio di valutazione dell'IA generativa utilizza gemini-1.5-pro come modello di giudizio sottostante per calcolare queste metriche.
  • Alcune metriche basate su modelli, come MetricX e COMET, utilizzano diversi modelli di machine learning, pertanto non consumano la quota gemini-1.5-pro.

Sintassi di esempio

Sintassi per inviare una chiamata di valutazione.

curl

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

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

Python

import json

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

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

data = {
  ...
}

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

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

Elenco dei parametri

Parametri

exact_match_input

(Facoltativo) ExactMatchInput

Input per valutare se la previsione corrisponde esattamente al riferimento.

bleu_input

(Facoltativo) BleuInput

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

rouge_input

(Facoltativo) RougeInput

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

fluency_input

(Facoltativo) FluencyInput

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

coherence_input

(Facoltativo) CoherenceInput

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

safety_input

(Facoltativo) SafetyInput

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

groundedness_input

(Facoltativo) GroundednessInput

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

fulfillment_input

(Facoltativo) FulfillmentInput

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

summarization_quality_input

(Facoltativo) SummarizationQualityInput

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

pairwise_summarization_quality_input

(Facoltativo) PairwiseSummarizationQualityInput

Input per confrontare 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, in base a un testo di riferimento.

pairwise_question_answering_quality_input

(Facoltativo) PairwiseQuestionAnsweringQualityInput

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

question_answering_relevance_input

(Facoltativo) QuestionAnsweringRelevanceInput

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

question_answering_helpfulness_input

(Facoltativo) QuestionAnsweringHelpfulnessInput

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

question_answering_correctness_input

(Facoltativo) QuestionAnsweringCorrectnessInput

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

pointwise_metric_input

(Facoltativo) PointwiseMetricInput

Input per una valutazione generica basata su punti.

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 allo strumento con i nomi dei parametri corretti.

tool_parameter_kv_match_input

(Facoltativo) ToolParameterKvMatchInput

Input per valutare la capacità di una singola risposta di prevedere una chiamata allo 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 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 istanza.

exact_match_metric_values.score

float

Il valore sarà uno dei seguenti:

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

BleuInput

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

metric_spec

(Facoltativo) BleuSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.use_effective_order

(Facoltativo) bool

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

instances

(Facoltativo) BleuInstance[]

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

instances.prediction

(Facoltativo) string

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 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 degli n-grammi tra la previsione e il riferimento.
  • rougeL: calcola i punteggi rouge in base alla sottosequenza comune più lunga (LCS) tra la previsione e il riferimento.
  • rougeLsum: suddivide prima la previsione e il riferimento in frasi, quindi calcola la LCS per ogni tupla. Il punteggio rougeLsum finale è la media di questi singoli punteggi LCS.

metric_spec.use_stemmer

(Facoltativo) bool

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

metric_spec.split_summaries

(Facoltativo) bool

Indica se aggiungere nuove righe tra le frasi per rougeLsum.

instances

(Facoltativo) RougeInstance[]

Input di valutazione, 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 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 valori:

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

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

CoherenceInput

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

metric_spec

(Facoltativo) CoherenceSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) CoherenceInstance

Input di valutazione, costituito dalla risposta dell'LLM.

instance.prediction

(Facoltativo) string

Risposta LLM.

CoherenceResult

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

score

float: uno dei seguenti valori:

  • 1: Incoerente
  • 2: abbastanza incoerente
  • 3: neutro
  • 4: abbastanza coerente
  • 5: Coherent

explanation

string: motivazione per l'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 valori:

  • 0: Non sicuro
  • 1: sicuro

explanation

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

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

GroundednessResult

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

score

float: uno dei seguenti valori:

  • 0: scollegato dalla terra
  • 1: a terra

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

FulfillmentInput

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

metric_spec

(Facoltativo) FulfillmentSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) FulfillmentInstance

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

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

FulfillmentResult

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

score

float: uno dei seguenti valori:

  • 1: nessun completamento
  • 2: scarso adempimento
  • 3: alcune attività di evasione
  • 4: evasione dell'ordine buona
  • 5: completamento dell'ordine

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

SummarizationQualityInput

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

metric_spec

(Facoltativo) SummarizationQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) SummarizationQualityInstance

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

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

SummarizationQualityResult

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

score

float: uno dei seguenti valori:

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

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

PairwiseSummarizationQualityInput

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

metric_spec

(Facoltativo) PairwiseSummarizationQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) PairwiseSummarizationQualityInstance

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

instance.baseline_prediction

(Facoltativo) string

Risposta del modello LLM di riferimento.

instance.prediction

(Facoltativo) string

Risposta del modello LLM candidato.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'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 della base di riferimento e quelle del candidato.

explanation

string: motivazione per l'assegnazione di una scelta a due.

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, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

SummarizationHelpfulnessResult

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

score

float: uno dei seguenti valori:

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

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

SummarizationVerbosityInput

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

metric_spec

(Facoltativo) SummarizationVerbositySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) SummarizationVerbosityInstance

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

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

SummarizationVerbosityResult

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

score

float. Uno dei seguenti elementi:

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

explanation

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

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

QuestionAnsweringQualityResult

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

score

float: uno dei seguenti valori:

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

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

PairwiseQuestionAnsweringQualityInput

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

metric_spec

(Facoltativo) QuestionAnsweringQualitySpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) QuestionAnsweringQualityInstance

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

instance.baseline_prediction

(Facoltativo) string

Risposta del modello LLM di riferimento.

instance.prediction

(Facoltativo) string

Risposta del modello LLM candidato.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'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 della base di riferimento 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, composto da input di inferenza e risposta corrispondente.

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

QuestionAnsweringRelevancyResult

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

score

float: uno dei seguenti valori:

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

explanation

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

instance.prediction

(Facoltativo) string

Risposta LLM.

instance.instruction

(Facoltativo) string

Istruzione utilizzata al momento dell'inferenza.

instance.context

(Facoltativo) string

Testo al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

QuestionAnsweringHelpfulnessResult

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

score

float: uno dei seguenti valori:

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

explanation

string: motivazione per l'assegnazione del punteggio.

confidence

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

QuestionAnsweringCorrectnessInput

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

metric_spec

(Facoltativo) QuestionAnsweringCorrectnessSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.use_reference

(Facoltativo) bool

Indica se il riferimento viene utilizzato o meno nella valutazione.

instance

(Facoltativo) QuestionAnsweringCorrectnessInstance

Input di valutazione, composto da input di inferenza e 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 al momento dell'inferenza contenente tutte le informazioni che possono essere utilizzate nella risposta dell'LLM.

QuestionAnsweringCorrectnessResult

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

score

float: uno dei seguenti valori:

  • 0: errato
  • 1: risposta corretta

explanation

string: motivazione per l'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 visualizzare metric_spec.metric_prompt_template.

PointwiseMetricResult

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

score

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

explanation

string: motivazione per l'assegnazione del punteggio.

PairwiseMetricInput

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

metric_spec

Obbligatorio: PairwiseMetricSpec

Specifica della metrica, che definisce il comportamento della metrica.

metric_spec.metric_prompt_template

Obbligatorio: string

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

instance

Obbligatorio: PairwiseMetricInstance

Input di valutazione, 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 visualizzare 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 a coppie.

explanation

string: motivazione per l'assegnazione del punteggio.

ToolCallValidInput

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

metric_spec

(Facoltativo) ToolCallValidSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) ToolCallValidInstance

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

instance.prediction

(Facoltativo) string

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

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

instance.reference

(Facoltativo) string

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

ripetuto ToolCallValidMetricValue: risultati della valutazione per input istanza.

tool_call_valid_metric_values.score

float: uno dei seguenti valori:

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

ToolNameMatchInput

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

metric_spec

(Facoltativo) ToolNameMatchSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) ToolNameMatchInstance

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

instance.prediction

(Facoltativo) string

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

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

ripetuto ToolNameMatchMetricValue: risultati della valutazione per input istanza.

tool_name_match_metric_values.score

float: uno dei seguenti valori:

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

ToolParameterKeyMatchInput

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

metric_spec

(Facoltativo) ToolParameterKeyMatchSpec

Specifica della metrica, che definisce il comportamento della metrica.

instance

(Facoltativo) ToolParameterKeyMatchInstance

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

instance.prediction

(Facoltativo) string

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

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

ripetuto ToolParameterKeyMatchMetricValue: risultati della valutazione per input 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, composto dalla risposta e dal riferimento dell'LLM.

instance.prediction

(Facoltativo) string

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

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

ripetuto ToolParameterKVMatchMetricValue: risultati della valutazione per input istanza.

tool_parameter_kv_match_metric_values.score

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

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 traduzione, origine e riferimento. Valuta la traduzione (previsione) utilizzando tutti e tre gli input.

metric_spec.source_language

(Facoltativo) string

Lingua di origine in 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, composto dalla risposta e dal riferimento dell'LLM. I campi esatti utilizzati per la valutazione dipendono dalla versione di COMET.

instance.prediction

(Facoltativo) string

Risposta del modello LLM 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

Risposta basata su dati di fatto utilizzata per il confronto con la previsione. Deve essere 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 la fonte. Valuta la traduzione (previsione) mediante la stima della qualità (QE), senza un input di testo di riferimento.
  • METRICX_24_SRC_REF: MetricX 24 per traduzione, fonte e riferimento. Valuta la traduzione (previsione) utilizzando tutti e tre gli input.

metric_spec.source_language

(Facoltativo) string

Lingua di origine in 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, composto dalla risposta e dal riferimento dell'LLM. I campi esatti utilizzati per la valutazione dipendono dalla versione di MetricX.

instance.prediction

(Facoltativo) string

Risposta del modello LLM 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

Risposta basata su dati di fatto utilizzata 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

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

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulness
  • summarization_verbosity

Python

import pandas as pd

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

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

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

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

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

print("Summary Metrics:\n")

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

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

Vai

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 del servizio di valutazione dell'IA generativa per valutare l'output di un LLM utilizzando un confronto della qualità del riepilogo a due.

REST

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

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: la regione in cui elaborare la richiesta.
  • PREDICTION: risposta LLM.
  • BASELINE_PREDICTION: risposta del modello LLM del modello di riferimento.
  • INSTRUCTION: l'istruzione utilizzata al momento dell'inferenza.
  • CONTEXT: testo in fase di inferenza contenente tutte le informazioni pertinenti che 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 delle seguenti opzioni:

curl

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

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

PowerShell

Salva il corpo della richiesta in un file denominato request.json, 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 per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

import pandas as pd

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

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

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

# Text

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

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

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

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

prompt_template = MetricPromptTemplateExamples.get_prompt_template(
    "pairwise_summarization_quality"
)

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

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

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

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

Vai

Go

Prima di provare questo esempio, segui le istruzioni di configurazione Go riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go di Vertex AI.

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

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

REST

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

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

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

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

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

PowerShell

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

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

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

Python

Python

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

import pandas as pd

import vertexai
from vertexai.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 Go riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Go di Vertex AI.

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