教程:开始使用 Amazon A2I API - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

教程:开始使用 Amazon A2I API

本教程介绍了您可以用于开始使用 Amazon A2I 的 API 操作。

要使用 Jupyter 笔记本来运行这些操作,请从使用 Amazon A2I 的使用案例和示例并使用将 SageMaker 笔记本实例与亚马逊 A2I Jupyter 笔记本电脑一起使用,了解如何在 SageMaker 笔记本实例中使用它。

要了解有关可与 Amazon A2I 配合使用的 API 操作的更多信息,请参阅在 Amazon Augmented AI 中使用 API.

创建私人工作团队

您可以创建一个私人工作团队并将自己添加为工作人员,以便您可以预览 Amazon A2I。

如果您不熟悉 Amazon Cognito,建议您使用 SageMaker 控制台创建私有人力,然后将自己添加为私有人力。有关说明,请参阅第 1 步:创建工作团队

如果您熟悉 Amazon Cognito,您可以使用以下说明使用 SageMaker API 创建私人工作团队。创建工作团队后,请注意工作团队 ARN (WorkteamArn)。

要了解有关私有人力和其他可用配置的更多信息,请参阅使用私有人力.

创建私有人力

如果您尚未创建私有人力,则可以使用Amazon Cognito 用户池. 确保您已将自己添加到此用户池。可以使用Amazon SDK for Python (Boto3) create_workforcefunction. 有关其他语言特定的 SDK,请参阅创作人员.

response = client.create_workforce( CognitoConfig={ "UserPool": "Pool_ID", "ClientId": "app-client-id" }, WorkforceName="workforce-name" )

创建一个私人工作团队

当您在Amazon区域来配置和启动您的人工循环,您可以使用Amazon SDK for Python (Boto3) create_workteamfunction. 有关其他语言特定的 SDK,请参阅CreateWorkteam.

response = client.create_workteam( WorkteamName="work-team-name", WorkforceName= "workforce-name", MemberDefinitions=[ { "CognitoMemberDefinition": { "UserPool": "<aws-region>_ID", "UserGroup": "user-group", "ClientId": "app-client-id" }, } ] )

按如下方式访问您的工作团队 ARN:

workteamArn = response["WorkteamArn"]

在您的帐户中列出私人工作团队

如果您已经创建了一个私有工作团队,则可以列出给定的Amazon使用您的账户中的区域Amazon SDK for Python (Boto3) list_workteamsfunction. 有关其他语言特定的 SDK,请参阅ListWorkteams.

response = client.list_workteams()

如果您的帐户中有许多工作团队,则可能需要使用MaxResultsSortBy, 和NameContains来筛选结果。

创建人工审核工作流程

您可以使用 Amazon A2I 创建人工审查工作流,CreateFlowDefinitionoperation. 在创建人工审核工作流程时,您需要创建人工任务 UI。您可使用CreateHumanTaskUioperation.

如果您将亚马逊 A2I 与 Amazon Textract 或亚马逊申请集成一起使用,则可以使用 JSON 指定激活条件。

创建人工任务 UI

如果您正在创建用于 Amazon Textract 或亚马逊重申集成的人工审核工作流程,则需要使用和修改预先制作的工作人员任务模板。对于所有自定义集成,您可以使用自己的自定义工作人员任务模板。使用下表了解如何使用两个内置集成的工作人员任务模板创建人工任务 UI。将模板替换为您自己的模板,以自定义此请求。

Amazon Textract – Key-value pair extraction

要了解有关此模板的更多信息,请参阅Amazon Textract 的自定义模板示例.

Amazon Rekognition – Image moderation

要了解有关此模板的更多信息,请参阅Amazon Rekognition 订单的自定义模板示例.

Custom Integration

以下是可在自定义集成中使用的示例模板。此模板用于笔记本,演示了与 Amazon Comprehend 的自定义集成。

