View a markdown version of this page

배치 평가 시작 - Amazon Bedrock AgentCore

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

배치 평가 시작

배치 평가를 시작하여 여러 에이전트 세션에 대해 평가자를 실행합니다. 이 서비스는 CloudWatch Logs에서 세션을 검색하고 각 세션에 대해 각 평가자를 실행하며 집계 결과를 생성합니다.

코드 샘플

예
AgentCore CLI

CLI는를 사용할 때 프로젝트 구성에서 serviceNames 및를 logGroupNames 자동으로 확인합니다--runtime.

agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate Builtin.Helpfulness Builtin.Faithfulness

선택적 플래그가 있는 경우:

# Custom name and lookback window agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --name my_baseline_eval \ --lookback-days 1 # Specific sessions agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --session-ids session-abc123 session-def456 # With ground truth agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate Builtin.Correctness \ --ground-truth ground-truth.json

기본적으로 명령은 작업을 시작하고 즉시 반환합니다. 작업이 터미널 상태(COMPLETED, FAILED또는 STOPPED)에 도달할 때까지 --wait를 블록으로 전달하면 CLI가 평가자당 평균 점수를 표시하고 결과를에 저장합니다.cli/jobs/batch-eval-results/.

agentcore run batch-evaluation는 다음 플래그도 지원합니다.

  • --wait - 작업이 터미널 상태에 도달할 때까지 차단합니다.

  • --json - 기계가 읽을 수 있는 JSON 출력을 내보냅니다.

  • --kms-key <arn> - 고객 관리형 KMS 키를 사용하여 배치 평가 결과를 암호화합니다.

  • --dataset <name> / --dataset-version <version>- 배치 평가 전에 데이터 세트 시나리오로 에이전트를 호출합니다(로컬 파일의 버전 생략 또는 N/ 사용DRAFT).

  • --endpoint <name> - 특정 런타임 엔드포인트(예: PROMPT_V1)를 대상으로 합니다. 기본값은 AGENTCORE_RUNTIME_ENDPOINT 환경 변수인 입니다DEFAULT.

  • --evaluator-arn <arns…​> - 대신 ARN별로 평가자를 참조합니다-e.

    대부분의 플래그에는 (--runtime), -r (--evaluator), -e (), -n (--name), -d (--session-ids) 및 -g ()와 같은 짧은 별칭--lookback-days-s이 있습니다--ground-truth.

    작업을 시작한 후 관리하려면를 실행agentcore stop batch-evaluation -i <id>하여 실행 중인 작업을 중지하고 작업 레코드를 agentcore archive batch-evaluation -i <id> 보관합니다.

AWS SDK (boto3)
import boto3 import uuid import time import json client = boto3.client("bedrock-agentcore", region_name="us-west-2") # All sessions in the log group response = client.start_batch_evaluation( batchEvaluationName=f"baseline_eval_{uuid.uuid4().hex[:8]}", evaluators=[ {"evaluatorId": "Builtin.GoalSuccessRate"}, {"evaluatorId": "Builtin.Helpfulness"}, {"evaluatorId": "Builtin.Faithfulness"}, ], dataSourceConfig={ "cloudWatchLogs": { "serviceNames": ["MyAgent.DEFAULT"], "logGroupNames": ["/aws/bedrock-agentcore/runtimes/MyAgent-abc123-DEFAULT"], } }, clientToken=str(uuid.uuid4()), ) batch_eval_id = response["batchEvaluationId"] print(f"Started: {batch_eval_id}") # Poll until complete while True: result = client.get_batch_evaluation(batchEvaluationId=batch_eval_id) status = result["status"] print(f"Status: {status}") if status in ("COMPLETED", "COMPLETED_WITH_ERRORS", "FAILED", "STOPPED"): break time.sleep(30) print(json.dumps(result, indent=4, default=str))

세션 ID 필터링 사용:

response = client.start_batch_evaluation( batchEvaluationName=f"targeted-eval-{uuid.uuid4().hex[:8]}", evaluators=[ {"evaluatorId": "Builtin.GoalSuccessRate"}, ], dataSourceConfig={ "cloudWatchLogs": { "serviceNames": ["MyAgent.DEFAULT"], "logGroupNames": ["/aws/bedrock-agentcore/runtimes/MyAgent-abc123-DEFAULT"], "filterConfig": { "sessionIds": ["session-001", "session-002", "session-003"] }, } }, clientToken=str(uuid.uuid4()), )

