Schema del set di dati
Un set di dati contiene uno o più scenari. Ogni scenario rappresenta una conversazione (sessione) con l'agente. Sia i gestori di set di dati su richiesta che quelli in batch utilizzano lo stesso formato di set di dati.
L' AgentCore SDK supporta due tipi di scenari:
-
Gli scenari predefiniti utilizzano una sequenza fissa di turni che puoi creare manualmente. Il corridore rigioca i turni esattamente come scritto.
-
Gli scenari simulati utilizzano un LLM-backed attore per generare turni dinamicamente in base a un personaggio e a un obiettivo. Vedi User simulation per i dettagli sui profili degli attori e sulla configurazione della simulazione.
FileDatasetProviderrileva automaticamente il tipo di scenario dalla struttura JSON: gli scenari con un turns campo vengono caricati come predefinito; gli scenari con un actor_profile campo (e noturns) vengono caricati come simulati.
Scenari predefiniti
Uno scenario predefinito specifica una sequenza fissa di giri con ingressi noti e uscite previste opzionali.
Single-turn esempio
Ogni scenario invia un prompt e verifica la risposta:
{ "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 esempio
Multi-turn gli scenari hanno più turni per scenario. I turni vengono eseguiti in sequenza all'interno della stessa sessione, mantenendo il contesto della conversazione. Ogni turno può avere il suo expected_response periodo assertions e expected_trajectory applicarsi all'intera sessione:
{ "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" ] } ] }
Campi dello scenario
| Campo | Richiesto | Tipo | Vincoli | Description |
|---|---|---|---|---|
|
|
Sì |
Stringa |
Non-empty |
Identificatore univoco per lo scenario. |
|
|
Sì |
Elenco di oggetti |
Non-empty elenco |
Elenco dei turni della conversazione. Ogni turno ha |
|
|
No |
Elenco di stringhe |
Sequenza prevista di nomi degli utensili. Utilizzato dai valutatori di traiettoria ( |
|
|
|
No |
Elenco di stringhe |
Asserzioni in linguaggio naturale sul comportamento previsto. Utilizzato da |
|
|
|
No |
Oggetto |
Metadati chiave-valore arbitrari per lo scenario. |
Trasforma i campi
| Campo | Richiesto | Tipo | Vincoli | Description |
|---|---|---|---|---|
|
|
Sì |
Stringa o oggetto |
Non-empty |
Il prompt inviato all'agente per questo turno. Può essere una stringa semplice (ad esempio, |
|
|
No |
Stringa |
La risposta prevista dell'agente per questo turno. Utilizzato da |
Scenari simulati
Uno scenario simulato definisce un profilo dell'attore e un input iniziale. L'attore genera i turni successivi in modo dinamico:
{ "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" ] } ] }
Campi dello scenario
| Campo | Richiesto | Tipo | Vincoli | Description |
|---|---|---|---|---|
|
|
Sì |
Stringa |
Non-empty |
Identificatore univoco per lo scenario. |
|
|
Sì |
Oggetto |
Deve contenere |
L'identità e l'obiettivo dell'attore, contenenti |
|
|
Sì |
Stringa o oggetto |
Non-empty |
Il primo messaggio inviato al tuo agente per iniziare la conversazione. In genere è una stringa semplice, ma può anche essere un oggetto strutturato. |
|
|
No |
Stringa |
Metadati opzionali che descrivono lo scenario. Utile per organizzare e identificare gli scenari nei risultati. |
|
|
|
No |
Numero intero |
Deve essere ≥ 1 |
Numero massimo di turni prima dell'interruzione della conversazione. Impostazione predefinita: 10 |
|
|
No |
Elenco di stringhe |
Affermazioni in linguaggio naturale sul comportamento previsto. Utilizzato da |
|
|
|
No |
Oggetto |
Metadati chiave-valore arbitrari per lo scenario. |
Nota
Gli scenari simulati non supportano expected_trajectory o si alternano expected_response perché il flusso di conversazione non è noto in anticipo. Utilizzalo assertions per ottenere risultati concreti con scenari simulati.
Mappatura della verità fondamentale
Entrambi i runner mappano automaticamente i campi del set di dati ai valutatori che li utilizzano:
| Valutatore | Campo fondamentale di verità | Livello | Description |
|---|---|---|---|
|
|
|
Traccia |
Misura la precisione con cui la risposta dell'agente corrisponde alla risposta prevista. |
|
|
|
Sessione |
Verifica se il comportamento dell'agente soddisfa le asserzioni in linguaggio naturale. |
|
|
|
Sessione |
Verifica che la sequenza effettiva di chiamata dell'utensile corrisponda esattamente. |
|
|
|
Sessione |
Verifica che gli strumenti previsti appaiano in ordine, permettendo l'aggiunta di elementi aggiuntivi tra di essi. |
|
|
|
Sessione |
Verifica che tutti gli strumenti previsti siano presenti, indipendentemente dall'ordine. |
-
I campi Ground Truth sono facoltativi. I valutatori che non utilizzano la verità fondamentale (ad esempio
Builtin.Helpfulness,Builtin.Faithfulness) valutano solo in base al contenuto della sessione. -
È possibile includere tutti i campi di verità di base in un unico set di dati. Ogni corridore indirizza i campi pertinenti ai valutatori appropriati.
-
Se non sono presenti campi di verità fondamentali, i valutatori tornano alla modalità priva di verità fondamentale.
Per maggiori dettagli sui campi di base e su come funzionano con l'API Evaluate, consulta Ground truth evaluations.
Costruzione di set di dati in linea
Invece di caricare da un file JSON, puoi costruire set di dati direttamente in 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"], ), ] )
Oppure carica da un file JSON:
from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()