使用上面指定的模板,您可以使用Amazon SDK for Python (Boto3) create_human_task_uifunction. 有关其他语言特定的 SDK,请参阅CreateHumanTaskUi.

response = client.create_human_task_ui( HumanTaskUiName="human-task-ui-name", UiTemplate={ "Content": template } )

此响应元素包含人工任务 UI ARN。按如下方式保存此内容:

humanTaskUiArn = response["HumanTaskUiArn"]

创建 JSON 以指定激活条件

对于 Amazon Textract 和 Amazon Rekognition 内置集成,您可以将激活条件保存在 JSON 对象中,并在CreateFlowDefinition请求.

接下来,选择一个选项卡以查看可用于这些内置集成的示例激活条件。有关激活条件选项的其他信息,请参阅亚马逊 Augmented AI 中的人工循环激活条件 JSON 架构.

Amazon Textract – Key-value pair extraction

此示例指定特定键的条件(例如Mail address)。如果 Amazon Textract 的置信度超出此处设置的阈值,则文档将发送给人员进行审核,并且启动人工循环的特定键会提示工作人员。

import json humanLoopActivationConditions = json.dumps( { "Conditions": [ { "Or": [ { "ConditionType": "ImportantFormKeyConfidenceCheck", "ConditionParameters": { "ImportantFormKey": "Mail address", "ImportantFormKeyAliases": ["Mail Address:","Mail address:", "Mailing Add:","Mailing Addresses"], "KeyValueBlockConfidenceLessThan": 100, "WordBlockConfidenceLessThan": 100 } }, { "ConditionType": "MissingImportantFormKey", "ConditionParameters": { "ImportantFormKey": "Mail address", "ImportantFormKeyAliases": ["Mail Address:","Mail address:","Mailing Add:","Mailing Addresses"] } }, { "ConditionType": "ImportantFormKeyConfidenceCheck", "ConditionParameters": { "ImportantFormKey": "Phone Number", "ImportantFormKeyAliases": ["Phone number:", "Phone No.:", "Number:"], "KeyValueBlockConfidenceLessThan": 100, "WordBlockConfidenceLessThan": 100 } }, { "ConditionType": "ImportantFormKeyConfidenceCheck", "ConditionParameters": { "ImportantFormKey": "*", "KeyValueBlockConfidenceLessThan": 100, "WordBlockConfidenceLessThan": 100 } }, { "ConditionType": "ImportantFormKeyConfidenceCheck", "ConditionParameters": { "ImportantFormKey": "*", "KeyValueBlockConfidenceGreaterThan": 0, "WordBlockConfidenceGreaterThan": 0 } } ] } ] } )
Amazon Rekognition – Image moderation

此处使用的人体循环激活条件是针对 Amazon Rekognition 内容审核量量身定制的;它们基于SuggestiveFemale Swimwear Or Underwear审查标签。

import json humanLoopActivationConditions = json.dumps( { "Conditions": [ { "Or": [ { "ConditionType": "ModerationLabelConfidenceCheck", "ConditionParameters": { "ModerationLabelName": "Suggestive", "ConfidenceLessThan": 98 } }, { "ConditionType": "ModerationLabelConfidenceCheck", "ConditionParameters": { "ModerationLabelName": "Female Swimwear Or Underwear", "ConfidenceGreaterThan": 98 } } ] } ] } )

创建人工审核工作流程

本节提供了CreateFlowDefinition Amazon SDK for Python (Boto3)请求使用前面章节中创建的资源。有关其他语言特定的 SDK,请参阅CreateFlowDefinition. 使用下表中的选项卡查看为亚马逊 Textract 和亚马 Amazon Rekognition 提醒内置集成创建人工审核工作流程的请求。

Amazon Textract – Key-value pair extraction

如果您使用与 Amazon Textract 的内置集成,则必须指定"AWS/Textract/AnalyzeDocument/Forms/V1"对于 来说为"AwsManagedHumanLoopRequestSource"HumanLoopRequestSource.

