데이터 세트 스키마
데이터 세트에는 하나 이상의 시나리오가 포함됩니다. 각 시나리오는 에이전트와의 대화(세션)를 나타냅니다. 온디맨드 데이터 세트 실행기와 배치 데이터 세트 실행기 모두 동일한 데이터 세트 형식을 사용합니다.
AgentCore SDK는 두 가지 시나리오 유형을 지원합니다.
-
미리 정의된 시나리오는 사용자가 직접 작성한 고정된 회전 시퀀스를 사용합니다. 러너는 턴을 쓴 그대로 재생합니다.
-
시뮬레이션된 시나리오는 LLM 지원 액터를 사용하여 페르소나와 목표에 따라 동적으로 회전을 생성합니다. 액터 프로파일 및 시뮬레이션 구성에 대한 자세한 내용은 사용자 시뮬레이션을 참조하세요.
FileDatasetProvider는 JSON 구조에서 시나리오 유형을 자동 감지합니다. turns 필드가 있는 시나리오는 사전 정의된 대로 로드되고 actor_profile 필드가 있는 시나리오( 및 없음turns)는 시뮬레이션된 대로 로드됩니다.
미리 정의된 시나리오
사전 정의된 시나리오는 알려진 입력 및 선택적 예상 출력이 있는 고정 회전 시퀀스를 지정합니다.
단일 회전 예제
각 시나리오는 하나의 프롬프트를 전송하고 응답을 확인합니다.
{ "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"] } ] }
멀티턴 예제
다중 회전 시나리오에는 시나리오당 여러 회전이 있습니다. 동일한 세션 내에서 순차적으로 실행하여 대화 컨텍스트를 유지합니다. 각 턴에는 고유한가 있을 수 있지만 expected_response및는 전체 세션에 assertions expected_trajectory 적용됩니다.
{ "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" ] } ] }
시나리오 필드
| Field | 필수 | 유형 | 제약 조건 | 설명 |
|---|---|---|---|---|
|
|
예 |
문자열 |
비어 있지 않음 |
시나리오의 고유 식별자입니다. |
|
|
예 |
객체 목록 |
비어 있지 않은 목록 |
대화의 회전 목록입니다. 각 턴에는 |
|
|
아니요 |
문자열 목록 |
도구 이름의 예상 시퀀스입니다. 궤적 평가자( |
|
|
|
아니요 |
문자열 목록 |
예상 동작에 대한 자연어 어설션입니다. |
|
|
|
아니요 |
객체 |
시나리오에 대한 임의의 키-값 메타데이터입니다. |
필드 턴
| Field | 필수 | 유형 | 제약 조건 | 설명 |
|---|---|---|---|---|
|
|
예 |
문자열 또는 객체 |
비어 있지 않음 |
이 턴을 위해 에이전트에게 전송된 프롬프트입니다. 일반 문자열(예: |
|
|
아니요 |
문자열 |
이 턴에 대한 예상 에이전트 응답입니다. |
시뮬레이션된 시나리오
시뮬레이션된 시나리오는 액터 프로파일과 초기 입력을 정의합니다. 액터는 후속 회전을 동적으로 생성합니다.
{ "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" ] } ] }
시나리오 필드
| Field | 필수 | 유형 | 제약 조건 | 설명 |
|---|---|---|---|---|
|
|
예 |
문자열 |
비어 있지 않음 |
시나리오의 고유 식별자입니다. |
|
|
예 |
객체 |
|
(필수), |
|
|
예 |
문자열 또는 객체 |
비어 있지 않음 |
대화를 시작하기 위해 에이전트에게 전송된 첫 번째 메시지입니다. 일반적으로 일반 문자열이지만 구조화된 객체일 수도 있습니다. |
|
|
아니요 |
문자열 |
시나리오를 설명하는 선택적 메타데이터입니다. 결과에서 시나리오를 구성하고 식별하는 데 유용합니다. |
|
|
|
아니요 |
Integer |
≥ 1이어야 합니다. |
대화가 중지되기 전 최대 회전 수입니다. 기본값: 10. |
|
|
아니요 |
문자열 목록 |
예상 동작에 대한 자연어 어설션입니다. |
|
|
|
아니요 |
객체 |
시나리오에 대한 임의의 키-값 메타데이터입니다. |
참고
시뮬레이션된 시나리오는 대화 흐름을 미리 알 수 없기 expected_response 때문에 expected_trajectory 또는 턴당을 지원하지 않습니다. 시뮬레이션된 시나리오에서 실측 정보에 assertions를 사용합니다.
실측 정보 매핑
두 러너 모두 데이터세트 필드를 사용하는 평가자에게 자동으로 매핑합니다.
| 평가자 | 실측 정보 필드 | 수준 | 설명 |
|---|---|---|---|
|
|
|
추적 |
에이전트의 응답이 예상 응답과 얼마나 정확하게 일치하는지 측정합니다. |
|
|
|
세션 |
에이전트의 동작이 자연어 어설션을 충족하는지 확인합니다. |
|
|
|
세션 |
실제 도구 호출 시퀀스가 정확히 일치하는지 확인합니다. |
|
|
|
세션 |
예상 도구가 순서대로 나타나는지 확인하여 이들 간에 추가 항목을 허용합니다. |
|
|
|
세션 |
순서에 관계없이 모든 예상 도구가 있는지 확인합니다. |
-
실측 정보 필드는 선택 사항입니다. 실측 정보를 사용하지 않는 평가자(예: ,
Builtin.HelpfulnessBuiltin.Faithfulness)는 세션 콘텐츠만을 기반으로 평가합니다. -
모든 실측 정보 필드를 단일 데이터 세트에 포함할 수 있습니다. 각 실행기는 관련 필드를 적절한 평가자에게 라우팅합니다.
-
실측 필드가 없는 경우 평가자는 실측 모드로 돌아갑니다.
실측 정보 필드와 평가 API의 작동 방식에 대한 자세한 내용은 실측 정보 평가를 참조하세요.
인라인 데이터 세트 구성
JSON 파일에서 로드하는 대신 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"], ), ] )
또는 JSON 파일에서 로드합니다.
from bedrock_agentcore.evaluation import FileDatasetProvider dataset = FileDatasetProvider("dataset.json").get_dataset()