Cortex Agent-Evaluierungen

Cortex Agent-Evaluierungen ermöglichen es Ihnen, das Verhalten und die Leistung Ihres Agenten zu überwachen. Bewerten Sie Ihren Agenten sowohl anhand von Ground Truth- als auch von referenzlosen Evaluierungskennzahlen. Während der Evaluierung wird die Aktivität Ihres Agenten verfolgt und überwacht, sodass Sie sicherstellen können, dass jeder Schritt des Prozesses Ihrem Endziel näher kommt.

Snowflake bietet die folgenden Kennzahlen, anhand derer Ihr Agent bewertet wird:

  • Answer correctness – How closely the actual response for a given input query to the agent matches the expected ground truth answer.

  • Logische Konsistenz – Misst die Konsistenz zwischen Agentenanweisungen, Planung und Tool-Aufrufen. Diese Kennzahl ist referenzlos, was bedeutet, dass Sie keine Informationen in Ihrem Datenset für die Evaluierung vorbereiten müssen.

Snowflake ermöglicht es Ihnen auch, benutzerdefinierte Evaluierungskennzahlen zu erstellen, die LLM-Judging zur Messung des Kontexts verwenden, der für die Domäne und den Anwendungsfall Ihres Agenten entscheidend ist. Kundenspezifische Kennzahlen verwenden eine LLM-Eingabeaufforderung und Bewertungsmethodik, die an das Evaluierungs-Beurteilungssystem übergeben werden, um eine Punktzahl zu erstellen.

Weitere Details darüber, wie Agentenevaluierungen in Snowflake durchgeführt werden, einschließlich LLM-Judging für referenzlose Evaluierungen, finden Sie im Snowflake-Engineering-Blog Wie ist Ihre Agenten-GPA ? Ein Framework für die Evaluierung der AI-Agentenzuverlässigkeit. Ein Beispiel für das programmgesteuerte Ausführen einer Agentenevaluierung finden Sie in der Anleitung `Erste Schritte mit Cortex Agent-Evaluierungen<https://www.snowflake.com/en/developers/guides/getting-started-with-cortex-agent-evaluations/>`__.

Anforderungen an die Zugriffssteuerung

Tipp

A user with the ACCOUNTADMIN role can grant the SNOWFLAKE.AI_OBSERVABILITY_READER application role to another role so that users can run read-only queries on SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS for Cortex Agent evaluations.

Die Fähigkeit, eine Cortex Agent-Evaluierung durchzuführen, erfordert eine Rolle mit den folgenden Berechtigungen:

  • Die Rolle DATABASE ROLE SNOWFLAKE.CORTEX_USER

  • EXECUTE TASK ON ACCOUNT-Berechtigung

  • The USAGE permission on the database and schema containing your agent

  • The USAGE permission on the database and schema containing your evaluation data - If creating a dataset from an input table, CREATE DATASET ON SCHEMA

  • The following permissions on the current database and schema, which is where the evaluation will be run from:

    • USAGE

    • CREATE FILE FORMAT ON SCHEMA

    • CREATE TASK

Bemerkung

In Snowsight, agent evaluations are run on the database and schema of the agent. With SQL, agent evaluations are run on the session’s database and schema.

  • USAGE- oder OWNERSHIP-Berechtigung für Ihren Agenten

  • MONITOR- oder OWNERSHIP-Berechtigung für Ihren Agenten

  • Wenn Sie eine Konfiguration für die Evaluierung eines Agenten verwenden, READ-Berechtigung für den Stagingbereich, der die Konfigurationsdatei enthält.

Wenn der zu bewertende Agent Tools verwendet, benötigt Ihre Rolle auch Zugriff auf alle diese Tools.

Außerdem, wenn Sie mit Evaluierungen in der Snowsight arbeiten, benötigt die Rolle, die Sie zum Ausführen oder Prüfen einer Evaluierung verwenden, die USAGE-Berechtigung für Ihr Standard-Warehouse.

Evaluierungs-Datenset vorbereiten

Bevor Sie mit einer Cortex Agent-Evaluierung beginnen, bereiten Sie eine Tabelle vor, die Ihre Evaluierungseingaben enthält. Diese Tabelle wird verwendet, um ein Datenset für die Durchführung Ihrer Evaluierung zu erstellen. Weitere Informationen zu Datensets in Snowflake finden Sie unter Snowflake Datasets.

Cortex Code

Damit Cortex Code Sie bei der Erstellung eines Datensets für Ihre Evaluierung unterstützt, verwenden Sie die untergeordnete dataset-curation-Fähigkeit der Cortex Code cortex-agent-Fähigkeit. Weitere Informationen zu Cortex Code-Fähigkeiten finden Sie unter Cortex Code CLI-Fähigkeiten.

Datenset-Format

Die Tabelle, die zum Erstellen eines Datensets für die Auswertung verwendet wird, hat eine Eingabeabfragespalte vom Typ VARCHAR, welche Ihre Abfrage darstellt, sowie eine Ausgabespalte vom Typ VARIANT, die eine Beschreibung des erwarteten Verhaltens des Agenten enthält. Diese einzelne Ausgabespalte wird vom LLM-Beurteiler (Judge) als grundlegende Wahrheit verwendet.

Values in the output column often include the key ground_truth_output. The value of that key is used by the answer correctness system metric. The value is most powerful when its accuracy is not dependent on relative time (i.e. last week versus January 2026), and when the ground truth clearly explains the criteria for success, such as specific criteria for data accuracy. LLM judges compare that ground truth to the full streamed reply the user would see. This includes all spans from LLM planning, tool calls, LLM response generation, or chart generation.

