schéma du jeu de données
Un jeu de données contient un ou plusieurs scénarios. Chaque scénario représente une conversation (session) avec l'agent. Les exécuteurs de jeux de données à la demande et par lots utilisent le même format de jeu de données.
Le AgentCore SDK prend en charge deux types de scénarios :
-
Les scénarios prédéfinis utilisent une séquence fixe de tours que vous créez à la main. Le coureur rejoue les virages exactement tels qu'ils sont écrits.
-
Les scénarios simulés utilisent un LLM-backed acteur pour générer des virages de manière dynamique en fonction d'un personnage et d'un objectif. Voir Simulation utilisateur pour plus de détails sur les profils d'acteurs et la configuration de la simulation.
FileDatasetProviderdétecte automatiquement le type de scénario à partir de la structure JSON : les scénarios avec un turns champ sont chargés comme prédéfinis ; les scénarios avec un actor_profile champ (et nonturns) sont chargés tels que simulés.
Scénarios prédéfinis
Un scénario prédéfini définit une séquence fixe de tours avec des entrées connues et des sorties attendues facultatives.
Single-turn exemple
Chaque scénario envoie une invite et vérifie la réponse :
{ "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 exemple
Multi-turn les scénarios comportent plusieurs tours par scénario. Les tours s'exécutent de manière séquentielle au cours de la même session, en conservant le contexte de la conversation. Chaque tour peut avoir le sienexpected_response, pendant assertions et expected_trajectory s'appliquer à l'ensemble de la session :
{ "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" ] } ] }
Champs de scénario
| Champ | Obligatoire | Type | Constaintes | Description |
|---|---|---|---|---|
|
|
Oui |
String |
Non-empty |
Identifiant unique pour le scénario. |
|
|
Oui |
Liste d’objets |
Non-empty liste |
Liste des tournants de la conversation. Chaque tour comporte |
|
|
Non |
Liste de chaînes |
Séquence attendue de noms d'outils. Utilisé par les évaluateurs de trajectoire ( |
|
|
|
Non |
Liste de chaînes |
Assertions en langage naturel concernant le comportement attendu. Utilisé par |
|
|
|
Non |
Objet |
Métadonnées clé-valeur arbitraires pour le scénario. |
Tourner les champs
| Champ | Obligatoire | Type | Constaintes | Description |
|---|---|---|---|---|
|
|
Oui |
Chaîne ou objet |
Non-empty |
L'invite envoyée à l'agent pour ce tour. Il peut s'agir d'une chaîne simple (par exemple, |
|
|
Non |
String |
Réponse attendue de l'agent pour ce tour. Utilisé par |
Scénarios simulés
Un scénario simulé définit un profil d'acteur et une entrée initiale. L'acteur génère les tours suivants de manière dynamique :
{ "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" ] } ] }
Champs de scénario
| Champ | Obligatoire | Type | Constaintes | Description |
|---|---|---|---|---|
|
|
Oui |
String |
Non-empty |
Identifiant unique pour le scénario. |
|
|
Oui |
Objet |
Doit contenir |
L'identité et l'objectif de l'acteur, contenant |
|
|
Oui |
Chaîne ou objet |
Non-empty |
Le premier message envoyé à votre agent pour démarrer la conversation. Il s'agit généralement d'une chaîne simple, mais il peut également s'agir d'un objet structuré. |
|
|
Non |
String |
Métadonnées facultatives décrivant le scénario. Utile pour organiser et identifier des scénarios dans les résultats. |
|
|
|
Non |
Entier |
Doit être ≥ 1 |
Nombre maximum de tours avant l'arrêt de la conversation. Par défaut : 10 |
|
|
Non |
Liste de chaînes |
Assertions en langage naturel concernant le comportement attendu. Utilisé par |
|
|
|
Non |
Objet |
Métadonnées clé-valeur arbitraires pour le scénario. |
Note
Les scénarios simulés ne sont pas compatibles expected_trajectory ou ne se succèdent pas, expected_response car le flux de conversation n'est pas connu à l'avance. assertionsÀ utiliser pour établir la vérité sur le terrain grâce à des scénarios simulés.
Cartographie de la vérité sur
Les deux coureurs mappent automatiquement les champs du jeu de données aux évaluateurs qui les utilisent :
| Évaluateur | Champ de vérité sur le terrain | Niveau | Description |
|---|---|---|---|
|
|
|
Suivi |
Mesure la précision avec laquelle la réponse de l'agent correspond à la réponse attendue. |
|
|
|
Session |
Valide si le comportement de l'agent répond aux assertions du langage naturel. |
|
|
|
Session |
Vérifie que la séquence d'appel d'outils réelle correspond exactement. |
|
|
|
Session |
Vérifie que les outils attendus apparaissent dans l'ordre, en autorisant les extras entre eux. |
|
|
|
Session |
Vérifie que tous les outils attendus sont présents, quel que soit l'ordre. |
-
Les champs Ground Truth sont facultatifs. Les évaluateurs qui n'utilisent pas Ground Truth (par exemple
Builtin.Helpfulness,Builtin.Faithfulness) évaluent uniquement en fonction du contenu de la session. -
Vous pouvez inclure tous les champs de vérité de base dans un seul jeu de données. Chaque coureur achemine les champs pertinents vers les évaluateurs appropriés.
-
Si aucun champ de vérité sur le terrain n'est présent, les évaluateurs retombent dans leur mode d'absence de vérité sur le terrain.
Pour plus de détails sur les champs de vérité sur le terrain et sur leur fonctionnement avec l'API Evaluate, consultez la section Évaluations de vérité de terrain.
Construction de jeux de données en ligne
Au lieu de les charger depuis un fichier JSON, vous pouvez créer des ensembles de données directement en Python :
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"], ), ] )
Ou chargez depuis un fichier JSON :
from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()