시간 범위 필터링 사용:

from datetime import datetime, timedelta, timezone now = datetime.now(timezone.utc) response = client.start_batch_evaluation( batchEvaluationName=f"weekly-eval-{uuid.uuid4().hex[:8]}", evaluators=[ {"evaluatorId": "Builtin.GoalSuccessRate"}, ], dataSourceConfig={ "cloudWatchLogs": { "serviceNames": ["MyAgent.DEFAULT"], "logGroupNames": ["/aws/bedrock-agentcore/runtimes/MyAgent-abc123-DEFAULT"], "filterConfig": { "timeRange": { "startTime": (now - timedelta(days=7)).isoformat(), "endTime": now.isoformat(), } }, } }, clientToken=str(uuid.uuid4()), )

요청 파라미터

파라미터 유형 필수 설명

batchEvaluationName

문자열

예

배치 평가 작업의 이름입니다. 패턴: 문자, 영숫자 및 밑줄, 최대 48자로 시작합니다.

dataSourceConfig

객체

예

에이전트 세션을 찾을 수 있는 위치입니다. 에이전트의 서비스 이름과 정확한 로그 그룹 이름 또는 로그 그룹 이름 접두사를 사용하여 cloudWatchLogs 소스를 지정합니다. 자세한 내용은 아래 세션 소스 섹션을 참조하세요.

evaluators

List

예

평가자 목록입니다. 각 항목에는 evaluatorId 필드가 있습니다(예: Builtin.GoalSuccessRate). 최대 10명의 평가자.

evaluationMetadata

객체

아니요

세션별 실측 정보 및 메타데이터 목록sessionMetadata인를 포함합니다. 최대 500개의 항목.

outputConfig

객체

아니요

세션별 결과 및 점수 지표를 위한 선택적 CloudWatch 대상입니다. 를 지정cloudWatchConfig하여 결과 로그 그룹 및 지표 네임스페이스를 선택합니다. 자세한 내용은 아래 결과 출력 섹션을 참조하세요.

clientToken

문자열

No

Idempotency 토큰입니다. 동일한 클라이언트 토큰으로 요청을 재시도하면 서비스는 새 작업을 생성하는 대신 기존 작업을 반환합니다.

세션 소스

dataSourceConfig 파라미터는 서비스가 에이전트 세션을 검색하는 CloudWatch Logs 위치를 지정합니다.

필수 필드

Field 유형 설명

cloudWatchLogs.serviceNames

문자열 목록(정확히 1)

CloudWatch에서 에이전트의 트레이스를 식별하는 서비스 이름입니다. 규칙: {RuntimeName}.DEFAULT.

cloudWatchLogs.logGroupNames

문자열 목록(1~5)

입력 로그 그룹을 선택하는 한 가지 방법입니다. 에이전트 원격 측정이 저장되는 정확한 CloudWatch 로그 그룹 이름을 지정합니다. logGroupNamePrefixes와는 함께 사용할 수 없습니다.

cloudWatchLogs.logGroupNamePrefixes

문자열 목록(1~5)

입력 로그 그룹을 선택하는 한 가지 방법입니다. 서비스는 이름이 이러한 접두사 중 하나로 시작하는 모든 로그 그룹에서 세션을 검색하므로 새로 생성된 일치하는 로그 그룹이 자동으로 선택됩니다. logGroupNames와는 함께 사용할 수 없습니다.

logGroupNames 또는 중 정확히 하나를 지정합니다logGroupNamePrefixes. 두 경우 모두 serviceNames는 선택한 로그 그룹 내에서 에이전트의 트레이스를 식별하는 데 필요합니다.

logGroupNamePrefixes를 사용하여 Amazon Bedrock AgentCore 런타임 로그 그룹과 일치하는 경우 런타임이 에이전트의 자체 로그 그룹으로 범위를 전송하는지 확인합니다. 여전히 공유 aws/spans 로그 그룹을 사용하는 에이전트의 경우 런타임UNIFIED_TRACES_DESTINATION_ENABLED=true에를 설정합니다. 자세한 내용은 Amazon Bedrock AgentCore 런타임에서 호스팅되는 에이전트의 범위 대상을 참조하세요.

