API Gen AI Evaluation Service

Gen AI Evaluation Service vous permet d'évaluer vos grands modèles de langage (LLM) selon plusieurs métriques, en fonction de vos propres critères. Vous pouvez fournir des entrées de temps d'inférence, des réponses LLM et des paramètres supplémentaires. Gen AI Evaluation Service renvoie des métriques spécifiques à la tâche d'évaluation.

Celles-ci incluent des métriques basées sur un modèle, telles que PointwiseMetric et PairwiseMetric, des métriques calculées en mémoire, telles que rouge et bleu, ainsi que des métriques d'appel de fonction d'outil. PointwiseMetric et PairwiseMetric sont des métriques génériques basées sur un modèle que vous pouvez personnaliser avec vos propres critères. Étant donné que le service utilise directement les résultats de la prédiction des modèles en tant qu'entrée, le service d'évaluation peut effectuer une inférence et une évaluation ultérieure sur tous les modèles acceptés par Vertex AI.

Pour en savoir plus sur l'évaluation d'un modèle, consultez Présentation de Gen AI Evaluation Service.

Limites

Voici les limites du service d'évaluation :

  • Le service d'évaluation peut présenter un délai de propagation lors de votre premier appel.
  • La plupart des métriques basées sur un modèle consomment un quota gemini-2.0-flash, car Gen AI Evaluation Service utilise gemini-2.0-flash comme modèle d'évaluation sous-jacent pour calculer ces métriques.
  • Certaines métriques basées sur un modèle, telles que MetricX et COMET, utilisent des modèles de machine learning différents. Elles ne consomment donc pas de quota gemini-2.0-flash.

Exemple de syntaxe

Syntaxe pour envoyer un appel d'évaluation.

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

Liste des paramètres

Paramètres

exact_match_input

Facultatif : ExactMatchInput

Entrée permettant de déterminer si la prédiction correspond exactement à la référence.

bleu_input

Facultatif : BleuInput

Entrée permettant de calculer le score BLEU en comparant la prédiction à la référence.

rouge_input

Facultatif : RougeInput

Entrée permettant de calculer les scores rouge en comparant la prédiction à la référence. Différents scores rouge sont acceptés par rouge_type.

fluency_input

Facultatif : FluencyInput

Entrée permettant d'évaluer la maîtrise du langage d'une seule réponse.

coherence_input

Facultatif : CoherenceInput

Entrée permettant d'évaluer la capacité d'une réponse unique à fournir une réponse cohérente et facile à suivre.

safety_input

Facultatif : SafetyInput

Entrée permettant d'évaluer le niveau de sécurité d'une réponse unique.

groundedness_input

Facultatif : GroundednessInput

Entrée permettant d'évaluer la capacité d'une réponse unique à fournir ou à référencer des informations incluses uniquement dans le texte d'entrée.

fulfillment_input

Facultatif : FulfillmentInput

Entrée permettant d'évaluer la capacité d'une réponse unique à adhérer complètement aux instructions.

summarization_quality_input

Facultatif : SummarizationQualityInput

Entrée permettant d'évaluer la capacité globale d'une réponse à résumer du texte.

pairwise_summarization_quality_input

Facultatif : PairwiseSummarizationQualityInput

Entrée permettant de comparer la qualité globale de synthèse de deux réponses.

summarization_helpfulness_input

Facultatif : SummarizationHelpfulnessInput

Entrée permettant d'évaluer la capacité d'une réponse unique à fournir un résumé qui contient les détails nécessaires pour se substituer au texte d'origine.

summarization_verbosity_input

Facultatif : SummarizationVerbosityInput

Entrée permettant d'évaluer la capacité d'une réponse unique à fournir un résumé succinct.

question_answering_quality_input

Facultatif : QuestionAnsweringQualityInput

Entrée permettant d'évaluer la capacité globale d'une réponse unique à répondre à des questions, à partir d'un corps de texte à référencer.

pairwise_question_answering_quality_input

Facultatif : PairwiseQuestionAnsweringQualityInput

Entrée permettant de comparer la capacité globale de deux réponses à répondre à des questions, à partir d'un corps de texte à référencer.

question_answering_relevance_input

Facultatif : QuestionAnsweringRelevanceInput

Entrée permettant d'évaluer la capacité d'une réponse unique à répondre avec des informations pertinentes lorsqu'on lui pose une question.

question_answering_helpfulness_input

Facultatif : QuestionAnsweringHelpfulnessInput

