

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

# 创建和启动人工循环
<a name="a2i-start-human-loop"></a>

*人工循环* 启动人工审核工作流，并将数据审核任务发送给工作人员。当您使用 Amazon A2I 内置任务类型之一时，当您的流程定义中指定的条件得到满足时，相应的 AWS 服务会代表您创建并启动人工循环。如果未在流定义中指定任何条件，则为每个对象创建一个人工循环。如果将 Amazon A2I 用于自定义任务，则在应用程序调用 `StartHumanLoop` 时，人工循环将启动。

按照以下说明操作，使用 Amazon Rekognition 或 Amazon Textract 内置任务类型以及自定义任务类型配置人工循环。

**先决条件**

要创建和启动人工循环，必须将`AmazonAugmentedAIFullAccess`策略附加到配置或启动人工循环的 AWS Identity and Access Management (IAM) 用户或角色。这是您用来通过 `HumanLoopConfig` 为内置任务类型配置人工循环的身份。对于自定义任务类型，这是您用来调用 `StartHumanLoop` 的身份。

此外，使用内置任务类型时，您的用户或角色必须有权调用与您的任务类型关联的 AWS 服务的 API 操作。例如，如果将 Amazon Rekognition 与 Augmented AI 结合使用，您必须附加调用 `DetectModerationLabels` 所需的权限。有关可用于授予这些权限的基于身份的策略的示例，请参阅 [Amazon Rekognition 基于身份的策略示例](https://docs.aws.amazon.com/rekognition/latest/dg/security_iam_id-based-policy-examples.html)和 [Amazon Textract 基于身份的策略示例](https://docs.aws.amazon.com/textract/latest/dg/security_iam_id-based-policy-examples.html)。您也可以使用更一般的策略 `AmazonAugmentedAIIntegratedAPIAccess` 以授予这些权限。有关更多信息，请参阅 [创建有权调用 Amazon A2I、Amazon Textract 和 Amazon Rekognition API 操作的用户](a2i-permissions-security.md#a2i-grant-general-permission)。

要创建和启动人工循环，您需要一个流定义 ARN。要了解如何创建流定义（或人工审核工作流），请参阅[创建人工审核工作流](a2i-create-flow-definition.md)。

**重要**  
Amazon A2I 要求，对于包含人工循环输入图像数据的所有 S3 存储桶，都必须附加 CORS 策略。要了解有关此变化的更多信息，请参阅 [CORS 权限要求](a2i-permissions-security.md#a2i-cors-update)。

## 为内置任务类型创建和启动人工循环
<a name="a2i-human-loop-built-in-task-type"></a>

要使用内置任务类型启动人工循环，请使用相应服务的 API 来提供输入数据并配置人工循环。对于 Amazon Textract，您可以使用 `AnalyzeDocument` API 操作。对于 Amazon Rekognition，您可以使用 `DetectModerationLabels` API 操作。您可以使用 AWS CLI 或特定语言的 SDK 通过这些 API 操作创建请求。

**重要**  
当您使用内置任务类型创建人工循环时，您可以使用 `DataAttributes` 指定一组与提供给 `StartHumanLoop` 操作的输入相关的 `ContentClassifiers`。使用内容分类器声明您的内容不含个人身份信息或成人内容。  
要使用 Amazon Mechanical Turk，请确保您的数据中不包含个人身份信息，包括 HIPAA 规定的受保护的健康信息。包括 `FreeOfPersonallyIdentifiableInformation` 内容分类器。如果你不使用这个内容分类器， SageMaker AI 不会将你的任务发送给 Mechanical Turk。即使您的数据不含成人内容，也请包含 `'FreeOfAdultContent'` 分类器。如果你不使用这些内容分类器， SageMaker AI 可能会限制可以查看你的任务的 Mechanical Turk 工作人员。

在您使用内置任务类型的 AWS 服务 API 启动机器学习作业后，Amazon A2I 会监控该服务的推理结果。例如，在使用 Amazon Rekognition 运行作业时，Amazon A2I 会检查每个图像的推理置信度分数，并将其与流定义中指定的置信度阈值进行比较。如果满足启动人工审核任务的条件，或者如果您未在流定义中指定条件，则人工审核任务将发送到工作人员。

### 创建 Amazon Textract 人工循环
<a name="a2i-human-loop-textract"></a>

Amazon A2I 与 Amazon Textract 集成，以便您能够使用 Amazon Textract API 配置和启动人工循环。要将文档文件发送到 Amazon Textract 来进行文本分析，您可以使用 Amazon Textract [`AnalyzeDocument` API 操作](https://docs.aws.amazon.com/textract/latest/dg/API_AnalyzeDocument.html)。要向此文档分析作业添加人工循环，您必须配置参数 `HumanLoopConfig`。

在配置人工循环时，您在 `HumanLoopConfig` 的 `FlowDefinitionArn` 中指定的流定义，必须与在 `Document` 参数的 `Bucket` 中标识的存储桶位于同一 AWS 区域。

下表显示了如何将此操作与 AWS CLI 和一起使用的示例 适用于 Python (Boto3) 的 AWS SDK。

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

以下请求示例使用 SDK for Python (Boto3)。有关更多信息，请参阅《AWS SDK for Python (Boto) API 参考》**中的 [analyze\$1document](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/textract.html#Textract.Client.analyze_document)。

```
import boto3

textract = boto3.client('textract', aws_region)

response = textract.analyze_document(
            Document={'S3Object': {'Bucket': bucket_name, 'Name': document_name}},
            FeatureTypes=["TABLES", "FORMS"],
            HumanLoopConfig={
                'FlowDefinitionArn': 'arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name',
                'HumanLoopName': 'human_loop_name',
                'DataAttributes': {'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation','FreeOfAdultContent']}
            }
          )
```

------
#### [ AWS CLI ]

以下请求示例使用 AWS CLI。有关更多信息，请参阅[《AWS CLI 命令参考》](https://docs.aws.amazon.com/cli/latest/reference/)**中的 [analyze-document](https://docs.aws.amazon.com/cli/latest/reference/textract/analyze-document.html)。

```
$ aws textract analyze-document \
     --document '{"S3Object":{"Bucket":"bucket_name","Name":"document_name"}}' \
     --human-loop-config HumanLoopName="human_loop_name",FlowDefinitionArn="arn:aws:sagemaker:aws-region:aws_account_number:flow-definition/flow_def_name",DataAttributes='{ContentClassifiers=["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}' \
     --feature-types '["TABLES", "FORMS"]'
```

```
$ aws textract analyze-document \
     --document '{"S3Object":{"Bucket":"bucket_name","Name":"document_name"}}' \
     --human-loop-config \
          '{"HumanLoopName":"human_loop_name","FlowDefinitionArn":"arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name","DataAttributes": {"ContentClassifiers":["FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent"]}}' \
     --feature-types '["TABLES", "FORMS"]'
```

------

在配置了人工循环的情况下运行 `AnalyzeDocument` 后，Amazon A2I 将监控来自 `AnalyzeDocument` 的结果，并根据流定义的激活条件检查该结果。如果一个或多个键/值对的 Amazon Textract 推理置信度分数满足审核条件，Amazon A2I 将启动人工审核循环，并将 [https://docs.aws.amazon.com/textract/latest/dg/API_HumanLoopActivationOutput.html](https://docs.aws.amazon.com/textract/latest/dg/API_HumanLoopActivationOutput.html) 对象包含在 `AnalyzeDocument` 响应中。

### 创建 Amazon Rekognition 人工循环
<a name="a2i-human-loop-rekognition"></a>

Amazon A2I 将与 Amazon Rekognition 集成，以便您能够使用 Amazon Rekognition API 配置和启动人工循环。要将图像发送到 Amazon Rekognition 以进行内容审核，请使用 Amazon Rekognition [`DetectModerationLabels` API 操作](https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectModerationLabels.html)。要配置人工循环，请在配置 `DetectModerationLabels` 时设置 `HumanLoopConfig` 参数。

在配置人工循环时，您在 `HumanLoopConfig` 的 `FlowDefinitionArn` 中指定的流定义，必须与在 `Image` 参数的 `Bucket` 中标识的 S3 存储桶位于同一 AWS 区域。

下表显示了如何将此操作与 AWS CLI 和一起使用的示例 适用于 Python (Boto3) 的 AWS SDK。

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

以下请求示例使用 SDK for Python (Boto3)。有关更多信息，请参阅**《AWS SDK for Python (Boto) API 参考》中的 [detect\$1moderation\$1labels](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html#Rekognition.Client.detect_moderation_labels)。

```
import boto3

rekognition = boto3.client("rekognition", aws_region)

response = rekognition.detect_moderation_labels( \
        Image={'S3Object': {'Bucket': bucket_name, 'Name': image_name}}, \
        HumanLoopConfig={ \
            'HumanLoopName': 'human_loop_name', \
            'FlowDefinitionArn': , "arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name" \
            'DataAttributes': {'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation','FreeOfAdultContent']}
         })
```

------
#### [ AWS CLI ]

以下请求示例使用 AWS CLI。有关更多信息，请参阅《[AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/)》**中的 [detect-moderation-labels](https://docs.aws.amazon.com/cli/latest/reference/rekognition/detect-moderation-labels.html)。

```
$ aws rekognition detect-moderation-labels \
    --image "S3Object={Bucket='bucket_name',Name='image_name'}" \
    --human-loop-config HumanLoopName="human_loop_name",FlowDefinitionArn="arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name",DataAttributes='{ContentClassifiers=["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}'
```

```
$ aws rekognition detect-moderation-labels \
    --image "S3Object={Bucket='bucket_name',Name='image_name'}" \
    --human-loop-config \
        '{"HumanLoopName": "human_loop_name", "FlowDefinitionArn": "arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name", "DataAttributes": {"ContentClassifiers": ["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}}'
```

------

在配置了人工循环的情况下运行 `DetectModerationLabels` 后，Amazon A2I 将监控来自 `DetectModerationLabels` 的结果，并根据流定义的激活条件检查该结果。如果某个图像的 Amazon Rekognition 推理置信度分数满足审核条件，Amazon A2I 将启动人工审核循环，并将响应元素 `HumanLoopActivationOutput` 包含在 `DetectModerationLabels` 响应中。

## 为自定义任务类型创建和启动人工循环
<a name="a2i-instructions-starthumanloop"></a>

要为自定义人工审核任务配置人工循环，请在应用程序中使用 `StartHumanLoop` 操作。本节提供了使用 适用于 Python (Boto3) 的 AWS SDK 和 AWS Command Line Interface (AWS CLI) 的人工循环请求示例。有关支持的其他特定语言的文档 SDKs ，请使用 Amazon Am `StartHumanLoop` gented AI Runtime API 文档中的 “**另请参阅**” 部分。[StartHumanLoop](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StartHumanLoop.html)请参阅[使用 Amazon A2I 的使用场景和示例](a2i-task-types-general.md)以查看演示如何将 Amazon A2I 与自定义任务类型结合使用的示例。

**先决条件**

要完成此过程，您需要：
+ 输入数据的格式设置为 JSON 格式文件的字符串表示形式
+ 流定义的 Amazon 资源名称 (ARN)

**配置人工循环**

1. 对于 `DataAttributes`，指定一组与提供给 `StartHumanLoop` 操作的输入相关的 `ContentClassifiers`。使用内容分类器声明您的内容不含个人身份信息或成人内容。

   要使用 Amazon Mechanical Turk，请确保您的数据中不包含个人身份信息（包括 HIPAA 规定的受保护的健康信息），并包括 `FreeOfPersonallyIdentifiableInformation` 内容分类器。如果你不使用这个内容分类器， SageMaker AI 不会将你的任务发送给 Mechanical Turk。即使您的数据不含成人内容，也请包含 `'FreeOfAdultContent'` 分类器。如果你不使用这些内容分类器， SageMaker AI 可能会限制可以查看你的任务的 Mechanical Turk 工作人员。

1. 对于 `FlowDefinitionArn`，输入流定义的 Amazon 资源名称 (ARN)。

1. 对于 `HumanLoopInput`，以 JSON 格式文件的字符串表示形式输入您的输入数据。构建输入数据和自定义工作人员任务模板，以便在您启动人工循环时，向工作人员正确显示输入数据。请参阅[预览工作人员任务模板](a2i-custom-templates.md#a2i-preview-your-custom-template)以了解如何预览自定义工作人员任务模板。

1. 对于 `HumanLoopName`，输入人工循环的名称。该名称在您账户所在的区域中必须唯一，并且最多可以包含 63 个字符。有效字符：a-z、0-9 和 -（连字符）。

**启动人工循环**
+ 要启动人工循环，请使用首选的特定于语言的 SDK 提交与以下示例类似的请求。

------
#### [ 适用于 Python (Boto3) 的 AWS SDK ]

以下请求示例使用 SDK for Python (Boto3)。有关更多信息，请参阅《AWS SDK for Python (Boto) API 参考》**中的 [Boto 3 Augmented AI 运行时系统](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.start_human_loop)。

```
import boto3

a2i_runtime_client = boto3.client('sagemaker-a2i-runtime')

response = a2i_runtime_client.start_human_loop(
    HumanLoopName='human_loop_name',
    FlowDefinitionArn='arn:aws:sagemaker:aws-region:xyz:flow-definition/flow_def_name',
    HumanLoopInput={
        'InputContent': '{"InputContent": {\"prompt\":\"What is the answer?\"}}'    
    },
    DataAttributes={
        'ContentClassifiers': [
            'FreeOfPersonallyIdentifiableInformation'|'FreeOfAdultContent',
        ]
    }
)
```

------
#### [ AWS CLI ]

以下请求示例使用 AWS CLI。有关更多信息，请参阅《[AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/)》**中的 [start-human-loop](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-a2i-runtime/start-human-loop.html)。

```
$ aws sagemaker-a2i-runtime start-human-loop
        --flow-definition-arn 'arn:aws:sagemaker:aws_region:xyz:flow-definition/flow_def_name' \
        --human-loop-name 'human_loop_name' \
        --human-loop-input '{"InputContent": "{\"prompt\":\"What is the answer?\"}"}' \
        --data-attributes ContentClassifiers="FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent" \
```

------

当您通过直接调用 `StartHumanLoop` 成功启动人工循环时，响应将包含一个 `HumanLoopARN` 和一个设置为 `NULL` 的 `HumanLoopActivationResults` 对象。您可以使用此人工循环名称来监控和管理您的人工循环。

## 后续步骤:
<a name="a2i-next-step-starthumanloop"></a>

启动人工循环后，您可以使用 Amazon Agumented AI 运行时 API 和亚马逊 CloudWatch 事件对其进行管理和监控。要了解更多信息，请参阅[监控和管理您的人工循环](a2i-monitor-humanloop-results.md)。