Évaluations Cortex Agent

Les évaluations Cortex Agent vous permettent de surveiller le comportement et les performances de votre agent. Évaluez votre agent par rapport à la réalité de terrain et aux métriques d’évaluation sans référence. Lors de l’évaluation, l’activité de votre agent est suivie et surveillée afin que vous puissiez vous assurer que chaque étape du processus progresse vers votre objectif final.

Snowflake propose les métriques suivantes pour évaluer votre agent par rapport à :

  • L’exactitude de la réponse – La réponse d’un agent à votre requête préparée correspond à une réponse attendue. Cette métrique est particulièrement utile lorsque l’ensemble de données alimentant votre Cortex Agent est statique.

  • La cohérence logique – Mesure la cohérence entre les instructions des agents, la planification et les appels aux outils. Cette métrique est sans référence, ce qui signifie que vous n’avez pas besoin de préparer des informations dans votre ensemble de données pour l’évaluation.

Snowflake vous permet également de créer des métriques d’évaluation personnalisées qui utilisent le processus d’évaluation des LLM pour mesurer le contexte critique pour le domaine et le cas d’utilisation de votre Agent. Les métriques personnalisées utilisent une méthodologie d’invite et de notation LLM qui est transmise au système d’évaluation pour produire un score.

Pour plus de détails sur la manière dont les évaluations d’agent sont effectuées sur Snowflake, notamment sur le système d’évaluation LLM utilisé pour les évaluations sans référence, voir le blog d’ingénierie Snowflake`Quel est le GPA de votre Agent ? Un cadre pour l’évaluation de la fiabilité des agents AI<https://www.snowflake.com/en/engineering-blog/ai-agent-evaluation-gpa-framework/>`_ _. Pour un exemple d’exécution programmatique d’une Évaluation des agents, consultez le guide ` Prise en main des évaluations Cortex Agent<https://www.snowflake.com/en/developers/guides/getting-started-with-cortex-agent-evaluations/>`_ _.

Exigences en matière de contrôle d’accès

La possibilité d’effectuer une évaluation Cortex Agent nécessite un rôle avec les caractéristiques suivantes :

  • Le rôle DATABASE ROLE SNOWFLAKE.CORTEX_USER

  • L’autorisation EXECUTETASKONACCOUNT

  • L’autorisation USAGE sur la base de données contenant votre agent

  • Les autorisations suivantes sur le schéma contenant votre agent :

    • USAGE

    • CREATE FILE FORMAT ON SCHEMA

    • CREATE TASK

    • EXECUTE TASK

  • L’autorisation USAGE sur la base de données contenant vos données d’évaluation

  • Les autorisations suivantes sur le schéma contenant vos données d’évaluation :

    • USAGE

    • EXECUTE TASK

    • Si vous créez un ensemble de données à partir d’une table d’entrée, CREATE DATASET ON SCHEMA

  • Le privilège USAGE ouOWNERSHIP sur votre agent

  • Le privilège MONITOR ouOWNERSHIP sur votre agent

  • Si vous utilisez une configuration d’évaluation d’agent,le privilège READ sur la zone de préparation contenant le fichier de configuration.

Si l’agent évalué utilise des outils, votre rôle doit également avoir accès à chacun d’entre eux.

En outre, si vous utilisez des évaluations dans|sf-web-interface|, le rôle que vous utilisez pour exécuter ou inspecter une évaluation a besoin du privilège USAGE sur votre entrepôt par défaut.

Préparer un ensemble de données d’évaluation

Avant de démarrer une évaluation Cortex Agent, préparez une table contenant vos entrées d’évaluation. Cette table est utilisée pour créer un ensemble de données sur lequel votre évaluation peut être exécutée. Pour en savoir plus sur les ensembles de données dans Snowflake, voir:doc:/developer-guide/snowflake-ml/dataset.

Cortex Code

Pour que Cortex Code vous aide à créer un ensemble de données pour votre évaluation, utilisez la sous-compétence dataset-curation de la compétence cortex-agent Cortex Code. Pour plus d’informations sur les compétences de Cortex Code, voir:ref:Code CortexCLI - Compétences <label-extensibility_skills>.

Format de l’ensemble de données

La table utilisée pour créer un ensemble de données à des fins d’évaluation dispose d’une colonne de requête d’entrée de type VARCHAR qui représente votre requête, et une colonne de sortie de type VARIANT qui contient une description du comportement attendu de l’agent. Cette colonne de sortie unique est utilisée comme réalité de terrain par le LLM juge.

Les valeurs de la colonne de sortie ont une clé, ground_truth_output. La valeur de cette clé est utilisée pour évaluer l’exactitude des réponses. Les LLM juges utilisent la réalité de terrain pour évaluer la sortie de votre agent en l’incluant dans leur invite.

Astuce