You can store any valid JSON object in this column. Custom metrics can reference the entire JSON through the {{ground_truth}} placeholder in the metric prompt (the serialized content of your ground truth VARIANT). That behavior is not limited to a particular key such as ground_truth_output. For example, you can use an object like {"ground_truth_output":"...","custom_a":"...","custom_b":"..."} and read those fields in a custom LLM judge via {{ground_truth}}. System metrics expect specific JSON shapes (for example, answer correctness relies on ground_truth_output). Choose your JSON structure based on which system and custom metrics you enable.

Tipp

Nutzen Sie die Tatsache, dass die Ground Truth in einer LLM-Eingabeaufforderung enthalten ist, indem Sie natürliche Sprache verwenden, um einen Typ einer Antwort zu beschreiben, zusätzlich zu exakten oder semantischen Antwortübereinstimmungen. Sie könnten zum Beispiel eine Ground Truth von Output is in the following JSON format ... angeben, gefolgt von einer Zeichenfolge, die entweder eine Beschreibung der Struktur oder direkt ein JSON-Beispiel enthält. Wenn Sie eine strengere Untersuchung der Ausgabe auf der Grundlage einer vollständigen kundenspezifischen Eingabeaufforderung benötigen, erstellen Sie eine kundenspezifische Kennzahl.

Um eine JSON-Datenset in eine Snowflake-Tabelle zu übertragen, verwenden Sie die SQL-Funktion PARSE_JSON. Das folgende Beispiel erstellt eine neue Tabelle agent_evaluation_data, die für ein Evaluierungs-Datenset verwendet werden soll, und fügt eine Zeile für die Eingabeabfrage What was the temperature in San Francisco on August 2nd 2019? mit der Ground Truth von``The temperature was 14 degrees Celsius in San Francisco on August 2nd, 2019.`` ein.

CREATE OR REPLACE TABLE agent_evaluation_data (
    input_query VARCHAR,
    ground_truth VARIANT
);

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."
      }
    ');

Wichtig

Die Funktionen OBJECT_CONSTRUCT und ARRAY_CONSTRUCT geben Nicht-VARIANT-Ergebnisse zurück. Verwenden Sie eine Funktion, die eine VAIRANT aus Ihrer Roheingabe erzeugt, wie PARSE_JSON, oder rufen Sie TO_VARIANT auf, um den Werttyp zu garantieren.

Daten, die Sie über die Spalte ground_truth angeben, die nicht von einer ausgewählten Kennzahl verwendet wird, werden ignoriert. Wenn Sie einen Evaluierungslauf nur mit referenzlosen Kennzahlen ausführen, können Sie die Ausgabespalte leer lassen.

Wenn Sie Ihre erste Evaluierung durchführen, haben Sie die Möglichkeit, ein neues Datenset aus einer bestehenden Tabelle zu erstellen.

Create a dataset from a Snowflake table (SQL)

To create an evaluation dataset with SQL, call SYSTEM$CREATE_EVALUATION_DATASET.

Starten einer Agenten-Evaluierung

Cortex Code

Wenn Sie mit Cortex Code eine Evaluierung ausführen möchten, verwenden Sie die untergeordnete Fähigkeit evaluate-cortex-agent der Cortex Code cortex-agent-Fähigkeit. Weitere Informationen zu Cortex Code-Fähigkeiten finden Sie unter Cortex Code CLI-Fähigkeiten.

Snowsight

Bemerkung

Agentenevaluierungen werden mit Ihrer aktuell ausgewählten Rolle in der Snowsight ausgeführt, nicht Ihrer Standardrolle. Vergewissern Sie sich, dass eine Rolle mit den richtigen Berechtigungen aktiv ist, bevor Sie eine Evaluierung starten.

