View a markdown version of this page

schéma du jeu de données - Amazon Bedrock AgentCore

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

scenario_id

Oui

String

Non-empty

Identifiant unique pour le scénario.

turns

Oui

Liste d’objets

Non-empty liste

Liste des tournants de la conversation. Chaque tour comporte input (obligatoire) et expected_response (facultatif).

expected_trajectory

Non

Liste de chaînes

Séquence attendue de noms d'outils. Utilisé par les évaluateurs de trajectoire (Builtin.TrajectoryExactOrderMatch,Builtin.TrajectoryInOrderMatch,Builtin.TrajectoryAnyOrderMatch).

assertions

Non

Liste de chaînes

Assertions en langage naturel concernant le comportement attendu. Utilisé par Builtin.GoalSuccessRate.

metadata

Non

Objet

Métadonnées clé-valeur arbitraires pour le scénario.

Tourner les champs

Champ Obligatoire Type Constaintes Description

input

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,"What is my balance?") ou d'un objet structuré (par exemple,{"role": "user", "content": "What is my balance?"}).

expected_response

Non

String

Réponse attendue de l'agent pour ce tour. Utilisé par Builtin.Correctness. Mappé en position par rapport à la trace produite par ce tour ; tournez 0 cartes en trace 0, tournez 1 cartes en trace 1.

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

scenario_id

Oui

String

Non-empty

Identifiant unique pour le scénario.

actor_profile

Oui

Objet

Doit contenir context et goal

L'identité et l'objectif de l'acteur, contenant context (obligatoire), goal (obligatoire) et traits (facultatif). Voir Simulation utilisateur.

input

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é.

scenario_description

Non

String

Métadonnées facultatives décrivant le scénario. Utile pour organiser et identifier des scénarios dans les résultats.

max_turns

Non

Entier

Doit être ≥ 1

Nombre maximum de tours avant l'arrêt de la conversation. Par défaut : 10

assertions

Non

Liste de chaînes

Assertions en langage naturel concernant le comportement attendu. Utilisé par Builtin.GoalSuccessRate.

metadata

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

Builtin.Correctness

turns[].expected_response

Suivi

Mesure la précision avec laquelle la réponse de l'agent correspond à la réponse attendue.

Builtin.GoalSuccessRate

assertions

Session

Valide si le comportement de l'agent répond aux assertions du langage naturel.

Builtin.TrajectoryExactOrderMatch

expected_trajectory

Session

Vérifie que la séquence d'appel d'outils réelle correspond exactement.

Builtin.TrajectoryInOrderMatch

expected_trajectory

Session

Vérifie que les outils attendus apparaissent dans l'ordre, en autorisant les extras entre eux.

Builtin.TrajectoryAnyOrderMatch

expected_trajectory

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 exempleBuiltin.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()