Profitez du fait que la réalité de terrain est incluse dans une invite LLM en utilisant le langage naturel pour décrire un type de réponse, en plus des correspondances de réponse exactes ou sémantiques. Par exemple, vous pouvez fournir une réalité de terrain de Output is in the following JSON format ... suivi d’une chaîne contenant soit une description de la structure, soit un exemple de JSON lui-même. Si vous avez besoin d’un examen plus approfondi de la sortie basé sur une invite personnalisée complète, créez une métrique personnalisée.

Pour apporter un ensemble de données JSON dans une table Snowflake, utilisez la fonction /sql-reference/functions/parse_json`SQL. L’exemple suivant crée une nouvelle table``agent_evaluation_data` à utiliser pour un ensemble de données d’évaluation, et insère une ligne pour la requête d’entrée``What was the temperature in San Francisco on August 2nd 2019?`` avec la réalité de terrain de The temperature was 14 degrees Celsius in San Francisco on August 2nd, 2019..

CREATE OR REPLACE TABLE agent_evaluation_data (
    input_query VARCHAR
);

INSERT INTO agent_evaluation_data
  SELECT
    'What was the temperature in San Francisco on August 2nd 2019?',
    PARSE_JSON('
      {
        "ground_truth_output": "The temperature was 14 degrees Celsius in San Francisco on August 2nd, 2019.",
      }
    ');

Important

Les fonctions OBJECT_CONSTRUCT et:doc:/sql-reference/functions/array_construct retournent des résultats non-VARIANT. Utilisez une fonction qui produit une VAIRANT de votre entrée brute comme PARSE_JSON , ou appelez TO_VARIANT pour garantir le type de valeur.

Les données que vous fournissez dans la colonne ground_truth qui ne sont pas utilisées par une métrique sélectionnée sont ignorées. Lorsque vous effectuez une exécution d’évaluation avec uniquement des métriques sans référence, vous pouvez laisser la colonne de sortie vide.

Lors de l’exécution de votre première évaluation, vous aurez la possibilité de créer un nouvel ensemble de données à partir d’une table existante.

Démarrer une évaluation d’agent

Cortex Code

Pour que Cortex Code exécute une évaluation, utilisez la sous-compétence evaluate-cortex-agent de la compétence Cortex Code cortex-agent. Pour plus d’informations sur les compétences de Cortex Code, voir:ref:Code CortexCLI - Compétences <label-extensibility_skills>.

Snowsight

Note

Les évaluations d’agent s’exécutent en tant que rôle actuellement sélectionné dans Snowsight, et non votre rôle par défaut. Assurez-vous qu’un rôle disposant des autorisations adéquates est actif avant de démarrer une évaluation.

Commencez votre évaluation d’un Cortex Agent en procédant comme suit :

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez AI & ML » Agents.

  3. Sélectionnez l’agent sur lequel vous souhaitez effectuer une évaluation.

  4. Sélectionnez l’onglet Evaluations.

  5. Sélectionnez New evaluation run.

    La fenêtre modale New evaluation run s’ouvre.

  6. Dans le champ Name, indiquez un nom pour votre d’évaluation. Ce nom doit être unique pour l’agent en cours d’évaluation.

  7. En option : Dans le champ Description, fournissez des commentaires pour l’évaluation.

  8. Sélectionnez Next.

    Cette action vous permet de passer à la fenêtre modale Select dataset.

  9. Sélectionnez l’ensemble de données utilisé pour évaluer votre agent. Vous pouvez choisir entre Existing dataset et Create new dataset.

    Pour utiliser un ensemble de données existant :

    1. Dans la liste Database and schema, sélectionnez la base de données et le schéma contenant votre ensemble de données.

    2. Dans la liste Select dataset, sélectionnez votre ensemble de données.

    Pour créer un nouvel ensemble de données :

    1. Dans la liste Source table - Database and schema, sélectionnez la base de données et le schéma contenant la table que vous souhaitez importer dans un ensemble de données.

    2. Dans la liste Select source table, sélectionnez votre tableau source.

    3. Dans la liste New dataset location - Database and schema, sélectionnez la base de données et le schéma où placer votre nouvel ensemble de données.

    4. Dans le champ Dataset name, saisissez le nom de votre ensemble de données. Ce nom doit être unique parmi les objets de niveau schéma de votre schéma sélectionné.

  10. Sélectionnez Next.

    Cette action vous permet de passer à la fenêtre modale Select metrics.

  11. Dans la liste Input query, sélectionnez la colonne de votre ensemble de données qui contient les requêtes d’entrée.

  12. Pour chacune des System metrics, activez le bouton bascule pour toute métrique que vous souhaitez inclure dans votre évaluation. Sélectionnez la colonne de votre ensemble de données contenant la réalité de terrain de votre évaluation.

  13. (Facultatif) Pour réaliser une évaluation personnalisée, basculez sur Custom metrics.

    1. Sélectionnez la base de données et le schéma contenant la zone de préparation dans laquelle votre configuration d’évaluation personnalisée est stockée.

    2. Sélectionnez la zone de préparation dans laquelle votre configuration d’évaluation personnalisée est stockée.

    3. Sélectionnez le fichier de configuration YAML pour votre évaluation personnalisée.

      Note

      Dans Snowsight, seules les définitions d’évaluation personnalisées sont chargées à partir de votre configuration YAML. Le reste du fichier YAML doit encore être valide. Pour la spécification du YAML de l’évaluation, voir:ref:label-cortex_agent_evaluation_yaml_spec.

    4. Pour chaque métrique personnalisée, activez le bouton bascule si vous souhaitez qu’elle soit incluse dans votre évaluation. Sélectionnez la colonne de votre ensemble de données contenant la réalité de terrain pour cette évaluation.

  14. Sélectionnez Create pour créer l’évaluation et démarrer le processus d’évaluation.

À tout moment, vous pouvez sélectionner Cancel pour annuler la création de l’évaluation, ou sélectionnez Prev pour revenir à la fenêtre modale précédente.

SQL

Pour démarrer ou récupérer des informations sur une évaluation avec SQL, utilisez la fonction EXECUTE_AI_EVALUATION. Cette fonction a les arguments obligatoires suivants :

  • evaluation_job : Une valeur de chaîne de “START” ou “STATUS”.

  • run_parameters : Un SQL:ref:OBJECT<label-data_type_object> contenant la clé run_name, avec une valeur du nom de votre exécution.

  • config_file_path: Un chemin d’accès au fichier de zone de préparation pointant vers le fichier YAML de configuration de votre exécution. Ce chemin ne peut pas être une URL signée. Pour la spécification du YAML de l’évaluation, voir:ref:label-cortex_agent_evaluation_yaml_spec.

Utilisez la valeur evaluation_job “START “ pour démarrer une évaluation. L’exemple suivant démarre une exécution appelée run-1 à l’aide de la configuration d’évaluation de l’agent depuis``@eval_db.eval_schema.metrics/agent_evaluation_config.yaml`` :

CALL EXECUTE_AI_EVALUATION(
  'START',
  OBJECT_CONSTRUCT('run_name', 'run-1'),
  '@eval_db.eval_schema.metrics/agent_evaluation_config.yaml'
);

Après le démarrage d’une exécution, vous pouvez interroger sa progression à l’aide de la valeur evaluation_job “STATUS”. Cet appel renvoie une table au format utilisé pour les AI Exécutions de l’observabilité. L’exemple suivant interroge l’état de l’évaluation de l’agent lancée à partir de l’exemple précédent :

CALL EXECUTE_AI_EVALUATION(
  'STATUS',
  OBJECT_CONSTRUCT('run_name', 'run-1'),
  '@eval_db.eval_schema.metrics/agent_evaluation_config.yaml'
);

Astuce

Vous pouvez appeler la fonction EXECUTE_AI_EVALUATION depuis une :doc:` tâche </user-guide/tasks-intro>` pour effectuer régulièrement une évaluation ou vérifier l’état de l’une d’elles.

Inspecter les résultats de l’évaluation

Les résultats de l’évaluation comprennent des informations sur les métriques demandées, des détails sur les threads de raisonnement de l’agent et des informations sur la zone de préparation de planification LLM pour chaque trace exécutée dans le thread.

Cortex Code

Cortex Code propose deux sous-compétences de la compétence cortex-agent. Utilisez la sous-compétence investigate-cortex-agent-evals pour inspecter les évaluations et trouver des problèmes dans votre configuration ou vos données. Utilisez la sous-compétence optimize-cortex-agent pour prendre les résultats des évaluations terminées et améliorer les performances de votre agent.

Snowsight

L’onglet Evaluations pour un agent dans Snowsight vous donne une vue d’ensemble de chaque exécution d’évaluation et un résumé de ses résultats.

Pour voir les résultats de l’évaluation dans|sf-web-interface| :

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez AI & ML » Agents.

  3. Sélectionnez l’agent sur lequel vous souhaitez effectuer une évaluation.

  4. Sélectionnez l’onglet Evaluations.

Listing des exécutions d’évaluation

Le résumé des informations d’exécution pour chaque exécution comprend :

  • RUN NAME – Le nom de l’exécution de l’évaluation.

  • # OF RECORDS – Le nombre de requêtes effectuées et traitées dans le cadre de l’exécution.

  • STATUS — L’état de l’exécution de l’évaluation, qui est l’un des suivants :

    • Indicateur de réussite – Toutes les entrées ont été évaluées et les résultats sont disponibles.

    • Un spinner s’affiche – L’exécution est en cours, aucune information n’est encore disponible.

    • Indicateur d'avertissement – L’exécution a rencontré une erreur à un moment donné. Certaines ou toutes les métriques peuvent être indisponibles pour l’exécution.

  • DATASET – Nom de l’ensemble de données utilisé pour l’évaluation.

  • AVG DURATION – La durée moyenne de l’exécution d’une requête d’entrée pour l’exécution.

  • LOGICAL CONSISTENCY – Moyenne sur toutes les entrées de l’évaluation de la cohérence logique pour l’exécution, si demandé.

  • DESCRIPTION – La description de l’exécution de l’évaluation.

  • CREATED – L’heure à laquelle l’exécution a été créée et a démarré.

Chaque métrique personnalisée évaluée pour cette exécution reçoit également sa propre colonne, définie par la valeur name de la métrique d’évaluation. Pour plus d’informations sur les métriques personnalisées, voir:ref:label-agent_evaluation_custom_metric.

Vue d’ensemble de l’exécution de l’évaluation

Lorsque vous sélectionnez une exécution individuelle dans Snowsight, la vue d’ensemble de l’exécution vous est présentée. Cette vue d’ensemble comprend des moyennes récapitulatives pour chaque métrique évaluée au cours de l’exécution et un résumé de chaque exécution d’entrée. La vue d’ensemble de chaque exécution d’entrée comprend :

  • STATUS — L’état de l’exécution de l’évaluation, qui est l’un des suivants :

    • Indicateur de réussite – Toutes les entrées ont été évaluées et les résultats sont disponibles.

    • Un spinner s’affiche – L’exécution est en cours, aucune information n’est encore disponible.

    • Indicateur d'avertissement – L’exécution a rencontré une erreur à un moment donné. Certaines ou toutes les métriques peuvent être indisponibles pour l’exécution.

  • INPUT – La requête d’entrée utilisée pour l’évaluation.

  • OUTPUT — La sortie produite par l’agent.

  • DURATION – Le temps nécessaire pour traiter l’entrée et produire la sortie.

  • LOGICAL CONSISTENCY – L’évaluation de la cohérence logique de l’entrée, si elle est demandée.

  • EVALUATED – L’heure à laquelle l’entrée a été traitée.

Chaque métrique personnalisée évaluée pour cette exécution reçoit également sa propre colonne, définie par la valeur name de la métrique d’évaluation. Pour plus d’informations sur les métriques personnalisées, voir:ref:label-agent_evaluation_custom_metric.

Détails de l’enregistrement

Lorsque vous sélectionnez une entrée individuelle dans|sf-web-interface|, la vue Record details vous est présentée. Cette vue comprend trois volets :Evaluation results ,:ui:Thread details et:ui:Trace details .

Résultat d’évaluation

Les résultats de votre évaluation sont présentés ici en détail. Chaque métrique possède sa propre zone de présentation de la moyenne globale des entrées, qui peut être sélectionnée pour afficher une fenêtre contextuelle contenant plus d’informations. Cette fenêtre contextuelle contient une répartition du nombre d’exécutions qui ont eu lieu avec une précision élevée (80 % ou plus de précision), avec une précision moyenne (30 % ou plus de précision, mais pas une précision élevée), et qui ont échoué.

Détails du thread

Informations consignées lors de l’exécution de chaque thread d’agent. Cela inclut la planification et la génération de réponses par défaut, ainsi qu’une trace de thread pour chaque outil que l’agent a invoqué pendant ce thread.

Détails de la trace

Chaque volet de trace comprend des informations d’entrée, de traitement et de sortie relatives à cette zone de préparation de l’exécution de l’agent. Ces informations sont les mêmes que celles fournies par la :ref:` surveillance de l’agent <label-cortex_agent_log_info>`.

SQL

Pour récupérer des détails d’évaluation bruts, utilisez la fonction GET_AI_EVALUATION_DATA (SNOWFLAKE.LOCAL). Cette fonction a les arguments obligatoires suivants :

  • database : Base de données contenant l’agent.

  • schema : Schéma contenant l’agent.

  • agent_name : Nom de l’agent.

  • agent_type : La constante de chaîne “CORTEX AGENT”. La valeur est insensible à la casse.

  • run_name : Le nom de l’exécution de l’évaluation à récupérer.

Cette fonction renvoie une table de données d’événements décrite dans Format de la table des résultats de l’évaluation . L’exemple suivant affiche les détails d’évaluation complets d’une exécution appelée run-1, où l’agent est nommé``evaluated_agent`` stocké sur le schéma``eval_db.eval_schema`` :

SELECT * FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_EVALUATION_DATA(
  'eval_db',
  'eval_schema',
  'evaluated_agent',
  'CORTEX AGENT',
  'run-1')
);