Beginnen Sie Ihre Evaluierung eines Cortex Agent, indem Sie Folgendes tun:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.

  3. Wählen Sie den Agenten aus, für den Sie eine Evaluierung durchführen möchten.

  4. Wählen Sie die Registerkarte Evaluations aus.

  5. Wählen Sie New evaluation run aus.

    Das Modalfenster New evaluation run wird geöffnet.

  6. Geben Sie im Feld Name einen Namen für Ihre Evaluierung ein. Dieser Name sollte für den zu bewertenden Agenten eindeutig sein.

  7. Optional: Geben Sie im Feld Description Kommentare zur Evaluierung ein.

  8. Wählen Sie Next aus.

    Dies führt zum Modalfenster Select dataset.

  9. Wählen Sie das Datenset aus, das zur Evaluierung Ihres Agenten verwendet wird. Sie können Existing dataset oder Create new dataset auswählen.

    So verwenden Sie ein vorhandenes Datenset:

    1. Wählen Sie in der Liste Database and schema die Datenbank und das Schema aus, die Ihr Datenset enthalten.

    2. Wählen Sie aus der Liste Select dataset Ihr Datenset aus.

    So erstellen Sie ein neues Datenset:

    1. Wählen Sie in der Liste Source table - Database and schema die Datenbank und das Schema aus, die die Tabelle enthalten, die Sie in ein Datenset importieren möchten.

    2. Wählen Sie aus der Liste Select source table Ihre Quelltabelle aus.

    3. Wählen Sie über die Liste New dataset location - Database and schema die Datenbank und das Schema aus, in denen Ihr neues Datenset gespeichert werden soll.

    4. Geben Sie im Feld Dataset name den Namen Ihres Datensets ein. Dieser Name muss unter den Objekten auf Schemaebene in dem von Ihnen ausgewählten Schema eindeutig sein.

  10. Wählen Sie Next aus.

    Dies führt zum Modalfenster Select metrics.

  11. Wählen Sie in der Liste Input query die Spalte Ihres Datensets aus, die die Eingabeabfragen enthält.

  12. Für jede der System metrics setzen Sie den Umschalter für jede Kennzahl, die Sie in Ihre Evaluierung einbeziehen möchten, auf aktiv. Wählen Sie die Spalte Ihres Datensets aus, die die grundlegende Wahrheit (Ground Truth) für Ihre Evaluierung enthält.

  13. (Optional) Um eine kundenspezifische Evaluierung durchzuführen, verwenden Sie den Umschalter Custom metrics.

    1. Wählen Sie die Datenbank und das Schema aus, die den Stagingbereich enthalten, in dem Ihre kundenspezifische Evaluierungskonfiguration gespeichert ist.

    2. Wählen Sie den Stagingbereich aus, in dem Ihre kundenspezifische Evaluierungskonfiguration gespeichert ist.

    3. Wählen Sie die YAML-Konfigurationsdatei für Ihre kundenspezifische Evaluierung aus.

      Bemerkung

      In der Snowsight werden nur die kundenspezifischen Evaluierungsdefinitionen aus Ihrer YAML-Konfiguration geladen. Der Rest der YAML-Datei muss trotzdem gültig sein. Informationen zur YAML-Spezifikation der Evaluierung finden Sie unter YAML-Spezifikation der Agentenevaluierung.

    4. Setzen Sie den Umschalter für jede kundenspezifische Kennzahl auf aktiv, wenn Sie diese in Ihre Evaluierung aufnehmen möchten. Wählen Sie die Spalte Ihres Datensets aus, die die grundlegende Wahrheit (Ground Truth) für diese Evaluierung enthält.

  14. Wählen Sie Create aus, um die Evaluierung zu erstellen und den Evaluierungsprozess zu starten.

Sie können jederzeit Cancel verwenden, um die Evaluierungserstellung abzubrechen, oder Sie wählen Prev aus, um zum vorherigen Modalfenster zurückzukehren.

SQL

Zum Starten oder Abrufen von Informationen zu einer Evaluierung mit SQL verwenden Sie die EXECUTE_AI_EVALUATION-Funktion. Diese Funktion hat die folgenden erforderlichen Argumente:

  • evaluation_job: Ein Zeichenfolgenwert mit ‚START‘ oder ‚STATUS‘.

  • run_parameters: Ein SQL OBJECT, das den Schlüssel run_name mit einem Wert mit dem Namen Ihrer Evaluierung enthält.

  • config_file_path: Ein Stagingbereichs-Dateipfad, der auf Ihre YAML-Datei mit der Ausführungskonfiguration verweist. Dieser Pfad kann keine signierte URL sein. Informationen zur YAML-Spezifikation der Evaluierung finden Sie unter YAML-Spezifikation der Agentenevaluierung.

Verwenden Sie den evaluation_job-Wert ‚START‘, um eine Evaluierung zu starten. Im folgenden Beispiel wird eine Ausführung namens run-1 unter Verwendung der Konfiguration der Agenten-Evaluierung von``@eval_db.eval_schema.metrics/agent_evaluation_config.yaml`` gestartet:

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

Nach dem Start einer Ausführung können Sie den Fortschritt mit dem evaluation_job-Wert ‚STATUS‘ abfragen. Dieser Aufruf gibt eine Tabelle in dem Format zurück, das für AI-Beobachtbarkeitsausführungen verwendet wird. Im folgenden Beispiel wird der Status der mit dem vorherigen Beispiel gestarteten Agentenevaluierung abgefragt:

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

Tipp

Sie können die EXECUTE_AI_EVALUATION-Funktion von einer Aufgabe aus aufrufen, um regelmäßig eine Evaluierung durchzuführen oder den Status einer solchen zu überprüfen.

Prüfen der Evaluierungsergebnisse

Die Evaluierungsergebnisse umfassen Informationen zu den angeforderten Kennzahlen, Details zu den Argumentationssträngen des Agenten sowie Informationen über die LLM-Planungsphase für jede ausgeführte Ablaufverfolgung im Thread.

Cortex Code

Cortex Code bietet zwei untergeordnete Fähigkeiten der cortex-agent-Fähigkeit. Verwenden Sie die untergeordnete Fähigkeit investigate-cortex-agent-evals, um Evaluierungen zu prüfen und Probleme in Ihrer Konfiguration oder Ihren Daten zu finden. Verwenden Sie die untergeordnete Fähigkeit optimize-cortex-agent, um die Ergebnisse abgeschlossener Evaluierungen zu nutzen und die Leistung Ihres Agenten zu verbessern.

Snowsight

Die Registerkarte Evaluations für einen Agenten in der Snowsight gibt Ihnen einen Überblick über jeden Evaluierungslauf und seine zusammenfassenden Ergebnisse.

So zeigen Sie Evaluierungsergebnisse in Snowsight an:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.

  3. Wählen Sie den Agenten aus, für den Sie eine Evaluierung durchführen möchten.

  4. Wählen Sie die Registerkarte Evaluations aus.

Auflistung der Evaluierungsläufe

