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개의 항목.

clientToken

문자열

No

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

세션 소스

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

필수 필드

Field 유형 설명

cloudWatchLogs.serviceNames

문자열 목록(정확히 1)

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

cloudWatchLogs.logGroupNames

문자열 목록(1~5)

에이전트 원격 측정이 저장되는 CloudWatch 로그 그룹 이름입니다. 규칙: /aws/bedrock-agentcore/runtimes/{agentId}-DEFAULT.

선택 필드

Field 유형 설명

cloudWatchLogs.filterConfig.sessionIds

문자열 목록

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

cloudWatchLogs.filterConfig.timeRange.startTime

ISO 8601 날짜/시간

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

cloudWatchLogs.filterConfig.timeRange.endTime

ISO 8601 날짜/시간

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

응답

Field 유형 설명

batchEvaluationId

문자열

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

batchEvaluationArn

문자열

배치 평가의 ARN입니다.

batchEvaluationName

문자열

지정한 이름입니다.

status

문자열

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

evaluators

List

사용된 평가자입니다.

createdAt

타임스탬프

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

outputConfig

객체

세션별 결과의 CloudWatch Logs 대상입니다.

오류

오류 HTTP 상태 설명

ValidationException

400

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

AccessDeniedException

403

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

ConflictException

409

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

ThrottlingException

429

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

InternalServerException

500

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