View a markdown version of this page

バッチ評価を開始する - Amazon Bedrock AgentCore

バッチ評価を開始する

バッチ評価を開始して、複数のエージェントセッションに対して評価者を実行します。このサービスは CloudWatch Logs からセッションを検出し、各セッションに対して各評価者を実行し、集計結果を生成します。

コードサンプル

AgentCore CLI

CLI は、 を使用するときにプロジェクト設定から serviceNameslogGroupNamesを自動的に解決します--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、、または STOPPED) に達するまで をブロック--waitに渡します。その後、CLI は評価者ごとの平均スコアを表示しFAILED、結果を に保存します.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

    ほとんどのフラグには短いエイリアス (-r--runtime)、 -e ()-n、 (--evaluator)--name-d、 (--lookback-days)-s、 ()-g、 (--session-ids) があります--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

リスト

はい

評価者のリスト。各エントリには evaluatorIdフィールド ( などBuiltin.GoalSuccessRate) があります。最大 10 人の評価者。

evaluationMetadata

オブジェクト

いいえ

sessionMetadataセッションごとのグラウンドトゥルースとメタデータのリストである が含まれます。最大 500 エントリ。

clientToken

String

いいえ

べき等性トークン。同じクライアントトークンを使用してリクエストを再試行すると、サービスは新しいジョブを作成する代わりに既存のジョブを返します。

セッションソース

dataSourceConfig パラメータは、サービスがエージェントセッションを検出する CloudWatch Logs の場所を指定します。

必須フィールド

フィールド タイプ 説明

cloudWatchLogs.serviceNames

文字列のリスト (完全 1)

CloudWatch でエージェントのトレースを識別するサービス名。規則: {RuntimeName}.DEFAULT

cloudWatchLogs.logGroupNames

文字列のリスト (1~5)

エージェントテレメトリが保存されている CloudWatch ロググループ名。規則: /aws/bedrock-agentcore/runtimes/{agentId}-DEFAULT

任意フィールド

フィールド タイプ 説明

cloudWatchLogs.filterConfig.sessionIds

文字列のリスト

これらの特定のセッション IDsのみを評価します。省略すると、サービスはロググループ内のすべてのセッションを検出します。

cloudWatchLogs.filterConfig.timeRange.startTime

ISO 8601 日時

この時間以降に作成されたセッションをフィルタリングします。

cloudWatchLogs.filterConfig.timeRange.endTime

ISO 8601 日時

この時間より前に作成されたセッションをフィルタリングします。

[応答]

フィールド タイプ 説明

batchEvaluationId

文字列

バッチ評価の一意の識別子。

batchEvaluationArn

String

バッチ評価の ARN。

batchEvaluationName

String

指定した名前。

status

String

初期ステータス。次のいずれか: PENDINGIN_PROGRESS

evaluators

リスト

使用された評価者。

createdAt

タイムスタンプ

ジョブが作成された日時。

outputConfig

オブジェクト

セッションごとの結果の CloudWatch Logs 送信先。

エラー

エラー HTTP ステータス 説明

ValidationException

400

リクエストパラメータが無効です。フィールドの制約と必須フィールドを確認します。

AccessDeniedException

403

アクセス許可が不十分です。IAM ポリシーを確認します。

ConflictException

409

同じクライアントトークンを持つバッチ評価は、異なるパラメータで既に存在します。

ThrottlingException

429

リクエストレートを超えました。エクスポネンシャルバックオフを使用して再試行してください。

InternalServerException

500

サービス側のエラー。リクエストを再試行します。