Die Zusammenfassung der Ausführungsinformationen für jede Ausführung enthält:

  • RUN NAME – Der Name des Evaluierungslaufs.

  • # OF RECORDS – Die Anzahl der im Rahmen der Ausführung ausgeführten und beantworteten Abfragen.

  • STATUS – Der Status des Evaluierungslaufs, der einer der folgenden ist:

    • Erfolgsindikator – Alle Eingaben wurden ausgewertet und die Ergebnisse sind verfügbar.

    • Ein Ladesymbol wird angezeigt – Die Ausführung läuft, und es sind noch keine Informationen verfügbar.

    • Warnindikator – Bei der Ausführung ist an einem bestimmten Punkt ein Fehler aufgetreten. Einige oder alle Kennzahlen sind für die Ausführung möglicherweise nicht verfügbar.

  • DATASET – Der Name des für die Auswertung verwendeten Datensets.

  • AVG DURATION – Die durchschnittliche Zeitdauer, die für die Ausführung einer Eingabeabfrage benötigt wird.

  • LOGICAL CONSISTENCY – Durchschnitt über alle Eingaben der logischen Konsistenzevaluierung für die Ausführung, falls angefordert.

  • DESCRIPTION – Die Beschreibung des Evaluierungslaufs.

  • CREATED – Die Zeit, zu der die Ausführung erstellt und gestartet wurde.

Jede für diese Ausführung ausgewertete kundenspezifische Kennzahl erhält auch eine eigene Spalte, die durch den Evaluierungskennzahlwert name definiert wird. Weitere Informationen zu kundenspezifischen Kennzahlen finden Sie unter Definieren einer kundenspezifischen Kennzahl.

Überblick über die Ausführung der Evaluierung

Wenn Sie eine bestimmte Ausführung in der Snowsight auswählen, wird Ihnen die Ausführungsübersicht angezeigt. Diese Übersicht enthält zusammenfassende Durchschnittswerte für jede während der Ausführung ausgewertete Kennzahl sowie eine Zusammenfassung jeder Eingabeausführung. Die Übersicht für jede Eingabeausführung umfasst:

  • STATUS – Der Status des Evaluierungslaufs, der einer der folgenden ist:

    • Erfolgsindikator – Alle Eingaben wurden ausgewertet und die Ergebnisse sind verfügbar.

    • Ein Ladesymbol wird angezeigt – Die Ausführung läuft, und es sind noch keine Informationen verfügbar.

    • Warnindikator – Bei der Ausführung ist an einem bestimmten Punkt ein Fehler aufgetreten. Einige oder alle Kennzahlen sind für die Ausführung möglicherweise nicht verfügbar.

  • INPUT – Die für die Evaluierung verwendete Eingabeabfrage.

  • OUTPUT – Die vom Agenten erzeugte Ausgabe.

  • DURATION – Die Zeitdauer, die für die Verarbeitung der Eingabe und das Erstellen der Ausgabe benötigt wird.

  • LOGICAL CONSISTENCY – Die Evaluierung der logischen Konsistenz für die Eingabe, falls angefordert.

  • EVALUATED – Der Zeitpunkt, zu dem die Eingabe verarbeitet wurde.

Jede für diese Ausführung ausgewertete kundenspezifische Kennzahl erhält auch eine eigene Spalte, die durch den Evaluierungskennzahlwert name definiert wird. Weitere Informationen zu kundenspezifischen Kennzahlen finden Sie unter Definieren einer kundenspezifischen Kennzahl.

View details (errors and metric warnings)

After you open a run from the evaluation runs listing, select View details on the right to open the detailed view for that run. Scroll down in this view to find error logs and other diagnostic information when something fails or returns partial results.

In the per-input table for the run, if metric computation has a problem for a specific row, a warning indicator can appear on the left side of that row. Hover over the warning to see details about the metric issue.

Datensatzdetails

Wenn Sie eine einzelne Eingabe in der Snowsight auswählen, wird die Ansicht Record details angezeigt. Diese Ansicht enthält drei Bereiche: Evaluation results, Thread details und Trace details.

Evaluierungsergebnisse

Ihre Evaluierungsergebnisse werden hier im Detail dargestellt. Jede Kennzahl verfügt über eine eigene Darstellung für den Gesamtdurchschnitt über die Eingaben hinweg, die ausgewählt werden kann, um ein Popover mit weiteren Informationen anzuzeigen. Dieses Popover enthält eine Aufschlüsselung der Anzahl der Ausführungen, die mit hoher Genauigkeit (80 % oder mehr Genauigkeit) oder mittlerer Genauigkeit (30 % oder genauer, aber nicht hohe Genauigkeit) durchgeführt wurden oder fehlgeschlagen sind.

Thread-Details

Die Informationen, die während der Ausführung jedes Agenten-Threads protokolliert wurden. Dazu gehören standardmäßig die Planung und die Erstellung von Antworten sowie eine Threadablaufverfolgung für jedes Tool, das der Agent während dieses Threads aufgerufen hat.

Ablaufverfolgungsdetails

Jeder Ablaufverfolgungsbereich enthält Eingabe-, Verarbeitungs- und Ausgabeinformationen, die für diesen Stage der Agentenausführung relevant sind. Diese Informationen sind die gleichen, die auch von der Agentenüberwachung bereitgestellt werden.

SQL

Wichtig

Observability redaction and evaluations

