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:

  • Antwortkorrektheit – Wie genau die Antwort eines Agenten auf Ihre vorbereitete Abfrage mit der erwarteten Antwort übereinstimmt. Diese Kennzahl ist am nützlichsten, wenn das Datenset, das Ihr Cortex Agent verwendet, statisch ist.

  • 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

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

  • USAGE-Berechtigung für die Datenbank, die Ihren Agenten enthält

  • Die folgenden Berechtigungen für das Schema, das Ihren Agenten enthält:

    • USAGE

    • CREATE FILE FORMAT ON SCHEMA

    • CREATE TASK

    • EXECUTE TASK

  • USAGE-Berechtigung für die Datenbank, die Ihre Evaluierungsdaten enthält

  • Die folgenden Berechtigungen für das Schema, das Ihre Evaluierungsdaten enthält:

    • USAGE

    • EXECUTE TASK

    • Wenn Sie ein Datenset aus einer Eingabetabelle erstellen, CREATE DATASET ON 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.

Die Werte in der Ausgabespalte haben genau einen Schlüssel: ground_truth_output. Der Wert dieses Schlüssels wird für die Evaluierung der Antwortkorrektheit verwendet. LLM-Judges verwenden die Ground Truth als Grundwahrheit, um die Ausgabe Ihres Agenten zu bewerten, indem sie diese in ihre Eingabeaufforderung aufnehmen.

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

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.

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.

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

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: Die Zeichenfolgenkonstante ‚CORTEX AGENT‘. Dieser Wert unterscheidet nicht zwischen Groß- und Kleinschreibung.

  • 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: Die Zeichenfolgenkonstante ‚CORTEX AGENT‘. Dieser Wert unterscheidet nicht zwischen Groß- und Kleinschreibung.

  • 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: Die Zeichenfolgenkonstante ‚CORTEX AGENT‘. Dieser Wert unterscheidet nicht zwischen Groß- und Kleinschreibung.

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.

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: Die Zeichenfolgenkonstante ‚DATASET‘. Dieser Wert unterscheidet nicht zwischen Groß- und Kleinschreibung.

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

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: Messen der Korrektheit der Antwort des Agenten anhand einer Ground Truth-Ausgabe.

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

  # 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

Die Ground Truth-Informationen, die zur Bewertung der Cortex Agent-Ausgabe dieses Datensatzes verwendet wurden.

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.

    • guard_tokens: Die Anzahl der von Cortex Guard verbrauchten 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.

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

claude-3.5-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.