Entrée permettant d'évaluer la capacité d'une réponse unique à fournir des détails clés dans sa réponse à une question.

question_answering_correctness_input

Facultatif : QuestionAnsweringCorrectnessInput

Entrée permettant d'évaluer la capacité d'une réponse unique à répondre correctement à une question.

pointwise_metric_input

Facultatif : PointwiseMetricInput

Entrée pour une évaluation par point générique.

pairwise_metric_input

Facultatif : PairwiseMetricInput

Entrée pour une évaluation par paire générique.

tool_call_valid_input

Facultatif : ToolCallValidInput

Entrée permettant d'évaluer la capacité d'une réponse unique à prédire un appel d'outil valide.

tool_name_match_input

Facultatif : ToolNameMatchInput

Entrée permettant d'évaluer la capacité d'une réponse unique à prédire un appel d'outil avec le nom d'outil approprié.

tool_parameter_key_match_input

Facultatif : ToolParameterKeyMatchInput

Entrée permettant d'évaluer la capacité d'une réponse unique à prédire un appel d'outil avec des noms de paramètres corrects.

tool_parameter_kv_match_input

Facultatif : ToolParameterKvMatchInput

Entrée permettant d'évaluer la capacité d'une réponse unique à prédire un appel d'outil avec des noms et des valeurs de paramètres corrects.

comet_input

Facultatif : CometInput

Entrée permettant d'effectuer une évaluation à l'aide de COMET.

metricx_input

Facultatif : MetricxInput

Entrée permettant d'effectuer une évaluation à l'aide de MetricX.

ExactMatchInput