The READ UNREDACTED AI OBSERVABILITY EVENTS TABLE account privilege and default redaction of certain raw fields in AI_OBSERVABILITY_EVENTS apply to Cortex Agent monitoring in Snowsight and to observability user-defined table functions used on the monitoring data path, as described in Cortex Agent-Anfragen überwachen and Kontoberechtigung READ UNREDACTED AI OBSERVABILITY EVENTS TABLE. This does not change Cortex Agent evaluation run execution, how metrics are computed, or how evaluation results and scores are shown in the Evaluations experience.

Um die Rohdetails der Evaluierung abzurufen, verwenden Sie die Funktion GET_AI_EVALUATION_DATA (SNOWFLAKE.LOCAL). Diese Funktion hat die folgenden erforderlichen Argumente:

  • database: Datenbank, die den Agenten enthält.

  • schema: Schema, das den Agenten enthält.

  • agent_name: Der Name des Agenten.

  • agent_type: CORTEX AGENT or EXTERNAL AGENT. This value is case-insensitive.

  • run_name: Der Name des abzurufenden Evaluierungslaufs.

Diese Funktion gibt eine Tabelle mit Ereignisdaten zurück, wie in Format der Tabelle mit den Evaluierungsergebnissen beschrieben. Das folgende Beispiel zeigt die vollständigen Evaluierungsdetails für eine Ausführung namens run-1 an, wobei der Agent evaluated_agent heißt, der im Schema eval_db.eval_schema gespeichert ist:

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

Abfrageablaufverfolgungen für einen einzelnen Datensatz

Um auf einen einzelnen Datensatz aus einer Evaluierungsablaufverfolgung zuzugreifen, verwenden Sie die Funktion GET_AI_RECORD_TRACE (SNOWFLAKE.LOCAL). Diese Funktion hat die folgenden erforderlichen Argumente:

  • database: Datenbank, die den Agenten enthält.

  • schema: Schema, das den Agenten enthält.

  • agent_name: Der Name des Agenten.

  • agent_type: CORTEX AGENT or EXTERNAL AGENT. This value is case-insensitive.

  • record_id: Datensatz-ID, nach der gefiltert wird.

Diese Funktion gibt eine Tabelle mit Ereignisdaten zurück, wie in Format der Tabelle mit den Evaluierungsergebnissen beschrieben. Das folgende Beispiel zeigt die Ablaufverfolgung für den Datensatz 9346efc3-5dd6-4038-9b1a-72ca3d3b768c, wobei der Agent evaluated_agent heißt und im Schema eval_db.eval_schema gespeichert ist:

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

Abfrageevaluierungsfehler und Warnungen für eine Ausführung

Um auf Protokolle für Warnungen und Fehler zuzugreifen, die während eines Evaluierungslaufs aufgetreten sind, verwenden Sie die Funktion GET_AI_OBSERVABILITY_LOGS (SNOWFLAKE.LOCAL). Diese Funktion hat die folgenden erforderlichen Argumente:

  • database: Datenbank, die den Agenten enthält.

  • schema: Schema, das den Agenten enthält.

  • agent_name: Der Name des Agenten.

  • agent_type: CORTEX AGENT or EXTERNAL AGENT. This value is case-insensitive.

Diese Funktion gibt eine Tabelle mit Ereignisdaten zurück, wie in Format der Tabelle mit den Evaluierungsergebnissen beschrieben. Im folgenden Beispiel wird auf Fehler und Warnungen für eine Ausführung namens run-1 geprüft, wo der Agent evaluated_agent heißt und im Schema eval_db.eval_schema gespeichert ist:

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';

Bemerkung

Die Felder von record und record_attributes können geändert werden, aber die Felder record:"severity_text" und record_attributes:"snow.ai.observability.run.name" müssen in AI-Beobachtbarkeitsprotokollen garantiert vorhanden sein.

YAML-Spezifikation der Agentenevaluierung

Es gibt drei allgemeine Schlüssel, um die YAML-Datei zur Konfiguration einer Agentenevaluierung zu konfigurieren, einschließlich der Definition kundenspezifischer Kennzahlen:

  • (Optional) dataset: Eine Definition, wie ein Datenset für die Evaluierung erstellt werden soll. Dieser Wert ist optional, wenn Sie eine YAML-Spezifikation verwenden, um eine Evaluierung in der Snowsight zu starten oder wenn ein vorhandenes Datenset verwendet wird.

  • evaluation: Einstellungen für den zu bewertenden Agenten.

  • metrics: Die während eines Evaluierungslaufs aufgezeichneten Kennzahlen, einschließlich der Definitionen für kundenspezifische Kennzahlen.

Datenset-Definition

Der dataset-Wert definiert ein neues Datenset aus bestehenden Tabellendaten, die Spalten für die Eingabeabfrage und die Ground Truth zuordnen. Informationen zu der für Ihre Spalte ground_truth erforderliche Struktur finden Sie unter Datenset-Format. Die Schlüssel für den dataset-Wert sind:

  • dataset_type: Die Zeichenfolgenkonstante ‚CORTEX AGENT‘. Dieser Wert unterscheidet nicht zwischen Groß- und Kleinschreibung.

  • table_name: Der vollqualifizierte Name der Tabelle, die für den Inhalt des Datasets verwendet werden soll.

  • dataset_name: Der Name des erstellten Datensets.

  • column_mapping: Die Zuordnung der erforderlichen Eingabespalte query_text und der Ausgabespalte ground_truth für die Evaluierung zu Spalten der Tabelle, aus der das Datenset erstellt werden soll.