response = client.create_flow_definition( FlowDefinitionName="human-review-workflow-name", HumanLoopRequestSource={ "AwsManagedHumanLoopRequestSource": "AWS/Textract/AnalyzeDocument/Forms/V1" }, HumanLoopActivationConfig={ "HumanLoopActivationConditionsConfig": { "HumanLoopActivationConditions": humanLoopActivationConditions } }, HumanLoopConfig={ "WorkteamArn": workteamArn, "HumanTaskUiArn": humanTaskUiArn, "TaskTitle": "Document entry review", "TaskDescription": "Review the document and instructions. Complete the task", "TaskCount": 1, "TaskAvailabilityLifetimeInSeconds": 43200, "TaskTimeLimitInSeconds": 3600, "TaskKeywords": [ "document review", ], }, OutputConfig={ "S3OutputPath": "s3://DOC-EXAMPLE-BUCKET/prefix/", }, RoleArn="arn:aws:iam::<account-number>:role/<role-name>", Tags=[ { "Key": "string", "Value": "string" }, ] )
Amazon Rekognition – Image moderation

如果您使用与亚马逊重申的内置集成,则必须指定"AWS/Rekognition/DetectModerationLabels/Image/V3"对于 来说为"AwsManagedHumanLoopRequestSource"HumanLoopRequestSource.

response = client.create_flow_definition( FlowDefinitionName="human-review-workflow-name", HumanLoopRequestSource={ "AwsManagedHumanLoopRequestSource": "AWS/Rekognition/DetectModerationLabels/Image/V3" }, HumanLoopActivationConfig={ "HumanLoopActivationConditionsConfig": { "HumanLoopActivationConditions": humanLoopActivationConditions } }, HumanLoopConfig={ "WorkteamArn": workteamArn, "HumanTaskUiArn": humanTaskUiArn, "TaskTitle": "Image content moderation", "TaskDescription": "Review the image and instructions. Complete the task", "TaskCount": 1, "TaskAvailabilityLifetimeInSeconds": 43200, "TaskTimeLimitInSeconds": 3600, "TaskKeywords": [ "content moderation", ], }, OutputConfig={ "S3OutputPath": "s3://DOC-EXAMPLE-BUCKET/prefix/", }, RoleArn="arn:aws:iam::<account-number>:role/<role-name>", Tags=[ { "Key": "string", "Value": "string" }, ] )
Custom Integration

如果您使用自定义集成,请排除以下参数:HumanLoopRequestSourceHumanLoopActivationConfig.

response = client.create_flow_definition( FlowDefinitionName="human-review-workflow-name", HumanLoopConfig={ "WorkteamArn": workteamArn, "HumanTaskUiArn": humanTaskUiArn, "TaskTitle": "Image content moderation", "TaskDescription": "Review the image and instructions. Complete the task", "TaskCount": 1, "TaskAvailabilityLifetimeInSeconds": 43200, "TaskTimeLimitInSeconds": 3600, "TaskKeywords": [ "content moderation", ], }, OutputConfig={ "S3OutputPath": "s3://DOC-EXAMPLE-BUCKET/prefix/", }, RoleArn="arn:aws:iam::<account-number>:role/<role-name>", Tags=[ { "Key": "string", "Value": "string" }, ] )

创建人工审核工作流后,您可以从响应中检索流定义 ARN:

humanReviewWorkflowArn = response["FlowDefinitionArn"]

创建人工循环

您用于启动人工循环的 API 操作取决于您使用的 Amazon A2I 集成。

在下表中选择您的任务类型,以查看 Amazon Textract 和亚马 Amazon Rekognition 申请的示例请求,使用Amazon SDK for Python (Boto3).

Amazon Textract – Key-value pair extraction

