View a markdown version of this page

A/B 测试先决条件 - Amazon Bedrock AgentCore
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

A/B 测试先决条件

在创建 A/B 测试之前,请确保以下资源准备就绪。

所需的资源

资源 说明

AgentCore 网关

一个活动 AgentCore 网关,其中至少有一个指向代理运行时的 HTTP 目标。 AgentCore 网关处理变体之间的流量分配。

代理运行时间

使用亚马逊 Bedrock AgentCore SDK(版本 1.8+)部署了至少一个代理运行时。SDK BaggageSpanProcessor 会自动将 A/B 测试实验的详细信息(实验 ARN 和变体名称)附加到运行时发出的所有 OpenTelemetry 跨度。

  • 基于配置包的变体:一个运行时就足够了。这两个变体在同一个运行时运行,配置包版本不同。

  • Target-based 变体:每个变体部署一个运行时(总共两个)。

在线评估配置

一种有效的在线评估配置,用于指定要针对会话运行哪些评估器。

  • 基于配置包的变体:一种在线评估配置,指向两个变体运行的单一运行时。

  • Target-based 变体:您用于 A/B 测试的每个运行时端点都有一个在线评估配置(总共两个),因为每个端点都有自己的日志组。

配置包(可选)

使用基于配置包的变体时为必填项。两个捆绑版本或两个单独的捆绑包:一个用于控制,一个用于治疗。

SDK 要求

需要亚马逊 Bedrock AgentCore SDK 版本 1.8 或更高版本。该软件开发工具包BaggageSpanProcessor包含一个,它可以读取 AgentCore 网关传播的实验行李标头,并使用实验 ARN 和变体名称自动标记所有运行时间 OpenTelemetry 跨度。在线评估管道读取这些属性,将会话分数映射到正确的变体。无需在代理代码中添加其他工具。

评估员要求

注意

A/B 测试支持内置 LLM-as-judge、自定义和基于代码的评估器,但要求每个评估器返回一个数值以进行统计显著性计算。对于自定义 LLM-as-judge 评估器,使用numerical比例ratingScale进行配置(不是categorical)。对于基于代码的评估器,请在响应架构中包含该value字段。

IAM 权限

A/B 测试执行角色必须信任bedrock-agentcore.amazonaws.com服务主体,并拥有 AgentCore 网关操作、配置包读取、在线评估配置读取和 CloudWatch 日志访问权限。

注意

仅当您自带执行角色并将其传递时,才需要手动创建此角色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:*" ] } ] }