# Match input log groups by prefix instead of exact names dataSourceConfig={ "cloudWatchLogs": { "logGroupNamePrefixes": ["/aws/bedrock-agentcore/runtimes/MyAgent-"], "serviceNames": ["MyAgent.DEFAULT"] } }

선택 필드

Field 유형 설명

cloudWatchLogs.filterConfig.sessionIds

문자열 목록

이러한 특정 세션 IDs만 평가합니다. 생략하면 서비스가 로그 그룹의 모든 세션을 검색합니다.

cloudWatchLogs.filterConfig.timeRange.startTime

ISO 8601 날짜/시간

이 시간 이후에 생성된 세션을 필터링합니다.

cloudWatchLogs.filterConfig.timeRange.endTime

ISO 8601 날짜/시간

이 시간 이전에 생성된 세션을 필터링합니다.

결과 출력

기본적으로 배치 평가 결과는 서비스 관리형 전용 로그 그룹으로 이동합니다. 세션별 결과가 작성되는 위치와 평가 점수를 받는 CloudWatch 지표 네임스페이스를 제어하는 outputConfig.cloudWatchConfig 데 사용합니다.

결과가 기록되는 위치 선택

  • DEDICATED_LOG_GROUP (기본값) - 결과를 전용 결과 로그 그룹에 기록합니다. logGroupName를 설정하지 않으면 서비스가 사용자를 대신하여 그룹을 관리합니다. 자체 그룹을 사용하려면를 설정합니다logGroupName( 참조사용자 지정 출력 로그 그룹 사용).

  • SOURCE_LOG_GROUP - 에이전트 트레이스를 읽은 동일한 로그 그룹에 결과를 다시 씁니다. 이 값을 사용할 때는를 설정하지 마십시오logGroupName.

사용자 지정 출력 로그 그룹 사용

의 경우 선택한 로그 그룹에 결과를 기록logGroupName하도록를 DEDICATED_LOG_GROUP설정합니다. 기존 로그 그룹은 있는 그대로 사용됩니다. 로그 그룹이 없는 경우 서비스는 이를 생성하므로 실행 역할이를 부여해야 합니다logs:CreateLogGroup. 이름은 서비스 관리형 기본 그룹을 제외하고 서비스 예약 /aws/bedrock-agentcore/evaluations/ 네임스페이스 아래에 있을 수 없습니다.

# Write results back to the trace source log group outputConfig={ "cloudWatchConfig": { "resultDestination": "SOURCE_LOG_GROUP" } } # Write results to a custom dedicated log group outputConfig={ "cloudWatchConfig": { "resultDestination": "DEDICATED_LOG_GROUP", "logGroupName": "/my/team/batch-evaluation-results" } }

사용자 지정 네임스페이스에 지표 게시

대신 자체 CloudWatch 네임스페이스에 점수 지표를 게시metricsNamespace하도록 설정합니다Bedrock-AgentCore/Evaluations. 값은 로 시작할 수 없습니다AWS/.

outputConfig={ "cloudWatchConfig": { "metricsNamespace": "MyTeam/Evaluations" } }

응답

Field 유형 설명

batchEvaluationId

문자열

배치 평가의 고유 식별자입니다.

batchEvaluationArn

문자열

배치 평가의 ARN입니다.

batchEvaluationName

문자열

지정한 이름입니다.

status

문자열

초기 상태입니다. 중 하나: PENDING, IN_PROGRESS.

evaluators

List

사용된 평가자입니다.

createdAt

타임스탬프

작업이 생성된 시간입니다.

outputConfig

객체

세션별 결과 및 점수 지표에 대한 CloudWatch 대상입니다.

오류

오류 HTTP 상태 설명

ValidationException

400

잘못된 요청 파라미터입니다. 필드 제약 조건 및 필수 필드를 확인합니다.

AccessDeniedException

403

권한이 부족합니다. IAM 정책을 확인합니다.

ConflictException

409

동일한 클라이언트 토큰을 사용한 배치 평가가 이미 다른 파라미터와 함께 존재합니다.

ThrottlingException

429

요청 속도가 초과되었습니다. 지수 백오프를 사용하여 재시도하세요.

InternalServerException

500

서비스 측 오류입니다. 요청을 다시 시도하세요.