View a markdown version of this page

Datensatz-Schema - Amazon Grundgestein AgentCore

Datensatz-Schema

Ein Datensatz enthält ein oder mehrere Szenarien. Jedes Szenario stellt eine Konversation (Sitzung) mit dem Agenten dar. Sowohl der On-Demand-Dataset-Runner als auch der Batch-Runner verwenden dasselbe Datensatzformat.

Das AgentCore SDK unterstützt zwei Szenariotypen:

  • Vordefinierte Szenarien verwenden eine feste Reihenfolge von Runden, die Sie von Hand erstellen. Der Läufer wiederholt die Runden genau so, wie sie geschrieben wurden.

  • In simulierten Szenarien wird ein LLM-backed Akteur verwendet, um Kurven dynamisch auf der Grundlage einer Persona und eines Ziels zu generieren. Einzelheiten zu den Akteurprofilen und der Simulationskonfiguration finden Sie unter Benutzersimulation.

FileDatasetProvidererkennt den Szenariotyp automatisch anhand der JSON-Struktur: Szenarien mit einem turns Feld werden als vordefiniert geladen; Szenarien mit einem actor_profile Feld (und ohneturns) werden als simuliert geladen.

Vordefinierte Szenarien

Ein vordefiniertes Szenario spezifiziert eine feste Reihenfolge von Kurven mit bekannten Eingaben und optionalen erwarteten Ergebnissen.

Single-turn Beispiel

Jedes Szenario sendet eine Aufforderung und überprüft die Antwort:

{ "scenarios": [ { "scenario_id": "math-question", "turns": [ { "input": "What is 15 + 27?", "expected_response": "15 + 27 = 42" } ], "expected_trajectory": ["calculator"], "assertions": ["Agent used the calculator tool to compute the result"] }, { "scenario_id": "weather-check", "turns": [ { "input": "What's the weather?", "expected_response": "The weather is sunny" } ], "expected_trajectory": ["weather"], "assertions": ["Agent used the weather tool"] } ] }

Multi-turn Beispiel

Multi-turn Szenarien haben mehrere Runden pro Szenario. Runden werden nacheinander innerhalb derselben Sitzung ausgeführt, wobei der Konversationskontext erhalten bleibt. Jeder Spielzug kann eine eigene Dauer expected_response haben assertions und expected_trajectory sich auf die gesamte Sitzung beziehen:

{ "scenarios": [ { "scenario_id": "math-then-weather", "turns": [ { "input": "What is 15 + 27?", "expected_response": "15 + 27 = 42" }, { "input": "What's the weather?", "expected_response": "The weather is sunny" } ], "expected_trajectory": ["calculator", "weather"], "assertions": [ "Agent used the calculator tool for the math question", "Agent used the weather tool when asked about weather" ] } ] }

Felder für Szenarien

Feld Erforderlich Typ Beschränkungen Description

scenario_id

Ja

Zeichenfolge

Non-empty

Eindeutiger Bezeichner für das Szenario.

turns

Ja

Liste von Objekten

Non-empty Liste

Liste der Runden in der Konversation. Jeder Zug hat input (erforderlich) und expected_response (optional).

expected_trajectory

Nein

Liste von Zeichenfolgen

Erwartete Reihenfolge der Werkzeugnamen. Wird von Trajektorienauswertern (Builtin.TrajectoryExactOrderMatch,,Builtin.TrajectoryInOrderMatch) verwendet. Builtin.TrajectoryAnyOrderMatch

assertions

Nein

Liste von Zeichenfolgen

Aussagen in natürlicher Sprache über erwartetes Verhalten. Verwendet von Builtin.GoalSuccessRate.

metadata

Nein

Objekt

Beliebige Schlüsselwert-Metadaten für das Szenario.

Felder umdrehen

Feld Erforderlich Typ Beschränkungen Description

input

Ja

Zeichenfolge oder Objekt

Non-empty

Die Aufforderung, die für diesen Zug an den Agenten gesendet wurde. Dabei kann es sich um eine einfache Zeichenfolge (zum Beispiel"What is my balance?") oder um ein strukturiertes Objekt (zum Beispiel{"role": "user", "content": "What is my balance?"}) handeln.

expected_response

Nein

Zeichenfolge

Die erwartete Antwort des Agenten für diesen Zug. Verwendet von Builtin.Correctness. Positionell der Spur zugeordnet, die durch diesen Zug erzeugt wurde; Kurve 0 wird Spur 0 zugeordnet, Kurve 1 wird Spur 1 zugeordnet.

Simulierte Szenarien

Ein simuliertes Szenario definiert ein Akteurprofil und eine erste Eingabe. Der Akteur generiert nachfolgende Runden dynamisch:

{ "scenarios": [ { "scenario_id": "geography-student", "scenario_description": "A curious student asks geography questions", "actor_profile": { "traits": {"expertise": "novice", "tone": "curious"}, "context": "A student studying world geography who wants to learn about capitals", "goal": "Find out the capital cities of at least two different countries" }, "input": "Hi! I'm studying geography. Can you help me learn about world capitals?", "max_turns": 5, "assertions": [ "Agent provides accurate capital city information", "Agent is helpful and encouraging to the student" ] } ] }

Felder für Szenarien

Feld Erforderlich Typ Beschränkungen Description

scenario_id

Ja

Zeichenfolge

Non-empty

Eindeutiger Bezeichner für das Szenario.

actor_profile

Ja

Objekt

Muss enthalten context und goal

Die Identität und das Ziel des Akteurs, bestehend aus context goal (erforderlich), (erforderlich) und traits (optional). Siehe Benutzersimulation.

input

Ja

Zeichenfolge oder Objekt

Non-empty

Die erste Nachricht, die an Ihren Agenten gesendet wurde, um die Konversation zu beginnen. In der Regel eine einfache Zeichenfolge, kann aber auch ein strukturiertes Objekt sein.

scenario_description

Nein

Zeichenfolge

Optionale Metadaten, die das Szenario beschreiben. Nützlich für die Organisation und Identifizierung von Szenarien in Ergebnissen.

max_turns

Nein

Ganzzahl

Muss ≥ 1 sein

Maximale Anzahl von Runden, bevor die Konversation beendet wird. Standard: 10.

assertions

Nein

Liste von Zeichenfolgen

Aussagen in natürlicher Sprache über erwartetes Verhalten. Verwendet von Builtin.GoalSuccessRate.

metadata

Nein

Objekt

Beliebige Schlüsselwert-Metadaten für das Szenario.

Anmerkung

Simulierte Szenarien unterstützen expected_trajectory oder nicht pro Runde, expected_response da der Konversationsablauf nicht im Voraus bekannt ist. Wird assertions für Ground Truth bei simulierten Szenarien verwendet.

Ground-Truth-Kartierung

Beide Läufer ordnen Datensatzfelder automatisch den Evaluatoren zu, die sie verwenden:

Evaluator Feld „Ground Truth“ Level Description

Builtin.Correctness

turns[].expected_response

Trace

Misst, wie genau die Antwort des Agenten mit der erwarteten Antwort übereinstimmt.

Builtin.GoalSuccessRate

assertions

Sitzung

Überprüft, ob das Verhalten des Agenten den Aussagen in natürlicher Sprache entspricht.

Builtin.TrajectoryExactOrderMatch

expected_trajectory

Sitzung

Überprüft, ob die tatsächliche Reihenfolge der Tool-Aufrufe exakt übereinstimmt.

Builtin.TrajectoryInOrderMatch

expected_trajectory

Sitzung

Überprüft, ob die erwarteten Tools in der richtigen Reihenfolge angezeigt werden, sodass zusätzliche Funktionen zwischen ihnen möglich sind.

Builtin.TrajectoryAnyOrderMatch

expected_trajectory

Sitzung

Überprüft, ob alle erwarteten Tools vorhanden sind, unabhängig von ihrer Reihenfolge.

  • Ground-Truth-Felder sind optional. Gutachter, die Ground Truth nicht verwenden (z. B.Builtin.Faithfulness)Builtin.Helpfulness, bewerten ausschließlich anhand des Sitzungsinhalts.

  • Sie können alle Ground-Truth-Felder in einem einzigen Datensatz zusammenfassen. Jeder Läufer leitet die relevanten Felder an die entsprechenden Gutachter weiter.

  • Wenn keine Ground-Truth-Felder vorhanden sind, kehren die Evaluatoren in ihren Ground-Truth-Free-Modus zurück.

Weitere Informationen zu Ground-Truth-Feldern und ihrer Funktionsweise mit der Evaluate-API finden Sie unter Ground-Truth-Evaluierungen.

Erstellung von Inline-Datensätzen

Anstatt aus einer JSON-Datei zu laden, können Sie Datensätze direkt in Python erstellen:

from bedrock_agentcore.evaluation import Dataset, PredefinedScenario, Turn dataset = Dataset( scenarios=[ PredefinedScenario( scenario_id="math-question", turns=[ Turn( input="What is 15 + 27?", expected_response="15 + 27 = 42", ), ], expected_trajectory=["calculator"], assertions=["Agent used the calculator tool"], ), PredefinedScenario( scenario_id="weather-check", turns=[ Turn(input="What's the weather?"), ], expected_trajectory=["weather"], ), ] )

Oder aus einer JSON-Datei laden:

from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()