{
  "exact_match_input": {
    "metric_spec": {},
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Paramètres

metric_spec

Facultatif : ExactMatchSpec.

Spécification de la métrique, qui définit son comportement.

instances

Facultatif : ExactMatchInstance[]

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instances.prediction

Facultatif : string

Réponse du LLM.

instances.reference

Facultatif : string

Réponse clé du LLM pour référence.

ExactMatchResults

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

exact_match_metric_values

ExactMatchMetricValue[]

Résultats d'évaluation par entrée d'instance.

exact_match_metric_values.score

float

L'un des types suivants :

  • 0 : l'instance ne correspondait pas exactement.
  • 1 : correspondance exacte.

BleuInput

{
  "bleu_input": {
    "metric_spec": {
      "use_effective_order": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Paramètres

metric_spec

Facultatif : BleuSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.use_effective_order

Facultatif : bool

Indique si les ordres des n-grammes sans correspondance doivent être pris en compte.

instances

Facultatif : BleuInstance[]

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instances.prediction

Facultatif : string

Réponse du LLM.

instances.reference

Facultatif : string

Réponse clé du LLM pour référence.

BleuResults

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

bleu_metric_values

BleuMetricValue[]

Résultats d'évaluation par entrée d'instance.

bleu_metric_values.score

float : [0, 1], plus les scores sont élevés, plus la prédiction ressemble à la référence.

RougeInput

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

metric_spec

Facultatif : RougeSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.rouge_type

Facultatif : string

Valeurs acceptables :

  • rougen[1-9] : calcule les scores rouge en fonction du chevauchement des n-grammes entre la prédiction et la référence.
  • rougeL : calcule les scores rouge en fonction de la plus longue sous-séquence commune (LCS) entre la prédiction et la référence.
  • rougeLsum : divise d'abord la prédiction et la référence en phrases, puis calcule la LCS pour chaque tuple. Le score rougeLsum final correspond à la moyenne de ces scores LCS individuels.

metric_spec.use_stemmer

Facultatif : bool

Indique si le stemmer de Porter doit être utilisé pour supprimer les suffixes de mots afin d'améliorer la correspondance.

metric_spec.split_summaries

Facultatif : bool

Indique s'il faut ajouter des sauts de ligne entre les phrases pour rougeLsum.

instances

Facultatif : RougeInstance[]

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instances.prediction

Facultatif : string

Réponse du LLM.

instances.reference

Facultatif : string

Réponse clé du LLM pour référence.

RougeResults

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

rouge_metric_values

RougeValue[]

Résultats d'évaluation par entrée d'instance.

rouge_metric_values.score

float : [0, 1], plus les scores sont élevés, plus la prédiction ressemble à la référence.

FluencyInput

{
  "fluency_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Paramètres

metric_spec

Facultatif : FluencySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : FluencyInstance

Entrée d'évaluation, composée de la réponse LLM.

instance.prediction

Facultatif : string

Réponse du LLM.

FluencyResult

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

score

float : l'un des types suivants :

  • 1 : inarticulé
  • 2 : légèrement inarticulé
  • 3 : neutre
  • 4 : assez fluide
  • 5 : fluide

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

CoherenceInput

{
  "coherence_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Paramètres

metric_spec

Facultatif : CoherenceSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : CoherenceInstance

Entrée d'évaluation, composée de la réponse LLM.

instance.prediction

Facultatif : string

Réponse du LLM.

CoherenceResult

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

score

float : l'un des types suivants :

  • 1 : incohérent
  • 2 : plutôt incohérent
  • 3 : neutre
  • 4 : relativement cohérent
  • 5 : cohérent

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

SafetyInput

{
  "safety_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Paramètres

metric_spec

Facultatif : SafetySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : SafetyInstance

Entrée d'évaluation, composée de la réponse LLM.

instance.prediction

Facultatif : string

Réponse du LLM.

SafetyResult

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

score

float : l'un des types suivants :

  • 0 : dangereux
  • 1 : sûr

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

GroundednessInput

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

Paramètre

Description

metric_spec

Facultatif : GroundednessSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : GroundednessInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

GroundednessResult

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

score

float : l'un des types suivants :

  • 0 : non ancré
  • 1 : ancré

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

FulfillmentInput

{
  "fulfillment_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string
    }
  }
}
Paramètres

metric_spec

Facultatif : FulfillmentSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : FulfillmentInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

FulfillmentResult

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

score

float : l'un des types suivants :

  • 1 : aucun traitement
  • 2 : mauvais traitement
  • 3 : application d'un certain traitement
  • 4 : bon traitement
  • 5 : traitement complet

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

SummarizationQualityInput

{
  "summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Paramètres

metric_spec

Facultatif : SummarizationQualitySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : SummarizationQualityInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

SummarizationQualityResult

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

score

float : l'un des types suivants :

  • 1 : très mauvais
  • 2 : mauvais
  • 3 : OK
  • 4 : bon
  • 5 : très bon

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

PairwiseSummarizationQualityInput

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Paramètres

metric_spec

Facultatif : PairwiseSummarizationQualitySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : PairwiseSummarizationQualityInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.baseline_prediction

Facultatif : string

Réponse LLM du modèle de référence.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

PairwiseSummarizationQualityResult

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

pairwise_choice

PairwiseChoice : énumération avec les valeurs possibles suivantes :

  • BASELINE : la prédiction de référence est meilleure.
  • CANDIDATE : la prédiction candidate est meilleure.
  • TIE : égalité entre les prédictions de référence et candidate.

explanation

string : justification pour l'attribution pairwise_choice.

confidence

float : [0, 1], score de confiance de notre résultat.

SummarizationHelpfulnessInput

{
  "summarization_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Paramètres

metric_spec

Facultatif : SummarizationHelpfulnessSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : SummarizationHelpfulnessInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

SummarizationHelpfulnessResult

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

score

float : l'un des types suivants :

  • 1 : inutile
  • 2 : plutôt inutile
  • 3 : neutre
  • 4 : plutôt utile
  • 5 : utile

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

SummarizationVerbosityInput

{
  "summarization_verbosity_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Paramètres

metric_spec

Facultatif : SummarizationVerbositySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : SummarizationVerbosityInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

SummarizationVerbosityResult

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

score

float : choisissez l'une des options suivantes :

  • -2 : concis
  • -1 : plutôt concis
  • 0 : optimal
  • 1 : plutôt détaillé
  • 2 : détaillé

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

QuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Paramètres

metric_spec

Facultatif : QuestionAnsweringQualitySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : QuestionAnsweringQualityInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

QuestionAnsweringQualityResult

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

score

float : l'un des types suivants :

  • 1 : très mauvais
  • 2 : mauvais
  • 3 : OK
  • 4 : bon
  • 5 : très bon

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

PairwiseQuestionAnsweringQualityInput

{
  "pairwise_question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Paramètres

metric_spec

Facultatif : QuestionAnsweringQualitySpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : QuestionAnsweringQualityInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.baseline_prediction

Facultatif : string

Réponse LLM du modèle de référence.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

PairwiseQuestionAnsweringQualityResult

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

pairwise_choice

PairwiseChoice : énumération avec les valeurs possibles suivantes :

  • BASELINE : la prédiction de référence est meilleure.
  • CANDIDATE : la prédiction candidate est meilleure.
  • TIE : égalité entre les prédictions de référence et candidate.

explanation

string : justification de l'attribution pairwise_choice.

confidence

float : [0, 1], score de confiance de notre résultat.

QuestionAnsweringRelevanceInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Paramètres

metric_spec

Facultatif : QuestionAnsweringRelevanceSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : QuestionAnsweringRelevanceInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

QuestionAnsweringRelevancyResult

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

score

float : l'un des types suivants :

  • 1 : non pertinent
  • 2 : quelque peu pertinent
  • 3 : neutre
  • 4 : plutôt pertinent
  • 5 : pertinent

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

QuestionAnsweringHelpfulnessInput

{
  "question_answering_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Paramètres

metric_spec

Facultatif : QuestionAnsweringHelpfulnessSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : QuestionAnsweringHelpfulnessInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

QuestionAnsweringHelpfulnessResult

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

score

float : l'un des types suivants :

  • 1 : inutile
  • 2 : plutôt inutile
  • 3 : neutre
  • 4 : plutôt utile
  • 5 : utile

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

QuestionAnsweringCorrectnessInput

{
  "question_answering_correctness_input": {
    "metric_spec": {
      "use_reference": bool
    },
    "instance": {
      "prediction": string,
      "reference": string,
      "instruction": string,
      "context": string
    }
  }
}
Paramètres

metric_spec

Facultatif : QuestionAnsweringCorrectnessSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.use_reference

Facultatif : bool

Indique si une référence est utilisée ou non dans l'évaluation.

instance

Facultatif : QuestionAnsweringCorrectnessInstance

Entrée d'évaluation, composée des entrées d'inférence et de la réponse correspondante.

instance.prediction

Facultatif : string

Réponse du LLM.

instance.reference

Facultatif : string

Réponse clé du LLM pour référence.

instance.instruction

Facultatif : string

Instruction utilisée au moment de l'inférence.

instance.context

Facultatif : string

Texte disponible au moment de l'inférence, contenant toutes les informations pouvant être utilisées dans la réponse du LLM.

QuestionAnsweringCorrectnessResult

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

score

float : l'un des types suivants :

  • 0 : incorrect
  • 1 : correct

explanation

string : justification de l'attribution des notes.

confidence

float : [0, 1], score de confiance de notre résultat.

PointwiseMetricInput

{
  "pointwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
Paramètres

metric_spec

Obligatoire : PointwiseMetricSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.metric_prompt_template

Obligatoire : string

Modèle de requête définissant la métrique. Il est représenté par les paires clé/valeur dans instance.json_instance.

instance

Obligatoire : PointwiseMetricInstance

Entrée d'évaluation, composée de json_instance.

instance.json_instance

Facultatif : string

Les paires clé/valeur au format JSON. Par exemple, {"key_1": "value_1", "key_2": "value_2"}. Cela permet de représenter metric_spec.metric_prompt_template.

PointwiseMetricResult

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

score

float : score représentant le résultat d'évaluation par point de la métrique.

explanation

string : justification de l'attribution des notes.

PairwiseMetricInput

{
  "pairwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
Paramètres

metric_spec

Obligatoire : PairwiseMetricSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.metric_prompt_template

Obligatoire : string

Modèle de requête définissant la métrique. Il est représenté par les paires clé/valeur dans instance.json_instance.

instance

Obligatoire : PairwiseMetricInstance

Entrée d'évaluation, composée de json_instance.

instance.json_instance

Facultatif : string

Les paires clé/valeur au format JSON. Par exemple, {"key_1": "value_1", "key_2": "value_2"}. Cela permet de représenter metric_spec.metric_prompt_template.

PairwiseMetricResult

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

score

float : score représentant le résultat d'évaluation par paire de la métrique.

explanation

string : justification de l'attribution des notes.

ToolCallValidInput

{
  "tool_call_valid_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Paramètres

metric_spec

Facultatif : ToolCallValidSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : ToolCallValidInstance

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat, qui est une chaîne sérialisée JSON contenant les clés content et tool_calls. La valeur content correspond à la sortie textuelle du modèle. La valeur tool_call est une chaîne sérialisée JSON représentant une liste d'appels d'outil. Voici un exemple :

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

Facultatif : string

Sortie du modèle de référence au même format que la prédiction.

ToolCallValidResults

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

tool_call_valid_metric_values

ToolCallValidMetricValue répété : résultats de l'évaluation par entrée d'instance.

tool_call_valid_metric_values.score

float : l'un des types suivants :

  • 0 : appel d'outil non valide
  • 1 : appel d'outil valide

ToolNameMatchInput

{
  "tool_name_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Paramètres

metric_spec

Facultatif : ToolNameMatchSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : ToolNameMatchInstance

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat, qui est une chaîne sérialisée JSON contenant les clés content et tool_calls. La valeur content correspond à la sortie textuelle du modèle. La valeur tool_call est une chaîne sérialisée JSON représentant une liste d'appels d'outil.

instance.reference

Facultatif : string

Sortie du modèle de référence au même format que la prédiction.

ToolNameMatchResults

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

tool_name_match_metric_values

ToolNameMatchMetricValue répété : résultats de l'évaluation par entrée d'instance.

tool_name_match_metric_values.score

float : l'un des types suivants :

  • 0 : le nom de l'appel d'outil ne correspond pas à la référence.
  • 1 : le nom de l'appel d'outil correspond à la référence.

ToolParameterKeyMatchInput

{
  "tool_parameter_key_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Paramètres

metric_spec

Facultatif : ToolParameterKeyMatchSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : ToolParameterKeyMatchInstance

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat, qui est une chaîne sérialisée JSON contenant les clés content et tool_calls. La valeur content correspond à la sortie textuelle du modèle. La valeur tool_call est une chaîne sérialisée JSON représentant une liste d'appels d'outil.

instance.reference

Facultatif : string

Sortie du modèle de référence au même format que la prédiction.

ToolParameterKeyMatchResults

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

tool_parameter_key_match_metric_values

ToolParameterKeyMatchMetricValue répété : résultats de l'évaluation par entrée d'instance.

tool_parameter_key_match_metric_values.score

float : [0, 1], où les scores plus élevés signifient que plus de paramètres correspondent aux noms des paramètres de référence.

ToolParameterKVMatchInput

{
  "tool_parameter_kv_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Paramètres

metric_spec

Facultatif : ToolParameterKVMatchSpec

Spécification de la métrique, qui définit son comportement.

instance

Facultatif : ToolParameterKVMatchInstance

Entrée d'évaluation, composée de la réponse et de la référence du LLM.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat, qui est une chaîne sérialisée JSON contenant les clés content et tool_calls. La valeur content correspond à la sortie textuelle du modèle. La valeur tool_call est une chaîne sérialisée JSON représentant une liste d'appels d'outil.

instance.reference

Facultatif : string

Sortie du modèle de référence au même format que la prédiction.

ToolParameterKVMatchResults

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

tool_parameter_kv_match_metric_values

ToolParameterKVMatchMetricValue répété : résultats de l'évaluation par entrée d'instance.

tool_parameter_kv_match_metric_values.score

float : [0, 1], où des scores plus élevés signifient que plus de paramètres correspondent aux noms et aux valeurs des paramètres de référence.

CometInput

{
  "comet_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}
Paramètres

metric_spec

Facultatif : CometSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.version

Facultatif : string

COMET_22_SRC_REF : COMET 22 pour la traduction, la source et la référence. Elle évalue la traduction (prédiction) à l'aide des trois entrées.

metric_spec.source_language

Facultatif : string

Langue source au format BCP-47. Par exemple, "es".

metric_spec.target_language

Facultatif : string

Langue cible au format BCP-47. Par exemple, "es".

instance

Facultatif : CometInstance

Entrée d'évaluation, composée de la réponse et de la référence du LLM. Les champs exacts utilisés pour l'évaluation dépendent de la version de COMET.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat. Il s'agit de la sortie du LLM en cours d'évaluation.

instance.source

Facultatif : string

Texte source. Il s'agit de la langue d'origine à partir de laquelle la prédiction a été traduite.

instance.reference

Facultatif : string

Vérité terrain utilisée pour effectuer une comparaison avec la prédiction. Ce texte est dans la même langue que la prédiction.

CometResult

{
  "comet_result" : {
    "score": float
  }
}
Sortie

score

float : [0, 1], où 1 représente une traduction parfaite.

MetricxInput

{
  "metricx_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}
Paramètres

metric_spec

Facultatif : MetricxSpec

Spécification de la métrique, qui définit son comportement.

metric_spec.version

Facultatif :

string

L'un des types suivants :

  • METRICX_24_REF : MetricX 24 pour la traduction et la référence. Elle évalue la prédiction (traduction) en la comparant à l'entrée de texte de référence fournie.
  • METRICX_24_SRC : MetricX 24 pour la traduction et la source. Elle évalue la traduction (prédiction) par estimation de la qualité (QE), sans entrée de texte de référence.
  • METRICX_24_SRC_REF : MetricX 24 pour la traduction, la source et la référence. Elle évalue la traduction (prédiction) à l'aide des trois entrées.

metric_spec.source_language

Facultatif : string

Langue source au format BCP-47. Par exemple, "es".

metric_spec.target_language

Facultatif : string

Langue cible au format BCP-47. Par exemple, "es".

instance

Facultatif : MetricxInstance

Entrée d'évaluation, composée de la réponse et de la référence du LLM. Les champs exacts utilisés pour l'évaluation dépendent de la version de MetricX.

instance.prediction

Facultatif : string

Réponse LLM du modèle candidat. Il s'agit de la sortie du LLM en cours d'évaluation.

instance.source

Facultatif : string

Texte source, dans la langue d'origine à partir de laquelle la prédiction a été traduite.

instance.reference

Facultatif : string

Vérité terrain utilisée pour effectuer une comparaison avec la prédiction. Ce texte est dans la même langue que la prédiction.

MetricxResult

{
  "metricx_result" : {
    "score": float
  }
}
Sortie

score

float : [0, 25], où 0 représente une traduction parfaite.

Exemples

Évaluer un résultat

L'exemple suivant montre comment appeler l'API Gen AI Evaluation pour évaluer le résultat d'un LLM à l'aide de diverses métriques d'évaluation, y compris les suivantes :

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

Évaluer un résultat : qualité des résumés par paire

L'exemple suivant montre comment appeler l'API Gen AI Evaluation Service pour évaluer le résultat d'un LLM à l'aide d'une comparaison de qualité du résumé par paire.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : .
  • LOCATION : région dans laquelle traiter la requête.
  • PREDICTION : réponse LLM.
  • BASELINE_PREDICTION : réponse LLM du modèle de référence.
  • INSTRUCTION : instruction utilisée au moment de l'inférence.
  • CONTEXT : texte disponible au moment de l'inférence, contenant toutes les informations pertinentes pouvant être utilisées dans la réponse du LLM.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import pandas as pd

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

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

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

# Text

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

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

# Baseline model for pairwise comparison
baseline_model = GenerativeModel("gemini-2.0-flash-lite-001")

# Candidate model for pairwise comparison
candidate_model = GenerativeModel(
    "gemini-2.0-flash-001", generation_config={"temperature": 0.4}
)

prompt_template = MetricPromptTemplateExamples.get_prompt_template(
    "pairwise_summarization_quality"
)

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

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

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

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

Go

Go

Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de Vertex AI sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Go.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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
}

Obtenir le score ROUGE

L'exemple suivant appelle l'API Gen AI Evaluation Service pour obtenir le score ROUGE d'une prédiction, lequel est généré par un certain nombre d'entrées. Les entrées de type ROUGE utilisent metric_spec, qui détermine le comportement de la métrique.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : .
  • LOCATION : région dans laquelle traiter la requête.
  • PREDICTION : réponse LLM.
  • REFERENCE : réponse LLM clé pour référence.
  • ROUGE_TYPE : calcul utilisé pour déterminer le score rouge. Consultez metric_spec.rouge_type pour connaître les valeurs acceptables.
  • USE_STEMMER : détermine si le stemmer de Porter est utilisé pour supprimer les suffixes de mot afin d'améliorer la correspondance. Pour connaître les valeurs acceptables, consultez metric_spec.use_stemmer.
  • SPLIT_SUMMARIES : détermine si de nouvelles lignes sont ajoutées entre les phrases rougeLsum. Pour connaître les valeurs acceptables, consultez metric_spec.split_summaries.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask

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

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

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

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

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
#
# Summary Metrics:
#
# row_count:      3
# rouge_1/mean:   0.7191161666666667
# rouge_1/std:    0.06765143922270488
# rouge_2/mean:   0.5441118566666666
# ...
# Metrics Table:
#
#                                        response                         reference  ...  rouge_l/score  rouge_l_sum/score
# 0  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.577320           0.639175
# 1  The Great Barrier Reef, a vast coral...  \n    The Great Barrier Reef, the ...  ...       0.552381           0.666667
# 2  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.774775           0.774775

Go

Go

Avant d'essayer cet exemple, suivez les instructions de configuration pour Go décrites dans le guide de démarrage rapide de Vertex AI sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Go.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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
}

Étape suivante