Évaluer les agents d'IA générative

Après avoir créé et évalué votre modèle d'IA générative, vous pouvez l'utiliser pour créer un agent, comme un chatbot. Gen AI Evaluation Service vous permet de mesurer la capacité de votre agent à accomplir les tâches et à atteindre les objectifs de votre cas d'utilisation.

Présentation

Vous disposez des options suivantes pour évaluer votre agent:

  • Évaluation de la réponse finale: évaluez le résultat final d'un agent (il a atteint ou non son objectif).

  • Évaluation de la trajectoire: évaluez le chemin (séquence d'appels d'outils) suivi par l'agent pour obtenir la réponse finale.

Avec le service d'évaluation de l'IA générative, vous pouvez déclencher l'exécution d'un agent et obtenir des métriques pour l'évaluation de la trajectoire et l'évaluation de la réponse finale dans une seule requête du SDK Vertex AI.

Agents compatibles

Gen AI Evaluation Service est compatible avec les catégories d'agents suivantes:

Agents compatibles Description
Agent créé avec le modèle de l'Agent Engine Agent Engine (LangChain sur Vertex AI) est une Google Cloud plate-forme sur laquelle vous pouvez déployer et gérer des agents.
Agents LangChain créés à l'aide du modèle personnalisable de l'Agent Engine LangChain est une plate-forme Open Source.
Fonction d'agent personnalisée La fonction d'agent personnalisée est une fonction flexible qui reçoit une invite pour l'agent et renvoie une réponse et une trajectoire dans un dictionnaire.

Définir des métriques pour l'évaluation des agents

Définissez vos métriques pour l'évaluation de la réponse finale ou de la trajectoire:

Évaluation de la réponse finale

L'évaluation de la réponse finale suit le même processus que l'évaluation de la réponse du modèle. Pour en savoir plus, consultez Définir vos métriques d'évaluation.

Évaluation de la trajectoire

Les métriques suivantes vous aident à évaluer la capacité du modèle à suivre la trajectoire attendue:

Correspondance exacte

Si la trajectoire prévue est identique à la trajectoire de référence, avec exactement les mêmes appels d'outils dans le même ordre, la métrique trajectory_exact_match renvoie un score de 1, sinon 0.

Paramètres d'entrée des métriques

Paramètre d'entrée Description
predicted_trajectory Liste des appels d'outils utilisés par l'agent pour obtenir la réponse finale.
reference_trajectory Utilisation prévue de l'outil pour que l'agent réponde à la requête.

Scores de sortie

Valeur Description
0 La trajectoire prévue ne correspond pas à la référence.
1 La trajectoire prévue correspond à la référence.

Correspondance dans l'ordre

Si la trajectoire prévue contient tous les appels d'outils de la trajectoire de référence dans le même ordre et peut également contenir des appels d'outils supplémentaires, la métrique trajectory_in_order_match renvoie un score de 1, sinon 0.

Paramètres d'entrée des métriques

Paramètre d'entrée Description
predicted_trajectory Trajectoire prévue utilisée par l'agent pour atteindre la réponse finale.
reference_trajectory Trajectoire prévue pour que l'agent réponde à la requête.

Scores de sortie

Valeur Description
0 Les appels d'outils dans la trajectoire prévue ne correspondent pas à l'ordre de la trajectoire de référence.
1 La trajectoire prévue correspond à la référence.

Correspondance dans n'importe quel ordre

Si la trajectoire prédite contient tous les appels d'outil de la trajectoire de référence, mais que l'ordre n'a pas d'importance et qu'elle peut contenir des appels d'outil supplémentaires, la métrique trajectory_any_order_match renvoie un score de 1, sinon 0.

Paramètres d'entrée des métriques

Paramètre d'entrée Description
predicted_trajectory Liste des appels d'outils utilisés par l'agent pour obtenir la réponse finale.
reference_trajectory Utilisation prévue de l'outil pour que l'agent réponde à la requête.

Scores de sortie

Valeur Description
0 La trajectoire prévue ne contient pas tous les appels d'outils de la trajectoire de référence.
1 La trajectoire prévue correspond à la référence.

Précision

La métrique trajectory_precision mesure le nombre d'appels d'outils dans la trajectoire prévue qui sont réellement pertinents ou corrects par rapport à la trajectoire de référence.

La précision est calculée comme suit: comptez le nombre d'actions de la trajectoire prévue qui apparaissent également dans la trajectoire de référence. Divisez ce nombre par le nombre total d'actions dans la trajectoire prévue.

Paramètres d'entrée des métriques

Paramètre d'entrée Description
predicted_trajectory Liste des appels d'outils utilisés par l'agent pour obtenir la réponse finale.
reference_trajectory Utilisation prévue de l'outil pour que l'agent réponde à la requête.

Scores de sortie