Das resultierende Dataset wird in derselben Datenbank und demselben Schema gespeichert wie die Tabelle, aus der es erstellt wurde.

Wichtig

When you call EXECUTE_AI_EVALUATION with START and the YAML still contains dataset:, Snowflake attempts to create the dataset on every run. If a dataset with the same dataset_name already exists, the run can fail (for example with an error that a dataset or internal dataset version already exists). That can happen even when you only change run_name between runs, or after a previous attempt failed after the dataset was created.

Pattern for repeated runs on the same dataset: Remove the entire dataset: top-level block from the YAML. Keep evaluation: (with source_metadata referencing the existing dataset_name) and metrics:. This matches how you run another evaluation against an existing dataset without re-importing the table.

When you need a new dataset from the same or updated source table (for example after you change rows), use a new dataset_name in dataset:, or create a dataset with SYSTEM$CREATE_EVALUATION_DATASET and reference that name in evaluation.source_metadata without embedding dataset: in the YAML you use for the run.

Die folgende Beispiel-Datensetdefinition zeigt ein Datenset mit dem Namen evaluation_input, das aus der Tabelle evals_db.evals_schema.evaluation_data unter Verwendung von user_question als Eingabe und expected_outcome zum Definieren der grundlegenden Wahrheit erstellt wurde:

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"

Agentenkonfiguration

Der evaluation-Wert legt die Konfiguration für den Agenten fest, mit der eine Evaluierung durchgeführt werden soll. Die Schlüssel für den evaluation-Wert sind:

  • agent_params: Ein Wörterbuch, das den Agenten beschreibt, für den die Evaluierung durchgeführt werden soll. Dieser Wert verwendet folgende Schlüssel:

    • agent_name: Der Name des zu bewertenden Agenten.

    • agent_type: Die Zeichenfolgenkonstante ‚CORTEX AGENT‘. Dieser Wert unterscheidet nicht zwischen Groß- und Kleinschreibung.

  • (Optional) run_params: Metadaten zur Identifizierung dieses Evaluierungslaufs. Dieser Wert verwendet folgende Schlüssel:

    • (Optional) label: Das Label für diese Evaluierung.

    • (Optional) description: Eine detaillierte Beschreibung der Evaluierung.

  • source_metadata: Ein Wörterbuch, welches das für die Evaluierung verwendete Datenset beschreibt. Dieser Wert verwendet folgende Schlüssel:

    • type: The string constant dataset. This value is case-sensitive.

    • dataset_name: Der Name des zu verwendenden Datensets.

Das folgende Beispiel für die Konfiguration eines Agenten führt einen Agenten namens evaluated_agent mit der Bezeichnung Basic evaluation unter Verwendung des Datensets evaluation_input aus:

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

Bemerkung

Note that the agent name is relative to the current database and schema. You can also provide the fully qualified name of the agent.

Auswahl der Kennzahlen

Der metrics-Wert ist eine Sequenz von zu bewertenden Kennzahlen, einschließlich Ihrer eigenen kundenspezifischen Kennzahldefinitionen. Die akzeptierten Werte für vordefinierte Kennzahlen sind:

  • answer_correctness: Measure how closely the expected ground truth answer for a given input query matches the actual response streamed from the agent.

  • logical_consistency: Messen der Konsistenz zwischen Agentenanweisungen, Planung und Tool-Aufrufen. Diese Kennzahl ist referenzlos und verwendet kein Datenset.

Definieren einer kundenspezifischen Kennzahl

Sie können Ihre eigene kundenspezifische Kennzahl definieren, indem Sie einen Bezeichner, eine Eingabeaufforderung und Wertebereiche angeben. Die von Ihnen angegebene Eingabeaufforderung wird an einen LLM-Judge zusammen mit Ausführungsverfolgungen übergeben, um Ihre kundenspezifische Evaluierung durchzuführen. Kundenspezifische Kennzahlen haben die folgenden erforderlichen Schlüssel-Wert-Paare:

  • name: Der Name der Metrik.

  • score_ranges: Eine Zuordnung, die Bereiche mit niedriger, mittlerer und hoher Qualitätskennzahl definiert. Diese Zuordnung verwendet folgende Schlüssel:

    • min_score: Der Bewertungsbereich, der zur Identifizierung von Ergebnissen mit geringer Qualität verwendet wird, als Zwei-Element-Sequenz von der inklusiven Untergrenze bis zur ausschließlichen Obergrenze.

    • median_score: Der Bewertungsbereich, der zur Identifizierung von Ergebnissen mittlerer Qualität verwendet wird, als Zwei-Element-Sequenz von der inklusiven Untergrenze bis zur inklusiven Obergrenze.

    • max_score: Der Bewertungsbereich, der zur Identifizierung von Ergebnissen hochwertiger Qualität verwendet wird, als Zwei-Element-Sequenz von der ausschließlichen Untergrenze bis zur inklusiven Obergrenze.

  • prompt: Die Prompt-Vorlage, die an den LLM-Judge zusammen mit den Ablaufverfolgungsdaten der Agentenausführung übergeben werden soll.

    Wichtig

    Diese Vorlage muss einen Bewertungsmechanismus enthalten, der einen numerischen Wert erzeugt, der in den für score_ranges angegebenen Bereichen dargestellt wird.