Traces des requêtes pour un seul enregistrement

Pour accéder à un seul enregistrement d’une trace d’évaluation, utilisez la fonction GET_AI_RECORD_TRACE (SNOWFLAKE.LOCAL). Cette fonction a les arguments obligatoires suivants :

  • database : Base de données contenant l’agent.

  • schema : Schéma contenant l’agent.

  • agent_name : Nom de l’agent.

  • agent_type : La constante de chaîne “CORTEX AGENT”. La valeur est insensible à la casse.

  • record_id : L’ID d’enregistrement pour filtrer.

Cette fonction renvoie une table de données d’événements décrite dans Format de la table des résultats de l’évaluation . L’exemple suivant affiche la trace de l’enregistrement 9346efc3-5dd6-4038-9b1a-72ca3d3b768c, où l’agent est nommé``evaluated_agent`` stocké sur le schéma``eval_db.eval_schema`` :

SELECT * FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_RECORD_TRACE(
  'eval_db',
  'eval_schema',
  'evaluated_agent',
  'CORTEX AGENT',
  '9346efc3-5dd6-4038-9b1a-72ca3d3b768c'
));

Erreurs et avertissements d’évaluation de la requête pour une exécution

Pour accéder aux journaux des avertissements et des erreurs qui se sont produits au cours d’une exécution d’évaluation, utilisez la fonction GET_AI_OBSERVABILITY_LOGS (SNOWFLAKE.LOCAL). Cette fonction a les arguments obligatoires suivants :

  • database : Base de données contenant l’agent.

  • schema : Schéma contenant l’agent.

  • agent_name : Nom de l’agent.

  • agent_type : La constante de chaîne “CORTEX AGENT”. La valeur est insensible à la casse.

