Esquema do conjunto de dados
Um conjunto de dados contém um ou mais cenários. Cada cenário representa uma conversa (sessão) com o agente. Tanto os executores de conjuntos de dados sob demanda quanto os em lote usam o mesmo formato de conjunto de dados.
O AgentCore SDK oferece suporte a dois tipos de cenários:
-
Os cenários predefinidos usam uma sequência fixa de turnos que você cria manualmente. O corredor repete as voltas exatamente como estão escritas.
-
Cenários simulados usam um LLM-backed ator para gerar turnos dinamicamente com base em uma personalidade e meta. Consulte Simulação do usuário para obter detalhes sobre perfis de atores e configuração da simulação.
FileDatasetProviderdetecta automaticamente o tipo de cenário a partir da estrutura JSON: cenários com um turns campo são carregados conforme predefinido; cenários com um actor_profile campo (e nãoturns) são carregados como simulados.
Cenários predefinidos
Um cenário predefinido especifica uma sequência fixa de voltas com entradas conhecidas e saídas opcionais esperadas.
Single-turn exemplo
Cada cenário envia um prompt e verifica a resposta:
{ "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 exemplo
Multi-turn os cenários têm vários turnos por cenário. Os turnos são executados sequencialmente na mesma sessão, mantendo o contexto da conversa. Cada turno pode ter seu próprioexpected_response, enquanto assertions expected_trajectory se aplica a toda a sessão:
{ "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" ] } ] }
Campos de cenário
| Campo | Obrigatório | Tipo | Restrições | Description |
|---|---|---|---|---|
|
|
Sim |
String |
Non-empty |
Identificador exclusivo para o cenário. |
|
|
Sim |
Lista de objetos |
Non-empty lista |
Lista de turnos na conversa. Cada turno tem |
|
|
Não |
Lista de strings |
Sequência esperada de nomes de ferramentas. Usado por avaliadores de trajetória ( |
|
|
|
Não |
Lista de strings |
Afirmações em linguagem natural sobre o comportamento esperado. Usado pelo |
|
|
|
Não |
Objeto |
Metadados arbitrários de valores-chave para o cenário. |
Virar campos
| Campo | Obrigatório | Tipo | Restrições | Description |
|---|---|---|---|---|
|
|
Sim |
Cadeia de caracteres ou objeto |
Non-empty |
A solicitação enviada ao agente para esse turno. Pode ser uma string simples (por exemplo, |
|
|
Não |
String |
A resposta esperada do agente para esse turno. Usado pelo |
Cenários simulados
Um cenário simulado define um perfil de ator e uma entrada inicial. O ator gera turnos subsequentes dinamicamente:
{ "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" ] } ] }
Campos de cenário
| Campo | Obrigatório | Tipo | Restrições | Description |
|---|---|---|---|---|
|
|
Sim |
String |
Non-empty |
Identificador exclusivo para o cenário. |
|
|
Sim |
Objeto |
Deve conter |
A identidade e o objetivo do ator, contendo |
|
|
Sim |
Cadeia de caracteres ou objeto |
Non-empty |
A primeira mensagem enviada ao seu agente para iniciar a conversa. Normalmente, uma string simples, mas também pode ser um objeto estruturado. |
|
|
Não |
String |
Metadados opcionais que descrevem o cenário. Útil para organizar e identificar cenários nos resultados. |
|
|
|
Não |
Inteiro |
Deve ser ≥ 1 |
Número máximo de turnos antes que a conversa termine. Padrão: 10. |
|
|
Não |
Lista de strings |
Afirmações em linguagem natural sobre o comportamento esperado. Usado pelo |
|
|
|
Não |
Objeto |
Metadados arbitrários de valores-chave para o cenário. |
nota
Os cenários simulados não oferecem suporte expected_trajectory ou são por turno expected_response porque o fluxo da conversa não é conhecido com antecedência. Use assertions para obter a verdade básica com cenários simulados.
Mapeamento da verdade terrestre
Ambos os executores mapeiam automaticamente os campos do conjunto de dados para os avaliadores que os usam:
| Avaliador | Campo da verdade fundamental | Nível | Description |
|---|---|---|---|
|
|
|
Traço |
Mede a precisão com que a resposta do agente corresponde à resposta esperada. |
|
|
|
Sessão |
Valida se o comportamento do agente satisfaz as afirmações da linguagem natural. |
|
|
|
Sessão |
Verifica se a sequência real de chamadas da ferramenta corresponde exatamente. |
|
|
|
Sessão |
Verifica se as ferramentas esperadas aparecem em ordem, permitindo extras entre elas. |
|
|
|
Sessão |
Verifica se todas as ferramentas esperadas estão presentes, independentemente da ordem. |
-
Os campos de verdade básica são opcionais. Os avaliadores que não usam a verdade básica (por exemplo,
Builtin.Helpfulness,Builtin.Faithfulness) avaliam com base apenas no conteúdo da sessão. -
Você pode incluir todos os campos de verdade básica em um único conjunto de dados. Cada corredor encaminha os campos relevantes para os avaliadores apropriados.
-
Se nenhum campo de verdade fundamental estiver presente, os avaliadores retornam ao modo livre de verdade fundamental.
Para obter mais detalhes sobre os campos de verdade básica e como eles funcionam com a API Evaluate, consulte Avaliações fundamentais da verdade.
Construção de conjuntos de dados em linha
Em vez de carregar de um arquivo JSON, você pode criar conjuntos de dados diretamente em 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 carregue de um arquivo JSON:
from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()