Die Eingabeaufforderung einer kundenspezifischen Kennzahl kann auf die vom Agenten während eines Evaluierungslaufs generierten Ablaufverfolgungsdaten verweisen. Snowflake übergibt die gesamte Ablaufverfolgung als Eingabe an den LLM-Judge, aber Sie können bestimmte Informationen gewichten, indem Sie eine Ersetzungszeichenfolge verwenden, die direkt auf Daten in einer GET_AI_RECORD_TRACEj-Spalte verweist. Die folgenden Ersetzungszeichenfolgen sind verfügbar:

Ersetzungszeichenfolge

Spalte 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

Beispiel für die Konfiguration von Kennzahlen

Im folgenden Beispiel wird eine Kennzahlkonfiguration definiert, die Überprüfungen der Korrektheit der Antwort und der logischen Konsistenz ermöglicht, und außerdem eine kundenspezifische relevance-Kennzahl, die einen Wert zwischen 1–10 zurückgibt, je nachdem, wie der Vergleich der Ground Truth mit der Ausgabe des Agenten ausfällt:

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?

Vollständige Beispielkonfiguration

Die Kombination aller vorherigen Beispielabschnitte ergibt eine vollständige Konfiguration der Agentenevaluierung:

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

metrics:
  # 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?

Hochladen der Konfiguration in einen Stagingbereich

Die Konfiguration der Agentenevaluierung muss ein bestimmtes Dateiformat haben, damit Snowflake sie analysieren kann. Der folgende Ausschnitt zeigt die Erstellung der erforderlichen yaml_file_format für das Schema evals_db.evals_schema und erstellt dann den Stagingbereich evaluation_config, um eine Agentenkonfiguration hochzuladen:

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;

Laden Sie Ihre Konfiguration über in einen erstellten Stagingbereich über die Snowsight hoch. Wählen Sie dazu im Navigationsmenü Ingestion » Add Data und dann Load files into a Stage aus. Sie können auch den SQL PUT-Befehl zum Hochladen einer lokalen YAML-Datei verwenden. Das folgende Beispiel zeigt das Kopieren der lokalen Datei /Users/dev/evaluation_config.yaml in den Stagingbereich evals_db.evals_schema.evaluation_config:

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

Wenn Sie Ihre YAML in einem :doc:` Arbeitsbereich </user-guide/ui-snowsight/workspaces>` erstellt haben, können Sie diese aus Ihrem aktiven Arbeitsbereich in einen Stagingbereich kopieren. Im folgenden Beispiel wird die Datei evaluation_config.yaml von Ihrem Arbeitsbereich in den Stagingbereich evals_db.evals_schema.evaluation_config kopiert:

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

Tipp

Snowflake empfiehlt, Ihre YAML-Datei unkomprimiert zu verwenden.

Format der Tabelle mit den Evaluierungsergebnissen

Funktionen, die Informationen über eine Cortex Agent-Evaluierung zurückgeben, erzeugen alle eine Tabelle mit den folgenden Spalten:

Spalte

Datentyp

Beschreibung

RECORD_ID

VARCHAR

Der von Snowflake zugewiesene eindeutige Bezeichner für diesen Evaluierungsdatensatz.

INPUT_ID

VARCHAR

Der von Snowflake zugewiesene eindeutige Bezeichner für diese Evaluierungseingabe.

REQUEST_ID

VARCHAR

Der von Snowflake zugewiesene eindeutige Bezeichner für diese Anforderung.

TIMESTAMP

TIMESTAMP_TZ

Die Uhrzeit (in UTC), zu der die Anforderung gestellt wurde.

DURATION_MS

INT

Die Zeit in Millisekunden, die der Agent benötigte, um eine Antwort zurückzugeben.

INPUT

VARCHAR

Die Abfragezeichenfolge, die als Eingabe für diesen Evaluierungsdatensatz verwendet wurde.

OUTPUT

VARCHAR

Die vom Cortex Agent für diesen Evaluierungsdatensatz zurückgegebene Antwort.

ERROR

VARCHAR

Informationen über Fehler, die während der Anforderung aufgetreten sind.

GROUND_TRUTH

VARCHAR

The ground truth information used to evaluate this record’s Cortex Agent output. This column holds the JSON from your dataset’s ground truth column, serialized as a string. For how {{ground_truth}} in custom metrics relates to this value, see the notes under Format der Tabelle mit den Evaluierungsergebnissen.

METRIC_NAME

VARCHAR

Der Name der für diesen Datensatz bewerteten Kennzahl.

EVAL_AGG_SCORE

NUMBER

Die für diesen Datensatz zugewiesene Evaluierungskennzahl.

METRIC_TYPE

VARCHAR

Der Typ der zu bewertenden Kennzahl. Für integrierte Kennzahlen ist der Wert system. Für kundenspezifische Kennzahlen ist der Wert custom.

METRIC_STATUS

VARIANT

Eine Zuordnung mit Informationen über die HTTP-Antwort des Agenten für diesen Datensatz mit den folgenden Schlüsseln:

  • status: Der HTTP-Statuscode der Antwort.

  • message: Die HTTP-Meldung, die in der Statusantwort gesendet wird.

METRIC_CALLS

ARRAY