Cette fonction renvoie une table de données d’événements décrite dans Format de la table des résultats de l’évaluation . L’exemple suivant vérifie les erreurs et les avertissements pour une exécution appelée run-1, où l’agent est nommé``evaluated_agent`` stocké sur le schéma``eval_db.eval_schema``:

SELECT * FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_LOGS(
  'eval_db',
  'eval_schema',
  'evaluated_agent',
  'CORTEX AGENT')
)
  WHERE TRUE
  AND (record:"severity_text"='ERROR' or record:"severity_text"='WARN')
  AND record_attributes:"snow.ai.observability.run.name"='run-1';

Note

Les champs de record et``record_attributes`` sont susceptibles d’être modifiés, mais la présence des champs``record: »severity_text »`` et``record_attributes: »snow.ai.observability.run.name »`` est garantie dans les journaux d’observabilité AI.

Spécification du YAML de l’évaluation de l’agent

Pour définir le fichier YAML pour configurer une évaluation d’agent, y compris la définition de métriques personnalisées, il existe trois clés de premier niveau :

  • (Facultatif) dataset : Une définition de la manière de créer un ensemble de données pour l’évaluation. Cette valeur est facultative lorsque vous utilisez une spécification de YAML pour démarrer une évaluation dans Snowsight, ou si vous utilisez un ensemble de données existant.

  • evaluation : Paramètres de l’agent à évaluer.

  • metrics : Les métriques enregistrées lors d’un cycle d’évaluation, y compris les définitions des métriques personnalisées.