以下示例使用Amazon SDK for Python (Boto3)调用analyze_document(在 us-west-2 中)。将斜体红色文本替换为您的资源。加入DataAttributes参数,如果您使用的是亚 Amazon Mechanical Turk 工作人员。有关更多信息,请参阅 。分析文档文档中的Amazon SDK for Python (Boto)API 参考.

response = client.analyze_document( Document={"S3Object": {"Bucket": "AWSDOC-EXAMPLE-BUCKET", "Name": "document-name.pdf"}, HumanLoopConfig={ "FlowDefinitionArn":"arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name", "HumanLoopName":"human-loop-name", "DataAttributes" : {ContentClassifiers:["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]} } FeatureTypes=["FORMS"] )

只有当 Amazon Textract 对文档分析任务的信心满足您在人工审核工作流程中指定的激活条件时,才会创建人工循环。您可以检查response元素来确定是否已创建人类循环。要查看此响应中包含的所有内容,请参阅HumanLoopActivationOutput.

if "HumanLoopArn" in analyzeDocumentResponse["HumanLoopActivationOutput"]: # A human loop has been started! print(f"A human loop has been started with ARN: {analyzeDocumentResponse["HumanLoopActivationOutput"]["HumanLoopArn"]}"
Amazon Rekognition – Image moderation

以下示例使用Amazon SDK for Python (Boto3)调用detect_moderation_labels(在 us-west-2 中)。将斜体红色文本替换为您的资源。加入DataAttributes参数,如果您使用的是亚 Amazon Mechanical Turk 工作人员。有关更多信息,请参阅 。检测 _ 审核 _ 标签文档中的Amazon SDK for Python (Boto)API 参考.

response = client.detect_moderation_labels( Image={"S3Object":{"Bucket": "AWSDOC-EXAMPLE-BUCKET", "Name": "image-name.png"}}, HumanLoopConfig={ "FlowDefinitionArn":"arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name", "HumanLoopName":"human-loop-name", "DataAttributes":{ContentClassifiers:["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]} } )

仅当 Amazon Rekognition 对图片审核任务的信心满足您在人工审核工作流程中指定的激活条件时,才会创建人工循环。您可以检查response元素来确定是否已创建人类循环。要查看此响应中包含的所有内容,请参阅HumanLoopActivationOutput.

if "HumanLoopArn" in response["HumanLoopActivationOutput"]: # A human loop has been started! print(f"A human loop has been started with ARN: {response["HumanLoopActivationOutput"]["HumanLoopArn"]}")
Custom Integration

以下示例使用Amazon SDK for Python (Boto3)调用start_human_loop(在 us-west-2 中)。将斜体红色文本替换为您的资源。加入DataAttributes参数,如果您使用的是亚 Amazon Mechanical Turk 工作人员。有关更多信息,请参阅 。开始 _ 人类 _ 循环文档中的Amazon SDK for Python (Boto)API 参考.

response = client.start_human_loop( HumanLoopName= "human-loop-name", FlowDefinitionArn= "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name", HumanLoopInput={"InputContent": inputContentJson}, DataAttributes={"ContentClassifiers":["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]} )

此示例将输入内容存储在变量inputContentJson. 假设输入内容包含两个元素:文本模板和情绪(如PositiveNegative,或者Neutral),并且格式如下:

inputContent = { "initialValue": sentiment, "taskObject": blurb }

钥匙initialValuetaskObject必须对应于工作人员任务模板的液体元素中使用的键。请参阅创建人工任务 UI以查看示例。

创建inputContentJson中,执行以下操作:

import json inputContentJson = json.dumps(inputContent)

每次你调用一个人类循环start_human_loop. 要检查人类循环的状态,请使用描述 _ 人类循环

human_loop_info = a2i.describe_human_loop(HumanLoopName="human_loop_name") print(f"HumanLoop Status: {resp["HumanLoopStatus"]}") print(f"HumanLoop Output Destination: {resp["HumanLoopOutput"]}")