Ein Array von VARIANT-Werten, die Informationen über die berechnete Kennzahl enthalten. Jeder Array-Eintrag enthält die Kriterien der Kennzahl, eine Erklärung der Kennzahl-Bewertung und Metadaten. Die Schlüssel der einzelnen Einträge sind:

  • criteria: Die von einem LLM-Judge verwendeten Kriterien, um die Korrektheit der Antwort zu bewerten.

  • explanation: Eine Erklärung, warum die Punktzahl vergeben wurde.

  • full_metadata: Ein VARIANT-Wert, der Metadaten und Informationen über die Verarbeitung dieser Kennzahl durch den LLM-Judge enthält. Die Schlüssel dieser Zuordnung umfassen:

    • completion_tokens: Die Anzahl der vom LLM generierten Ausgabe-Token für diesen Aufruf der Kennzahlevaluierung.

    • normalized_score: Die ursprüngliche Evaluierungspunktzahl, die auf den Bereich [0,0, 1,0] normalisiert und auf zwei Dezimalstellen gerundet wurde.

    • original_score: Die ursprüngliche Punktzahl, die durch diese Evaluierung der Kennzahl für den Datensatz zugewiesen wurde.

    • prompt_tokens: Die Anzahl der Token, die von der Eingabeaufforderung aufgenommen und dem LLM-Judge bereitgestellt wurden.

    • total_tokens: Die Gesamtzahl der vom LLM-Judge verwendeten Token für diese Berechnung.

TOTAL_INPUT_TOKENS

INT

Die Gesamtzahl der Token, die zur Verarbeitung der Eingabeabfrage verwendet wurden.

TOTAL_OUTPUT_TOKENS

INT

Die Gesamtzahl der vom Cortex Agent erzeugten Ausgabe-Token.

LLM_CALL_COUNT

INT

Zählt, wie oft LLM aufgerufen wurde, entweder vom Agenten oder einem Evaluierungs-Judge.

The GROUND_TRUTH column contains the full JSON from your dataset’s ground truth VARIANT, serialized as a string. In custom metric prompts, the {{ground_truth}} replacement string is substituted with that same serialized content, so a custom LLM judge can use any JSON shape you stored (not only keys such as ground_truth_output or ground_truth_invocations). System metrics still require JSON that matches what each metric expects (for example, ground_truth_output for answer correctness). For dataset column requirements, see Datenset-Format.

Verfügbarkeit der Modelle

Die Evaluierung der Agenten unterstützt derzeit nur die Modelle claude-4-sonnet und claude-3-5-sonnet, mit regionsübergreifender Inferenz. Snowflake wählt automatisch aus diesen Modellen auf der Grundlage Ihrer Kontoeinstellungen aus.

Modell

Cloudübergreifend (beliebige Region)

AWS-US

AWS US Commercial Gov

AWS-EU

AWS-APJ

claude-4-sonnet

Bekannte Einschränkungen

Cortex Agent-Evaluierungen unterliegen den folgenden Beschränkungen:

  • Antwortzeiten und Durchsatz der Agenten: Die Anzahl der Eingaben, die während einer Evaluierung verarbeitet werden können, wird durch die Antwortzeiten der Agenten und die Menge der Ablaufverfolgungsdetails eingeschränkt. Wenn Sie bei Ihrer Evaluierung Timeouts oder große Verzögerungen feststellen, teilen Sie Ihre Evaluierungsdaten auf. Wenn Sie z. B. Abfragen haben, die garantiert viele verschiedene Tools aufrufen, können Sie Daten durch gemeinsame Toolaufrufe partitionieren. Wenn Sie eine kundenspezifische Evaluierung haben, die zu Timeouts führt, verfeinern oder verkürzen Sie Ihre Eingabeaufforderung. Vielleicht sollten Sie auch in Betracht ziehen, kundenspezifische Evaluierungen aufzuteilen, um sich nur auf ein bestimmtes Element der Ausgabe Ihres Agenten zu konzentrieren.

  • **Veralten der grundlegenden Wahrheit“: Je nachdem, wie Sie Ihre Abfragen formulieren, können die Ergebnisse im Laufe der Zeit abweichen und zu weniger genauen Evaluierungsergebnissen führen. Insbesondere sollten Sie versuchen, Eingabeabfragen auf bestimmte, absolute Datumsangaben und Zeiten zu beschränken. Beispiel: Bei den beiden Eingabeabfragen What was our revenue? und What was our revenue for the first quarter? kommt es zu einer Abweichung, während die Abfrage What was our revenue between January and March of 2025? auf ein bestimmtes Zeitfenster beschränkt ist, auf das in den Evaluierungsdaten konsistent verwiesen werden kann.

Hinweise zu Kosten

Agentenevaluierungen führen einen Cortex Agent aus, um Ausgaben für die Evaluierung zu erzeugen, sowie LLM-Judges zur Berechnung der Evaluierungskennzahlen. Ihnen wird jede Ausführung des Agenten mit einer Ground Truth-Abfrage in Rechnung gestellt. Die LLM-Judges der Evaluierung werden von der Funktion AI_COMPLETE ausgeführt, und es fallen Gebühren an, die sich nach dem Modell richten, das Snowflake für die Beurteilung auswählt. Außerdem wird Ihnen Folgendes in Rechnung gestellt:

  • Warehouse-Gebühren für Aufgaben, die für die Verwaltung von Bewertungsläufen verwendet werden

  • Warehouse-Gebühren für Abfragen, die zur Berechnung von Bewertungskennzahlen verwendet werden

  • Speichergebühren für Datensets und Evaluierungsergebnisse

  • Warehouse-Gebühren für das Abrufen von Evaluierungsergebnissen, die in der Snowsight angezeigt werden

Weitere Informationen zum Schätzen der Kosten finden Sie unter Erläuterungen zu den Gesamtkosten. Die vollständigen Kosteninformationen finden Sie unter Snowflake Service Consumption Table.