

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

# A/B 测试先决条件
<a name="ab-testing-prereqs"></a>

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

## 所需的资源
<a name="ab-prereqs-resources"></a>


| 资源 | 说明 | 
| --- | --- | 
| AgentCore 网关 | 一个活动 AgentCore 网关，其中至少有一个指向代理运行时的 HTTP 目标。 AgentCore 网关处理变体之间的流量分配。 | 
| 代理运行时间 | 使用亚马逊 Bedrock AgentCore SDK（版本 1.8\+）部署了至少一个代理运行时。SDK `BaggageSpanProcessor` 会自动将 A/B 测试实验的详细信息（实验 ARN 和变体名称）附加到运行时发出的所有 OpenTelemetry 跨度。+   **基于配置包的变体：**一个运行时就足够了。这两个变体在同一个运行时运行，配置包版本不同。 <br />+   **Target-based 变体：每个变体**部署一个运行时（总共两个）。  | 
| 在线评估配置 | 一种有效的在线评估配置，用于指定要针对会话运行哪些评估器。+   **基于配置包的变体：**一种在线评估配置，指向两个变体运行的单一运行时。 <br />+   **Target-based 变体：您用于 A/B 测试的每个运行时端点都**有一个在线评估配置（总共两个），因为每个端点都有自己的日志组。  | 
| 配置包（可选） | 使用基于配置包的变体时为必填项。两个捆绑版本或两个单独的捆绑包：一个用于控制，一个用于治疗。 | 

## SDK 要求
<a name="ab-prereqs-sdk"></a>

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

## 评估员要求
<a name="ab-prereqs-evaluators"></a>

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

## IAM 权限
<a name="ab-prereqs-iam"></a>

 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:*"
            ]
        }
    ]
}
```