Définition de l’ensemble de données

La valeur dataset définit un nouvel ensemble de données à partir des données de table existantes, des colonnes de mappage pour la requête d’entrée et de la réalité de terrain. Pour la structure nécessaire à votre colonne ground_truth, voir Format de l’ensemble de données. Les clés de la valeur dataset sont :

  • dataset_type : La chaîne constante « CORTEX AGENT ». La valeur est insensible à la casse.

  • table_name : Nom complet de la table à utiliser pour le contenu de l’ensemble de données.

  • dataset_name : Le nom de l’ensemble de données créé.

  • column_mapping : Le mappage de la colonne d’entrée d’évaluation requise``query_text`` et de la colonne de sortie``ground_truth`` aux colonnes de la table à partir de laquelle créer l’ensemble de données.

L’ensemble de données obtenu est stocké dans la même base de données et le même schéma que la table à partir de laquelle il est construit.

L’exemple de définition d’ensemble de données suivant montre un ensemble de données nommé evaluation_input créé à partir de la table evals_db.evals_schema.evaluation_data, en utilisant la user_question en entrée et``expected_outcome`` pour définir la réalité de terrain :

dataset:
 dataset_type: "CORTEX AGENT"
 table_name: "evals_db.evals_schema.evaluation_data"
 dataset_name: "evaluation_input"
 column_mapping:
   query_text: "user_question"
   ground_truth: "expected_outcome"

Configuration d’un agent

La valeur evaluation définit la configuration sur laquelle l’agent doit effectuer une évaluation. Les clés de la valeur evaluation sont :

  • agent_params : Dictionnaire décrivant l’agent pour lequel l’évaluation doit être effectuée. Cette valeur utilise les clés :

    • agent_name : Le nom de l’agent à évaluer.

    • agent_type : La chaîne constante « CORTEX AGENT ». La valeur est insensible à la casse.

  • (Facultatif) run_params : Métadonnées permettant d’identifier cette exécution d’évaluation. Cette valeur utilise les clés :

    • (Facultatif) label : L’étiquette pour cette évaluation.

    • (Facultatif) description : Une description détaillée de l’évaluation.

  • source_metadata : Dictionnaire décrivant l’ensemble de données utilisé pour l’évaluation. Cette valeur utilise les clés :

    • type : La constante de chaîne « DATASET ». La valeur est insensible à la casse.

    • dataset_name : le nom de l’ensemble de données à utiliser.