Valeur Description
Valeur flottante comprise dans la plage de [0,1] Plus le score est élevé, plus la trajectoire prévue est précise.

Rappel

La métrique trajectory_recall mesure le nombre d'appels d'outils essentiels de la trajectoire de référence qui sont réellement capturés dans la trajectoire prévue.

Le rappel est calculé comme suit: comptez le nombre d'actions de la trajectoire de référence qui apparaissent également dans la trajectoire prédite. Divisez ce nombre par le nombre total d'actions dans la trajectoire de référence.

Paramètres d'entrée des métriques

Paramètre d'entrée Description
predicted_trajectory Liste des appels d'outils utilisés par l'agent pour obtenir la réponse finale.
reference_trajectory Utilisation prévue de l'outil pour que l'agent réponde à la requête.

Scores de sortie

Valeur Description
Valeur flottante comprise dans la plage de [0,1] Plus le score est élevé, plus la trajectoire prévue a un bon rappel.

Utilisation d'un seul outil

La métrique trajectory_single_tool_use vérifie si un outil spécifique spécifié dans la spécification de la métrique est utilisé dans la trajectoire prévue. Il ne vérifie pas l'ordre des appels d'outils ni le nombre de fois où l'outil est utilisé, mais uniquement s'il est présent ou non.

Paramètres d'entrée des métriques

Paramètre d'entrée Description
predicted_trajectory Liste des appels d'outils utilisés par l'agent pour obtenir la réponse finale.

Scores de sortie

Valeur Description
0 L'outil est absent
1 L'outil est présent.

De plus, les deux métriques de performances des agents suivantes sont ajoutées aux résultats d'évaluation par défaut. Vous n'avez pas besoin de les spécifier dans EvalTask.

latency

Durée nécessaire à l'agent pour renvoyer une réponse.

Valeur Description
Un flotteur Calculé en secondes.

failure

Valeur booléenne indiquant si l'appel de l'agent a généré une erreur ou a réussi.

Scores de sortie

Valeur Description
1 Erreur
0 Réponse valide renvoyée

Préparer votre ensemble de données pour l'évaluation des agents

Préparez votre ensemble de données pour l'évaluation finale de la réponse ou de la trajectoire.

Le schéma de données pour l'évaluation de la réponse finale est semblable à celui de l'évaluation de la réponse du modèle.

Pour l'évaluation des trajectoires basée sur le calcul, votre ensemble de données doit fournir les informations suivantes:

Type d'entrée Contenu du champ de saisie
predicted_trajectory Liste des appels d'outils utilisés par les agents pour obtenir la réponse finale.
reference_trajectory (non obligatoire pour trajectory_single_tool_use metric) Utilisation prévue de l'outil pour que l'agent réponde à la requête.

Exemples d'ensembles de données d'évaluation

Les exemples suivants présentent des ensembles de données pour l'évaluation des trajectoires. Notez que reference_trajectory est obligatoire pour toutes les métriques, à l'exception de trajectory_single_tool_use.

reference_trajectory = [
# example 1
[
  {
    "tool_name": "set_device_info",
    "tool_input": {
        "device_id": "device_2",
        "updates": {
            "status": "OFF"
        }
    }
  }
],
# example 2
[
    {
      "tool_name": "get_user_preferences",
      "tool_input": {
          "user_id": "user_y"
      }
  },
  {
      "tool_name": "set_temperature",
      "tool_input": {
          "location": "Living Room",
          "temperature": 23
      }
    },
  ]
]

predicted_trajectory = [
# example 1
[
  {
    "tool_name": "set_device_info",
    "tool_input": {
        "device_id": "device_3",
        "updates": {
            "status": "OFF"
        }
    }
  }
],
# example 2
[
    {
      "tool_name": "get_user_preferences",
      "tool_input": {
          "user_id": "user_z"
      }
    },
    {
      "tool_name": "set_temperature",
      "tool_input": {
          "location": "Living Room",
          "temperature": 23
      }
    },
  ]
]

eval_dataset = pd.DataFrame({
    "predicted_trajectory": predicted_trajectory,
    "reference_trajectory": reference_trajectory,
})

Importer votre ensemble de données d'évaluation

Vous pouvez importer votre ensemble de données dans les formats suivants:

  • Fichier JSONL ou CSV stocké dans Cloud Storage

  • Table BigQuery

  • DataFrame Pandas

Gen AI Evaluation Service fournit des exemples d'ensembles de données publics pour vous montrer comment évaluer vos agents. Le code suivant montre comment importer les ensembles de données publics à partir d'un bucket Cloud Storage:

# dataset name to be imported
dataset = "on-device" # Alternatives: "customer-support", "content-creation"

# copy the tools and dataset file
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/tools.py .
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/eval_dataset.json .

# load the dataset examples
import json

eval_dataset = json.loads(open('eval_dataset.json').read())

