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 |
|---|---|---|---|---|
|
|
Ja |
Zeichenfolge |
Non-empty |
Eindeutiger Bezeichner für das Szenario. |
|
|
Ja |
Liste von Objekten |
Non-empty Liste |
Liste der Runden in der Konversation. Jeder Zug hat |
|
|
Nein |
Liste von Zeichenfolgen |
Erwartete Reihenfolge der Werkzeugnamen. Wird von Trajektorienauswertern ( |
|
|
|
Nein |
Liste von Zeichenfolgen |
Aussagen in natürlicher Sprache über erwartetes Verhalten. Verwendet von |
|
|
|
Nein |
Objekt |
Beliebige Schlüsselwert-Metadaten für das Szenario. |
Felder umdrehen
| Feld | Erforderlich | Typ | Beschränkungen | Description |
|---|---|---|---|---|
|
|
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 |
|
|
Nein |
Zeichenfolge |
Die erwartete Antwort des Agenten für diesen Zug. Verwendet von |
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 |
|---|---|---|---|---|
|
|
Ja |
Zeichenfolge |
Non-empty |
Eindeutiger Bezeichner für das Szenario. |
|
|
Ja |
Objekt |
Muss enthalten |
Die Identität und das Ziel des Akteurs, bestehend aus |
|
|
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. |
|
|
Nein |
Zeichenfolge |
Optionale Metadaten, die das Szenario beschreiben. Nützlich für die Organisation und Identifizierung von Szenarien in Ergebnissen. |
|
|
|
Nein |
Ganzzahl |
Muss ≥ 1 sein |
Maximale Anzahl von Runden, bevor die Konversation beendet wird. Standard: 10. |
|
|
Nein |
Liste von Zeichenfolgen |
Aussagen in natürlicher Sprache über erwartetes Verhalten. Verwendet von |
|
|
|
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 |
|---|---|---|---|
|
|
|
Trace |
Misst, wie genau die Antwort des Agenten mit der erwarteten Antwort übereinstimmt. |
|
|
|
Sitzung |
Überprüft, ob das Verhalten des Agenten den Aussagen in natürlicher Sprache entspricht. |
|
|
|
Sitzung |
Überprüft, ob die tatsächliche Reihenfolge der Tool-Aufrufe exakt übereinstimmt. |
|
|
|
Sitzung |
Überprüft, ob die erwarteten Tools in der richtigen Reihenfolge angezeigt werden, sodass zusätzliche Funktionen zwischen ihnen möglich sind. |
|
|
|
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()