L’exemple de configuration d’agent suivant exécute un agent nommé evaluated_agent avec l’étiquette Basic evaluation, utilisant l’ensemble de données evaluation_input :

evaluation:
 agent_params:
   agent_name: "evaluated_agent"
   agent_type: "CORTEX AGENT"
  run_params:
   label: "Basic evaluation"
  source_metadata:
   type: "DATASET"
   dataset_name: "evaluation_input"

Sélection de métriques

La valeur metrics est une séquence de métriques à évaluer, y compris vos propres définitions de métriques personnalisées. Les valeurs acceptées pour les métriques prédéfinies sont les suivantes :

  • answer_correctness : Mesurez la correction de la réponse de l’agent par rapport à la sortie de la réalité de terrain.

  • logical_consistency : Mesurez la cohérence des instructions de l’agent, de la planification et des appels d’outils. Cette métrique est sans référence et n’utilise pas d’ensemble de données.

Définition d’une métrique personnalisée

Vous pouvez définir votre propre métrique personnalisée en fournissant un identificateur, une invite et des plages de score. L’invite que vous fournissez est transmise à un LLM juge ainsi que les traces d’exécution pour réaliser votre évaluation personnalisée. Les métriques personnalisées ont les paires clé-valeur requises suivantes :

  • name : Nom de la métrique.

  • score_ranges : Un mappage qui définit des plages de scores de qualité faible, moyenne et élevée. Ce mappage utilise les clés :

    • min_score : La plage de scores utilisée pour identifier les résultats de mauvaise qualité, sous la forme d’une séquence à deux éléments de la limite inférieure inclusive à la limite supérieure exclusive.

    • median_score : La plage de scores utilisée pour identifier les résultats de qualité moyenne, sous la forme d’une séquence à deux éléments de la limite inférieure inclusive à la limite supérieure inclusive.

    • max_score : La plage de scores utilisée pour identifier les résultats de bonne qualité, sous la forme d’une séquence à deux éléments de la limite inférieure exclusive à la limite supérieure inclusive.

  • prompt : Le modèle d’invite à transmettre au LLM juge avec les données de trace d’exécution de l’agent.

    Important

    Ce modèle doit inclure un mécanisme de notation qui produit une valeur numérique représentée dans les plages fournies pour score_ranges.

L’invite d’une métrique personnalisée peut faire référence aux données de trace générées par l’agent lors d’une exécution d’évaluation. Snowflake transmet la trace entière comme entrée au LLM juge, mais vous pouvez mettre en évidence certaines informations en utilisant une chaîne de remplacement qui fait référence à des données dans une colonne GET_AI_RECORD_TRACE directement. Les chaînes de remplacement suivantes sont disponibles :

Chaîne de remplacement

Colonne GET_AI_RECORD_TRACE

{{input}}

INPUT

{{output}}

OUTPUT

{{ground_truth}}

GROUND_TRUTH

{{tool_info}}

TOOL

{{start_timestamp}}

START_TIMESTAMP

{{duration}}

DURATION_MS

{{span_id}}

SPAN_ID

{{span_type}}

SPAN_TYPE

{{span_name}}

SPAN_NAME

{{llm_model}}

LLM_MODEL

{{error}}

ERROR

{{status}}

STATUS

Exemple de configuration des métriques

L’exemple suivant définit une configuration de métriques qui permet les contrôles de l’exactitude des réponses et de la cohérence logique, ainsi que la définition d’une métrique relevance personnalisée qui renvoie un score compris entre 1 et 10 basé sur la comparaison entre la réalité de terrain et la sortie de l’agent :

metrics:
  # Built-in metrics
  - "answer_correctness"
  - "logical_consistency"
  # Custom metric with prompt
  - name: "relevance"
    score_ranges:
      min_score: [1, 3]
      median_score: [4, 6]
      max_score: [7, 10]
    prompt: |
      Evaluate the relevance of the agent's response to the user's query.
      Rate from 1-10 where:
      1 = Completely irrelevant
      4 = Somewhat irrelevant
      6 = Neutral
      8 = Mostly relevant
      10 = Highly relevant and on-topic

      You can compare the {{output}} with the {{ground_truth}} to help you understand if the contents are relevant or not

      Consider:
      - Does the response address the user's question?
      - Is the information provided appropriate to the context?
      - Are there any tangential or off-topic elements?

Exemple de configuration complet

La combinaison de toutes les sections d’exemple précédentes donne une configuration complète de l’évaluation de l’agent :

# Optional: Create dataset before running evaluation
dataset:
  dataset_type: "CORTEX AGENT"
  table_name: "EVALS_DB.EVALS_SCHEMA.EVALUATION_DATA"
  dataset_name: "EVALUATION_INPUT"
  column_mapping:
    query_text: "user_question"
    ground_truth: "expected_outcome"

