API Gen AI Evaluation Service

Le service d'évaluation de l'IA générative vous permet d'évaluer vos grands modèles de langage (LLM), par point ou par paire, sur plusieurs métriques, avec 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. Le service d'évaluation de l'IA générative renvoie des métriques spécifiques à la tâche d'évaluation.

Les métriques incluent les métriques basées sur un modèle, telles que PointwiseMetric et PairwiseMetric, et les métriques calculées en mémoire, telles que rouge, bleu et les 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 à partir 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 compatibles avec Vertex AI.

Pour en savoir plus sur l'évaluation d'un modèle, consultez la page Présentation du service d'évaluation de l'IA générative.

Limites

Voici les limites du service d'évaluation :

  • Les métriques basées sur un modèle consomment le quota gemini-1.5-pro. Le service d'évaluation de l'IA générative utilise gemini-1.5-pro comme modèle d'arbitrage sous-jacent pour calculer les métriques basées sur un modèle.
  • Le service d'évaluation peut présenter un délai de propagation lors de votre premier appel.

Exemple de syntaxe

Syntaxe permettant d'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/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))

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.

Données permettant d'évaluer la capacité d'une réponse à 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 seule réponse.

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 à répondre 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 la synthèse de deux réponses.

summarization_helpfulness_input

Facultatif : SummarizationHelpfulnessInput.

Entrée permettant d'évaluer la capacité d'une réponse unique à fournir une synthèse, qui contient les détails nécessaires pour remplacer le 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 à 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 donnée à 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 donnée à répondre correctement à une question.

pointwise_metric_input

Facultatif : PointwiseMetricInput.

Entrée pour une évaluation ponctuelle 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.

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

instances.reference

Facultatif : string.

Réponse LLM clé 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

Choisissez l'une des options suivantes :

  • 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 de 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 LLM.

instances.reference

Facultatif : string.

Réponse LLM clé 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 sous-séquence commune la plus longue (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 LLM.

instances.reference

Facultatif : string.

Réponse LLM clé 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 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 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 LLM.

SafetyResult

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

score

float : l'un des types suivants :

  • 0 : non sécurisé
  • 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 LLM.

instance.context

Facultatif : string.

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

GroundednessResult

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

score

float : l'un des types suivants :

  • 0 : non fondé
  • 1: Grounded

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 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: mauvaise traitement
  • 3: 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 LLM.

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

Texte au moment de l'inférence contenant toutes les informations pouvant être utilisées dans la réponse 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 au moment de l'inférence contenant toutes les informations pouvant être utilisées dans la réponse 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 mieux
  • CANDIDATE : la prédiction candidate est mieux
  • 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 LLM.

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

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

SummarizationHelpfulnessResult

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

score

float : l'un des types suivants :

  • 1: inutile
  • 2: plutôt utile
  • 3: Neutre
  • 4: assez 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 LLM.

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

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

SummarizationVerbosityResult

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

score

float. Un des suivants:

  • -2: sec
  • -1: plutôt sec
  • 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 LLM.

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

Texte au moment de l'inférence contenant toutes les informations pouvant être utilisées dans la réponse 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

{
  "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 au moment de l'inférence contenant toutes les informations pouvant être utilisées dans la réponse 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 mieux
  • CANDIDATE : la prédiction candidate est mieux
  • 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 LLM.

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

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

QuestionAnsweringRelevancyResult

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

score

float : l'un des types suivants :

  • 1: non pertinent
  • 2: peu pertinent
  • 3: Neutre
  • 4 : moyennement 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 LLM.

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

Texte au moment de l'inférence contenant toutes les informations pouvant être utilisées dans la réponse 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 utile
  • 3: Neutre
  • 4: assez 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.

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

instance.reference

Facultatif : string.

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

instance.instruction

Facultatif : string.

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

instance.context

Facultatif : string.

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

QuestionAnsweringCorrectnessResult

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

score

float : l'un des types suivants :

  • 0: Mauvaise réponse.
  • 1: Bonne réponse.

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

Requis : PointwiseMetricSpec

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

metric_spec.metric_prompt_template

Requis : string

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

instance

Requis : 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"}. Il permet d'afficher metric_spec.metric_prompt_template.

PointwiseMetricResult

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

score

float : score du résultat d'évaluation de la métrique ponctuelle.

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

Requis : PairwiseMetricSpec

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

metric_spec.metric_prompt_template

Requis : string

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

instance

Requis : 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"}. Il permet d'afficher metric_spec.metric_prompt_template.

PairwiseMetricResult

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

score

float : score du résultat de l'évaluation de la métrique par paires.

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 au texte de sortie du modèle. La valeur tool_call est une chaîne sérialisée JSON d'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 au texte de sortie du modèle. La valeur tool_call est une chaîne sérialisée JSON d'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 de l'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 au texte de sortie du modèle. La valeur tool_call est une chaîne sérialisée JSON d'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 au texte de sortie du modèle. La valeur tool_call est une chaîne sérialisée JSON d'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.

Exemples

Évaluer un résultat

L'exemple suivant montre comment appeler l'API d'évaluation de l'IA générative 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 project_id and location
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)

É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é de la synthèse par paire.

REST

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

  • PROJECT_ID : l'ID de votre projet.
  • 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 d'inférence contenant toutes les informations pertinentes, pouvant être utilisé dans la réponse 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

Obtenir le score Rouge

L'exemple suivant appelle l'API Gen AI Evaluation Service pour obtenir le score Rouge d'une prédiction, 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 : l'ID de votre projet.
  • 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 la page sur 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

Étape suivante