Vous pouvez utiliser le module d'évaluation de l'IA générative du SDK Vertex AI pour Python pour évaluer par programmation vos modèles et applications de langage génératif avec l'API Gen AI Evaluation Service. Cette page vous explique comment exécuter des évaluations avec le SDK Vertex AI.
Avant de commencer
Installez le SDK Vertex AI
Pour installer le module d'évaluation de l'IA générative à partir du SDK Vertex AI pour Python, exécutez la commande suivante :
!pip install -q google-cloud-aiplatform[evaluation]
Pour en savoir plus, consultez la section Installer le SDK Vertex AI pour Python.
Authentifier le SDK Vertex AI
Après avoir installé le SDK Vertex AI pour Python, vous devez vous authentifier. Les rubriques suivantes expliquent comment s'authentifier auprès du SDK Vertex AI si vous travaillez en local et dans Colaboratory :
Si vous développez en local, configurez les identifiants par défaut de l'application dans votre environnement local:
Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :
gcloud init
Créez des identifiants d'authentification locaux pour votre compte Google :
gcloud auth application-default login
Un écran de connexion s'affiche. Une fois que vous êtes connecté, vos identifiants sont stockés dans le fichier d'identifiants local utilisé par ADC. Pour en savoir plus sur l'utilisation des ADC dans un environnement local, consultez la page Environnement de développement local.
Si vous travaillez dans Colaboratory, exécutez la commande suivante dans une cellule Colab pour vous authentifier :
from google.colab import auth auth.authenticate_user()
Cette commande ouvre une fenêtre dans laquelle vous pouvez terminer l'authentification.
Comprendre les comptes de service
Le compte de service est utilisé par le service d'évaluation de l'IA générative pour obtenir des prédictions auprès du service de prédiction en ligne pour les métriques d'évaluation basées sur un modèle. Ce compte de service est automatiquement provisionné lors de la première requête adressée au service d'évaluation Gen AI Evaluation Service.
Nom | Description | Adresse e-mail | Rôle |
---|---|---|---|
Agent de service d'évaluation rapide Vertex AI | Compte de service utilisé pour obtenir des prédictions pour l'évaluation basée sur un modèle. | service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com |
roles/aiplatform.rapidevalServiceAgent |
Les autorisations associées à l'agent de service d'évaluation rapide sont les suivantes:
Rôle | Autorisations |
---|---|
Agent de service d'évaluation rapide Vertex AI (roles/aiplatform.rapidevalServiceAgent) | aiplatform.endpoints.predict |
Exécuter votre évaluation
Utilisez la classe EvalTask
pour exécuter des évaluations dans les cas d'utilisation suivants :
Classe EvalTask
La classe EvalTask
vous aide à évaluer des modèles et des applications en fonction de tâches spécifiques. Pour effectuer des comparaisons équitables entre les modèles génératifs, vous devez généralement évaluer à plusieurs reprises de nombreux modèles et modèles de requêtes sur un ensemble de données d'évaluation fixe à l'aide de métriques spécifiques. Il est également important d'évaluer plusieurs métriques simultanément dans une seule exécution d'évaluation.
EvalTask
s'intègre également aux tests Vertex AI Experiments pour vous aider à suivre les configurations et les résultats de chaque exécution d'évaluation. Vertex AI Experiments vous aide à gérer et à interpréter les résultats d'évaluation, ce qui vous permet de prendre des décisions éclairées.
L'exemple suivant montre comment instancier la classe EvalTask
et exécuter une évaluation :
from vertexai.evaluation import (
EvalTask,
PairwiseMetric,
PairwiseMetricPromptTemplate,
PointwiseMetric,
PointwiseMetricPromptTemplate,
MetricPromptTemplateExamples,
)
eval_task = EvalTask(
dataset=DATASET,
metrics=[METRIC1, METRIC2, METRIC3],
experiment=EXPERIMENT_NAME,
)
eval_result = eval_task.evaluate(
model=MODEL,
prompt_template=PROMPT_TEMPLATE,
experiment_run=EXPERIMENT_RUN,
)
Exécuter l'évaluation avec des métriques basées sur un modèle
Pour les métriques basées sur un modèle, utilisez les classes PointwiseMetric
et PairwiseMetric
pour définir des métriques adaptées à vos critères spécifiques. Exécutez des évaluations à l'aide des options suivantes :
Utiliser des exemples de métriques basées sur un modèle
Vous pouvez utiliser directement la constante intégrée Metric Prompt Template Examples
dans le SDK Vertex AI. Vous pouvez également les modifier et les intégrer dans l'interface de définition de métriques en forme libre.
Pour obtenir la liste complète des exemples de modèles de requête de métrique couvrant la plupart des cas d'utilisation clés, consultez la page Modèles de requête de métrique.
L'exemple du SDK Vertex AI suivant montre comment utiliser la classe MetricPromptTemplateExamples
pour définir vos métriques :
# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()
# Display the metric prompt template of a specific example metric
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))
# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Utiliser une interface modélisée de métrique basée sur un modèle
Personnalisez vos métriques en remplissant des champs tels que Criteria
et Rating Rubrics
à l'aide des classes PointwiseMetricPromptTemplate
et PairwiseMetricPromptTemplate
du SDK Vertex AI. Une valeur par défaut est attribuée à certains champs, tels que Instruction
, si vous ne fournissez aucune entrée.
Vous pouvez éventuellement spécifier input_variables
, qui est une liste de champs de saisie utilisés par le modèle de requête de métrique pour générer des résultats d'évaluation basés sur un modèle. Par défaut, la colonne response
du modèle est incluse pour les métriques par point, et les colonnes response
et baseline_model_response
du modèle candidat sont incluses pour les métriques par paire.
Pour en savoir plus, consultez la section "Structurer un modèle de requête de métrique" dans Modèles de requête de métrique.
# Define a pointwise metric with two custom criteria
pointwise_metric_prompt_template = PointwiseMetricPromptTemplate(
criteria={
"fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.",
"entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
},
rating_rubric={
"1": "The response performs well on both criteria.",
"0": "The response is somewhat aligned with both criteria",
"-1": "The response falls short on both criteria",
},
input_variables=["prompt"],
)
custom_text_quality = PointwiseMetric(
metric="custom_text_quality",
metric_prompt_template=pointwise_metric_prompt_template,
)
# Display the serialized metric prompt template
print(custom_text_quality.metric_prompt_template)
# Run evaluation using the defined metric
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Utiliser l'interface du SDK de forme libre de métrique basée sur un modèle
Pour personnaliser plus facilement le modèle de requête de métrique, vous pouvez définir une métrique directement à l'aide de l'interface de forme libre, qui accepte une entrée sous forme de chaîne directe.
# Define a pointwise multi-turn chat quality metric
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.
# Conversation History
{history}
# Current User Prompt
{prompt}
# AI-generated Response
{response}
"""
freeform_multi_turn_chat_quality_metric = PointwiseMetric(
metric="multi_turn_chat_quality_metric",
metric_prompt_template=pointwise_chat_quality_metric_prompt,
)
# Run evaluation using the defined metric
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[freeform_multi_turn_chat_quality_metric],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Exécuter l'évaluation avec des métriques basées sur le calcul
Vous pouvez utiliser des métriques basées sur le calcul de façon autonome ou avec des métriques basées sur un modèle.
# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Personnalisation supplémentaire des métriques
Si vous devez personnaliser davantage vos métriques, par exemple en choisissant un autre modèle d'évaluation pour les métriques basées sur un modèle, ou en définissant une nouvelle métrique basée sur le calcul, vous pouvez utiliser la classe CustomMetric
dans le SDK Vertex AI. Pour en savoir plus, consultez les notebooks suivants :
Étape suivante
Recherchez un modèle de métriques basées sur un modèle.
Essayez un exemple de notebook d'évaluation.