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。

    ほとんどのフラグには短いエイリアス (-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 エントリ。

outputConfig

オブジェクト

いいえ

セッションごとの結果とスコアメトリクスのオプションの CloudWatch 送信先。を指定cloudWatchConfigして、結果ロググループとメトリクス名前空間を選択します。以下の「結果出力」を参照してください。

clientToken

String

いいえ

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

セッションソース

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

必須フィールド

フィールド タイプ 説明

cloudWatchLogs.serviceNames

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

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

cloudWatchLogs.logGroupNames

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

入力ロググループを選択する 1 つの方法。エージェントテレメトリが保存されている正確な CloudWatch ロググループ名を指定します。logGroupNamePrefixes と同時に使用することはできません。

cloudWatchLogs.logGroupNamePrefixes

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

入力ロググループを選択する 1 つの方法。サービスは、名前がこれらのプレフィックスのいずれかで始まるすべてのロググループからセッションを検出するため、新しく作成された一致するロググループが自動的に取得されます。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"] } }

任意フィールド

フィールド タイプ 説明

cloudWatchLogs.filterConfig.sessionIds

文字列のリスト

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

cloudWatchLogs.filterConfig.timeRange.startTime

ISO 8601 日時

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

cloudWatchLogs.filterConfig.timeRange.endTime

ISO 8601 日時

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

結果出力

デフォルトでは、バッチ評価結果は専用のサービスマネージドロググループに送られます。を使用してoutputConfig.cloudWatchConfig、セッションごとの結果が書き込まれる場所と、評価スコアを受け取る CloudWatch メトリクス名前空間を制御します。

結果が書き込まれる場所を選択する

  • DEDICATED_LOG_GROUP (デフォルト) – 専用の結果ロググループに結果を書き込みます。を設定しない場合logGroupName、サービスはユーザーに代わってグループを管理します。独自のグループを使用するには、 を設定します logGroupName (「」を参照カスタム出力ロググループを使用する)。

  • SOURCE_LOG_GROUP – エージェントトレースが読み取られたのと同じロググループに結果を書き込みます。この値を使用する場合は、 を設定しないでくださいlogGroupName。

カスタム出力ロググループを使用する

の場合DEDICATED_LOG_GROUP、選択したロググループに結果を書き込むlogGroupNameように を設定します。既存のロググループはそのまま使用されます。存在しない場合はサービスによって作成されます。そのためには、実行ロールが を付与する必要があります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" } }

[応答]

フィールド タイプ 説明

batchEvaluationId

文字列

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

batchEvaluationArn

String

バッチ評価の ARN。

batchEvaluationName

String

指定した名前。

status

String

初期ステータス。次のいずれか: PENDING、IN_PROGRESS。

evaluators

リスト

使用された評価者。

createdAt

タイムスタンプ

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

outputConfig

オブジェクト

セッションごとの結果とスコアメトリクスの CloudWatch 送信先。

エラー

エラー HTTP ステータス 説明

ValidationException

400

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

AccessDeniedException

403

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

ConflictException

409

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

ThrottlingException

429

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

InternalServerException

500

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