# run the tools file
%run -i tools.py

dataset correspond à l'un des ensembles de données publics suivants:

  • "on-device" pour un Assistant Google sur l'appareil, qui contrôle les appareils de la maison. L'agent répond aux requêtes telles que "Programmez la climatisation de la chambre à coucher pour qu'elle soit activée entre 23h et 8h, et désactivée le reste du temps."

  • "customer-support" pour un agent du service client. L'agent répond à des requêtes telles que "Pouvez-vous annuler les commandes en attente et escalader les demandes d'assistance ouvertes ?"

  • "content-creation" pour un agent de création de contenu marketing. L'agent répond à des requêtes telles que "Reprogrammer la campagne X en tant que campagne ponctuelle sur le site de réseau social Y avec un budget réduit de 50 %, uniquement le 25 décembre 2024".

Exécuter l'évaluation de l'agent

Exécutez une évaluation de la trajectoire ou de la réponse finale:

Pour l'évaluation des agents, vous pouvez combiner des métriques d'évaluation des réponses et des métriques d'évaluation des trajectoires, comme dans le code suivant:

single_tool_use_metric = TrajectorySingleToolUse(tool_name='tool_name')

eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[
        "rouge_l_sum",
        "bleu",
        custom_trajectory_eval_metric, # custom computation-based metric
        "trajectory_exact_match",
        "trajectory_precision",
        single_tool_use_metric,
        response_follows_trajectory_metric # llm-based metric
    ],
)
eval_result = eval_task.evaluate(
    runnable=RUNNABLE,
)

Personnalisation des métriques

Vous pouvez personnaliser une grande métrique basée sur un modèle de langage pour l'évaluation des trajectoires à l'aide d'une interface modélisée ou à partir de zéro. Pour en savoir plus, consultez la section sur les métriques basées sur un modèle. Voici un exemple de modèle:

response_follows_trajectory_prompt_template = PointwiseMetricPromptTemplate(
    criteria={
        "Follows trajectory": (
            "Evaluate whether the agent's response logically follows from the "
            "sequence of actions it took. Consider these sub-points:\n"
            "  - Does the response reflect the information gathered during the trajectory?\n"
            "  - Is the response consistent with the goals and constraints of the task?\n"
            "  - Are there any unexpected or illogical jumps in reasoning?\n"
            "Provide specific examples from the trajectory and response to support your evaluation."
        )
    },
    rating_rubric={
        "1": "Follows trajectory",
        "0": "Does not follow trajectory",
    },
    input_variables=["prompt", "predicted_trajectory"],
)

response_follows_trajectory_metric = PointwiseMetric(
    metric="response_follows_trajectory",
    metric_prompt_template=response_follows_trajectory_prompt_template,
)

Vous pouvez également définir une métrique personnalisée basée sur le calcul pour l'évaluation de la trajectoire ou de la réponse comme suit:

def essential_tools_present(instance, required_tools = ["tool1", "tool2"]):
    trajectory = instance["predicted_trajectory"]
    tools_present = [tool_used['tool_name'] for tool_used in trajectory]
    if len(required_tools) == 0:
      return {"essential_tools_present": 1}
    score = 0
    for tool in required_tools:
      if tool in tools_present:
        score += 1
    return {
        "essential_tools_present": score/len(required_tools),
    }

custom_trajectory_eval_metric = CustomMetric(name="essential_tools_present", metric_function=essential_tools_present)

Afficher et interpréter les résultats

Pour l'évaluation de la trajectoire ou de la réponse finale, les résultats de l'évaluation s'affichent comme suit:

Tableaux des métriques d'évaluation des agents

Les résultats de l'évaluation contiennent les informations suivantes:

Métriques de réponse finale

Résultats au niveau de l'instance

Colonne Description
réponse Réponse finale générée par l'agent.
latency_in_seconds Temps nécessaire pour générer la réponse.
échec Indique si une réponse valide a été générée ou non.
score Score calculé pour la réponse spécifiée dans la spécification de la métrique.
Explication Explication du score spécifié dans la spécification de la métrique.

Résultats cumulés

Colonne Description
mean Score moyen pour toutes les instances.
Écart type Écart type pour tous les scores.

Métriques de trajectoire

Résultats au niveau de l'instance

Colonne Description
predicted_trajectory Séquence d'appels d'outils suivie par l'agent pour obtenir la réponse finale.
reference_trajectory Séquence d'appels d'outils attendus.
score Score calculé pour la trajectoire prévue et la trajectoire de référence spécifiées dans la spécification de la métrique.
latency_in_seconds Temps nécessaire pour générer la réponse.
échec Indique si une réponse valide a été générée ou non.

Résultats cumulés

Colonne Description
mean Score moyen pour toutes les instances.
Écart type Écart type pour tous les scores.

Étape suivante

Essayez les notebooks d'évaluation des agents suivants: