View a markdown version of this page

A/B 測試先決條件 - Amazon Bedrock AgentCore

A/B 測試先決條件

建立 A/B 測試之前,請確定已備妥下列資源。

必要的資源

資源 說明

AgentCore Gateway

具有至少一個 HTTP 目標的作用中 AgentCore Gateway,指向您的代理程式執行時間。AgentCore Gateway 會處理變體之間的流量分割。

代理程式執行時間

至少一個使用 Amazon Bedrock AgentCore SDK (1.8 版以上) 的已部署代理程式執行期。軟體開發套件BaggageSpanProcessor會自動將 A/B 測試實驗詳細資訊 (實驗 ARN 和變體名稱) 連接到執行時間發出的所有 OpenTelemetry 範圍。

  • 組態套件型變體:一個執行時間已足夠。這兩個變體都以不同的組態套件版本在相同的執行時間執行。

  • 目標型變體:每個變體部署一個執行期 (總共兩個)。

線上評估組態

作用中的線上評估組態,指定要針對工作階段執行哪些評估器。

  • 組態套件型變體:一個線上評估組態,指向兩個變體執行所在的單一執行時間。

  • 目標型變體:您用於 A/B 測試的每個執行時間端點一個線上評估組態 (總共兩個),因為每個端點都有自己的日誌群組。

組態套件 (選用)

使用組態套件型變體時為必要。兩個套件版本或兩個不同的套件:一個用於控制,另一個用於處理。

開發套件需求

需要 Amazon Bedrock AgentCore SDK 1.8 版或更新版本。開發套件包含讀取 AgentCore Gateway 傳播的實驗封包標頭的 BaggageSpanProcessor,並自動用實驗 ARN 和變體名稱對 OpenTelemetry 的所有執行時間加上戳記。線上評估管道會讀取這些屬性,將工作階段分數映射至正確的變體。您的代理程式程式碼不需要額外的檢測。

評估者要求

注意

A/B 測試支援內建、自訂 LLM-as-judge 和程式碼型評估器,但需要每個評估器傳回數值以進行統計顯著性運算。對於自訂 LLM-as-judge 評估器,ratingScale使用numerical比例設定 (而非 categorical)。對於程式碼型評估器,請在回應結構描述中包含 value 欄位。

IAM 許可

A/B 測試執行角色必須信任bedrock-agentcore.amazonaws.com服務主體,並具有 AgentCore Gateway 操作、組態套件讀取、線上評估組態讀取和 CloudWatch Logs 存取的許可。

注意

只有在您擁有自己的執行角色並使用 傳遞時,才需要手動建立此角色agentcore run ab-test --role-arn <arn>。如果您省略 --role-arn,AgentCore CLI 會自動為測試建立執行角色。

信任政策範例:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "${aws:PrincipalAccount}" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:*:${aws:PrincipalAccount}:ab-test/*" } } } ] }

許可政策範例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreResources", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetGateway", "bedrock-agentcore:GetGatewayTarget", "bedrock-agentcore:ListGatewayTargets", "bedrock-agentcore:CreateGatewayRule", "bedrock-agentcore:UpdateGatewayRule", "bedrock-agentcore:GetGatewayRule", "bedrock-agentcore:DeleteGatewayRule", "bedrock-agentcore:ListGatewayRules", "bedrock-agentcore:GetOnlineEvaluationConfig", "bedrock-agentcore:GetEvaluator", "bedrock-agentcore:GetConfigurationBundle", "bedrock-agentcore:GetConfigurationBundleVersion", "bedrock-agentcore:ListConfigurationBundleVersions" ], "Resource": "arn:aws:bedrock-agentcore:*:${aws:PrincipalAccount}:*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "CloudWatchLogsDescribe", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "*" }, { "Sid": "CloudWatchLogs", "Effect": "Allow", "Action": [ "logs:DescribeIndexPolicies", "logs:PutIndexPolicy", "logs:StartQuery", "logs:GetQueryResults", "logs:StopQuery", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:${aws:PrincipalAccount}:log-group:/aws/bedrock-agentcore/evaluations/*", "arn:aws:logs:*:${aws:PrincipalAccount}:log-group:aws/spans", "arn:aws:logs:*:${aws:PrincipalAccount}:log-group:aws/spans:*" ] } ] }