View a markdown version of this page

esquema de conjunto de datos - Amazon Bedrock AgentCore

esquema de conjunto de datos

Un conjunto de datos contiene uno o más escenarios. Cada escenario representa una conversación (sesión) con el agente. Los ejecutores de conjuntos de datos por lotes y bajo demanda utilizan el mismo formato de conjunto de datos.

El AgentCore SDK admite dos tipos de escenarios:

  • Los escenarios predefinidos utilizan una secuencia fija de turnos que se crean a mano. El corredor repite los turnos exactamente como están escritos.

  • Los escenarios simulados utilizan un LLM-backed actor para generar turnos de forma dinámica en función de la persona y el objetivo. Consulte Simulación de usuario para obtener más información sobre los perfiles de los actores y la configuración de la simulación.

FileDatasetProviderdetecta automáticamente el tipo de escenario a partir de la estructura JSON: los escenarios con un turns campo se cargan como predefinidos; los escenarios con un actor_profile campo (y noturns) se cargan como simulados.

Escenarios predefinidos

Un escenario predefinido especifica una secuencia fija de giros con entradas conocidas y salidas esperadas opcionales.

Single-turn ejemplo

Cada escenario envía un mensaje y comprueba la respuesta:

{ "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 ejemplo

Multi-turn los escenarios tienen varios turnos por escenario. Los turnos se ejecutan secuencialmente dentro de la misma sesión, manteniendo el contexto de la conversación. Cada turno puede tener su propio expected_response turno assertions y expected_trajectory aplicarse a toda la sesión:

{ "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 escenario

Campo Obligatorio Tipo Restricciones Description (Descripción)

scenario_id

Cadena

Non-empty

Identificador único del escenario.

turns

Lista de objetos

Non-empty lista

Lista de turnos de la conversación. Cada turno tiene input (obligatorio) y expected_response (opcional).

expected_trajectory

No

Lista de cadenas

Secuencia esperada de nombres de herramientas. Utilizado por los evaluadores de trayectoria (Builtin.TrajectoryExactOrderMatch,Builtin.TrajectoryInOrderMatch,Builtin.TrajectoryAnyOrderMatch).

assertions

No

Lista de cadenas

Afirmaciones en lenguaje natural sobre el comportamiento esperado. Utilizado por Builtin.GoalSuccessRate.

metadata

No

Objeto

Metadatos de valores clave arbitrarios para el escenario.

Gire los campos

Campo Obligatorio Tipo Restricciones Description (Descripción)

input

Cadena u objeto

Non-empty

El mensaje enviado al agente para este turno. Puede ser una cadena simple (por ejemplo,"What is my balance?") o un objeto estructurado (por ejemplo,{"role": "user", "content": "What is my balance?"}).

expected_response

No

Cadena

La respuesta esperada del agente para este turno. Utilizado por Builtin.Correctness. Mapeado posicionalmente con respecto a la traza producida por este turno; el turno 0 se asigna a la traza 0, el turno 1 se mapea a la traza 1.

Escenarios simulados

Un escenario simulado define un perfil de actor y una entrada inicial. El actor genera los turnos siguientes de forma dinámica:

{ "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 escenario

Campo Obligatorio Tipo Restricciones Description (Descripción)

scenario_id

Cadena

Non-empty

Identificador único del escenario.

actor_profile

Objeto

Debe contener context y goal

La identidad y el objetivo del actor, context incluidos (obligatorio), goal (obligatorio) y traits (opcional). Consulte Simulación de usuario.

input

Cadena u objeto

Non-empty

El primer mensaje enviado a su agente para iniciar la conversación. Suele ser una cadena simple, pero también puede ser un objeto estructurado.

scenario_description

No

Cadena

Metadatos opcionales que describen el escenario. Útiles para organizar e identificar escenarios en los resultados.

max_turns

No

Entero

Debe ser ≥ 1

Número máximo de turnos antes de que se detenga la conversación. Predeterminado: 10.

assertions

No

Lista de cadenas

Afirmaciones en lenguaje natural sobre el comportamiento esperado. Utilizado por Builtin.GoalSuccessRate.

metadata

No

Objeto

Metadatos de valores clave arbitrarios para el escenario.

nota

Los escenarios simulados no son compatibles expected_trajectory ni por turno expected_response porque el flujo de la conversación no se conoce de antemano. Úsalo assertions para obtener información básica con escenarios simulados.

Mapeo de la verdad fundamental

Ambos corredores asignan automáticamente los campos del conjunto de datos a los evaluadores que los utilizan:

Evaluador Campo de verdad fundamental Nivel Description (Descripción)

Builtin.Correctness

turns[].expected_response

Rastreo

Mide la precisión con la que la respuesta del agente coincide con la respuesta esperada.

Builtin.GoalSuccessRate

assertions

Session

Valida si el comportamiento del agente cumple con las afirmaciones del lenguaje natural.

Builtin.TrajectoryExactOrderMatch

expected_trajectory

Session

Comprueba que la secuencia real de llamadas a la herramienta coincide exactamente.

Builtin.TrajectoryInOrderMatch

expected_trajectory

Session

Comprueba que las herramientas esperadas aparecen en orden, lo que permite añadir extras entre ellas.

Builtin.TrajectoryAnyOrderMatch

expected_trajectory

Session

Comprueba que todas las herramientas esperadas estén presentes, independientemente del orden.

  • Los campos de información básica son opcionales. Los evaluadores que no utilizan la verdad fundamental (por ejemploBuiltin.Helpfulness,Builtin.Faithfulness) evalúan basándose únicamente en el contenido de la sesión.

  • Puede incluir todos los campos de información básica en un único conjunto de datos. Cada corredor envía los campos relevantes a los evaluadores correspondientes.

  • Si no hay campos de verdad fundamental, los evaluadores recurren a su modo libre de verdades fundamentales.

Para obtener más información sobre los campos basados en la verdad y sobre cómo funcionan con la API Evaluate, consulte las evaluaciones basadas en la verdad.

Construcción de conjuntos de datos en línea

En lugar de cargarlos desde un archivo JSON, puedes construir conjuntos de datos directamente 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"], ), ] )

O cárguelos desde un archivo JSON:

from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()