# Evaluation task configuration
evaluation:
 agent_params:
   agent_name: "evaluated_agent"
   agent_type: "CORTEX AGENT"
  run_params:
   label: "Basic evaluation"
  source_metadata:
   type: "DATASET"
   dataset_name: "EVALUATION_INPUT"

  # Built-in metrics (simple strings)
  - "answer_correctness"
  - "logical_consistency"

  # Custom metric definition
  - name: "relevance"
    score_ranges:
      min_score: [1, 3]
      median_score: [4, 6]
      max_score: [7, 10]
    prompt: |
      Evaluate the relevance of the agent's response to the user's query.
      Rate from 1-10 where:
      1 = Completely irrelevant
      4 = Somewhat irrelevant
      6 = Neutral
      8 = Mostly relevant
      10 = Highly relevant and on-topic

      You can compare the {{output}} with the {{ground_truth}} to help you understand if the contents are relevant or not

      Consider:
      - Does the response address the user's question?
      - Is the information provided appropriate to the context?
      - Are there any tangential or off-topic elements?

Chargement d’une configuration vers une zone de préparation

Les configurations d’évaluation d’agent doivent disposer d’un format de fichier spécifique pour que Snowflake puisse les analyser. L’extrait suivant montre la création du yaml_file_format nécessaire sur le schéma evals_db.evals_schema, puis crée la zone de préparation evaluation_config pour charger une configuration d’agent vers :

CREATE OR REPLACE FILE FORMAT evals_db.evals_schema.yaml_file_format
  TYPE = 'CSV'
  FIELD_DELIMITER = NONE
  RECORD_DELIMITER = '\n'
  SKIP_HEADER = 0
  FIELD_OPTIONALLY_ENCLOSED_BY = NONE
  ESCAPE_UNENCLOSED_FIELD = NONE;

CREATE OR REPLACE STAGE evals_db.evals_schema.evaluation_config
  FILE_FORMAT = evals_db.evals_schema.yaml_file_format;

Chargez votre configuration vers une zone de préparation créée via|sf-web-interface| en accédant au menu de navigation, sélectionnez Ingestion`|raa|:ui:`Add Data et sélectionnez Load files into a Stage. Vous pouvez également utiliser la commande SQL:doc:/sql-reference/sql/put pour charger un fichier YAML local. L’exemple suivant illustre la copie du fichier local``/Users/dev/evaluation_config.yaml`` vers la zone de préparation``evals_db.evals_schema.evaluation_config`` :

PUT file:///Users/dev/evaluation_config.yaml @evals_db.evals_schema.evaluation_config
  AUTO_COMPRESS='false'
  OVERWRITE=TRUE;

Si vous créez votre YAML dans un espace de travail, vous pouvez le copier de votre espace de travail actif vers une zone de préparation. L’exemple suivant copie le fichier evaluation_config.yaml de votre espace de travail vers la zone de préparation``evals_db.evals_schema.evaluation_config`` :

COPY FILES INTO @evals_db.evals_schema.evaluation_config
  FROM 'snow://workspace/USER$.PUBLIC.DEFAULT$/versions/live'
  FILES=('custom_metric_config.yaml');

Astuce

Snowflake recommande de conserver votre fichier YAML non compressé.

Format de la table des résultats de l’évaluation

Les fonctions qui renvoient des informations sur une évaluation de Cortex Agent produisent toutes une table avec les colonnes suivantes :

Colonne

Type de données

Description

RECORD_ID

VARCHAR

L’identificateur unique attribué par Snowflake pour cet enregistrement d’évaluation.

INPUT_ID

VARCHAR

L’identificateur unique attribué par Snowflake pour cette entrée d’évaluation.

REQUEST_ID

VARCHAR

L’identificateur unique attribué par Snowflake pour cette demande.

TIMESTAMP

TIMESTAMP_TZ

L’heure (en UTC ) à laquelle la requête a été faite.

DURATION_MS

INT

Temps, en millisecondes, nécessaire à l’agent pour renvoyer une réponse.

INPUT

VARCHAR

La chaîne de requête utilisée en entrée pour cet enregistrement d’évaluation.

OUTPUT

VARCHAR

La réponse renvoyée par Cortex Agent pour cet enregistrement d’évaluation.

ERROR

VARCHAR

Informations sur les erreurs éventuelles pouvant survenir lors de la requête.

GROUND_TRUTH

VARCHAR

Les informations de réalité de terrain utilisées pour évaluer la sortie de Cortex Agent de cet enregistrement.

METRIC_NAME

VARCHAR

Le nom de la métrique évaluée pour cet enregistrement.

EVAL_AGG_SCORE

NUMBER

Score d’évaluation attribué à cet enregistrement.

METRIC_TYPE

VARCHAR

Le type de métrique en cours d’évaluation. Pour les métriques intégrées, la valeur est system. Pour les métriques personnalisées, la valeur est custom.

