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

根據預設, 命令會啟動任務並立即傳回。傳遞 --wait 以封鎖,直到任務達到結束狀態 (COMPLETED、 FAILED或 STOPPED),之後 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 (--evaluator)、 -n(--name)、 -d (--lookback-days)、 -s (--session-ids) 和 -g()--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()), )

請求參數

參數 Type 必要 描述

batchEvaluationName

String

是

批次評估任務的名稱。模式:以字母、英數字元和底線開頭,最多 48 個字元。

dataSourceConfig

物件

是

尋找客服人員工作階段的位置。使用代理程式的服務名稱和確切的日誌群組名稱或日誌群組名稱字首來指定cloudWatchLogs來源。請參閱以下 工作階段來源。

evaluators

清單

是

評估者清單。每個項目都有一個 evaluatorId 欄位 (例如 Builtin.GoalSuccessRate)。最多 10 個評估者。

evaluationMetadata

物件

否

包含 sessionMetadata,每個工作階段的 Ground Truth 和中繼資料清單。最多 500 個項目。

outputConfig

物件

否

每個工作階段結果和分數指標的選用 CloudWatch 目的地。指定 cloudWatchConfig以選擇結果日誌群組和指標命名空間。請參閱以下 結果輸出。

clientToken

String

否

冪等權杖。如果您使用相同的用戶端字符重試請求,服務會傳回現有的任務,而不是建立新的任務。

工作階段來源

dataSourceConfig 參數指定服務探索代理程式工作階段的 CloudWatch Logs 位置。

必要欄位

欄位 Type 說明

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"] } }

選填欄位

欄位 Type 說明

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" } }

將指標發佈至自訂命名空間

metricsNamespace 設定為在您自己的 CloudWatch 命名空間下發佈分數指標,而不是 Bedrock-AgentCore/Evaluations。此值不能以 開頭AWS/。

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

回應

欄位 Type Description

batchEvaluationId

String

批次評估的唯一識別符。

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

服務端錯誤。重試 請求。