METRIC_STATUS

VARIANT

Carte contenant des informations sur la réponse HTTP de l’agent pour cet enregistrement, avec les clés suivantes :

  • status : Le code d’état HTTP de la réponse.

  • message : Le message HTTP envoyé dans la réponse d’état.

METRIC_CALLS

ARRAY

Un tableau de valeurs VARIANT qui contiennent des informations sur la métrique calculée. Chaque entrée de tableau contient les critères de la métrique, une explication du score de la métrique et des métadonnées. Les clés de chaque entrée sont les suivantes :

  • criteria : Les critères utilisés par un LLM juge pour évaluer la correction de la réponse.

  • explanation : Une explication de la raison pour laquelle le score a été attribué.

  • full_metadata : Une valeur VARIANT qui contient des métadonnées et des informations sur le traitement de cette métrique par le LLM juge. Les clés de cette carte incluent :

    • completion_tokens : Le nombre de jetons de sortie générés par le LLM pour cette appel d’évaluation de métrique.

    • guard_tokens : Le nombre de jetons consommés par Cortex Guard pour cet appel d’évaluation de métrique.

    • normalized_score : Le score d’évaluation original a été normalisé à l’intervalle [0,0, 1,0], arrondi à deux décimales.

    • original_score : Le score d’origine attribué par cette évaluation de métrique pour l’enregistrement.

    • prompt_tokens : Le nombre de jetons consommés par l’invite fournie au LLM juge.

    • total_tokens : Le nombre total de jetons utilisés par le LLM juge pour ce calcul.

TOTAL_INPUT_TOKENS

INT

Le nombre total de jetons utilisés pour traiter la requête d’entrée.

TOTAL_OUTPUT_TOKENS

INT

Le nombre total de jetons de sortie produits par Cortex Agent.

LLM_CALL_COUNT

INT

Compte le nombre de fois où un LLM a été appelé, soit par l’agent, soit par un juge d’évaluation.

Disponibilité du modèle

Actuellement, les évaluations d’agent ne prennent en charge que les modèles claude-4-sonnet et``claude-3-5-sonnet``, en utilisant l’inférence inter-régions. Snowflake sélectionne automatiquement ces modèles en fonction des paramètres de votre compte.

Modèle

Inter-Cloud (n’importe quelle région)

AWS US

Gouvernement commercial AWS US

AWS EU

AWS APJ

claude-4-sonnet

claude-3.5-sonnet

Limitations connues

Les évaluations Cortex Agent sont soumises aux limites suivantes :

  • Temps de réponse et débit de l’agent : Le nombre d’entrées pouvant être traitées au cours d’une évaluation est limité par les temps de réponse des agents et la quantité de détails de trace. Si vous constatez des dépassements de délais d’expiration ou de longs retards dans votre évaluation, divisez vos données d’évaluation. Par exemple, si vous avez des requêtes qui nécessitent à coup sûr l’utilisation de nombreux outils différents, vous pouvez partitionner les données en fonction des outils communs utilisés. Si votre évaluation personnalisée entraîne des délais d’expiration, affinez ou raccourcissez votre invite. Vous pouvez également envisager de diviser les évaluations personnalisées pour vous concentrer sur un seul élément spécifique de la sortie de votre agent.

  • Obsolescence de la réalité de terrain : Selon les termes que vous utilisez pour vos requêtes d’entrée, les résultats peuvent varier au fil du temps et entraîner une perte de précision dans les résultats d’évaluation. Vous devriez notamment veiller à limiter les requêtes d’entrée à des dates et heures précises et absolues. Par exemple, les deux requêtes d’entrée What was our revenue? et``What was our revenue for the first quarter?`` ne donneront pas les mêmes réponses, tandis que la requête What was our revenue between January and March of 2025? est limitée à une fenêtre de temps spécifique qui peut être systématiquement référencée dans les données d’évaluation.

Considérations relatives aux clients

Les évaluations d’agent exécutent un Cortex Agent pour créer une sortie pour l’évaluation, et des LLM juges pour calculer les métriques d’évaluation. Vous êtes facturé pour chaque exécution de l’agent par rapport à une requête de réalité de terrain. Les LLM juges de l’évaluation sont exécutés par la fonction AI_COMPLETE, et vous devez payer des frais basés sur le modèle que Snowflake sélectionne pour être jugé. En outre, les coûts suivants vous sont facturés :

  • Frais d’entrepôt pour les tâches utilisées pour gérer les exécutions d’évaluation

  • Frais d’entrepôt pour les requêtes utilisées pour calculer les métriques d’évaluation

  • Frais de stockage pour les ensembles de données et les résultats d’évaluation

  • Frais d’entrepôt pour récupérer les résultats de l’évaluation vus dans Snowsight

Pour plus d’informations sur l’estimation des coûts, voir Comprendre le coût général. Reportez-vous au tableau de consommation du service Snowflake pour des informations complètes sur les coûts.