チュートリアル: Amazon A2I の使用を開始する API - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: Amazon A2I の使用を開始する API

このチュートリアルでは、Amazon A2I の使用を開始するために使用できるAPIオペレーションについて説明します。

Jupyter Notebook を使用してこれらのオペレーションを実行するには、 から Jupyter Notebook を選択しAmazon A2I を使用したユースケースと例Amazon A2I Jupyter SageMaker Notebook でノートブックインスタンスを使用するを使用してノートブックインスタンスで SageMakerそれを使用する方法を学びます。

Amazon A2I で使用できるAPIオペレーションの詳細については、「」を参照してくださいAmazon Augmented AI で API を使用する。 A2I

プライベートワークチームを作成する

プライベートワークチームを作成し、自分自身をワーカーとして追加して Amazon A2I をプレビューできます。

Amazon Cognito に慣れていない場合は、 SageMaker コンソールを使用してプライベートワークフォースを作成し、自分自身をプライベートワーカーとして追加することをお勧めします。手順については、ステップ 1: ワークチームを作成する を参照してください。

Amazon Cognito に精通している場合は、以下の手順に従って を使用してプライベートワークチームを作成できます SageMaker API。作業チームを作成したら、作業チーム ARN () を書き留めますWorkteamArn

プライベートワークフォースと、利用可能な他の設定の詳細については、「プライベートワークフォース」を参照してください。

プライベートワークフォースを作成する

プライベートワークフォースを作成していない場合、Amazon Cognito ユーザープールを使用して作成できます。このユーザープールに自分自身を追加してください。を使用してプライベートワークチームを作成できます。 AWS SDK for Python (Boto3) create_workforce 関数。その他の言語固有の についてはSDKs、「」のリストを参照してくださいCreateWorkforce

response = client.create_workforce( CognitoConfig={ "UserPool": "Pool_ID", "ClientId": "app-client-id" }, WorkforceName="workforce-name" )
プライベートワークチームを作成する

でプライベートワークフォースを作成した後 AWS ヒューマンループを設定して開始するリージョンでは、 を使用してプライベートワークチームを作成できます。 AWS SDK for Python (Boto3) create_workteam 関数。その他の言語固有の についてはSDKs、「」のリストを参照してください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"]
アカウント内のプライベートワークチームを一覧表示する

プライベートワークチームをすでに作成している場合は、特定の 内のすべてのワークチームを一覧表示できます。 AWS を使用した アカウントのリージョン AWS SDK for Python (Boto3) list_workteams 関数。その他の言語固有の についてはSDKs、「」のリストを参照してくださいListWorkteams

response = client.list_workteams()

アカウントに多数のワークチームがある場合、MaxResultsSortByNameContains を使用して結果をフィルタリングすることもできます。

人間によるレビューワークフローを作成する

Amazon A2I CreateFlowDefinition オペレーションを使用して、人間によるレビューワークフローを作成できます。人間によるレビューワークフローを作成する前に、ヒューマンタスク UI を作成する必要があります。これは、CreateHumanTaskUi オペレーションで実行できます。

Amazon Textract または Amazon Rekognition 統合で Amazon A2I を使用している場合は、 を使用してアクティベーション条件を指定できますJSON。 Amazon Rekognition

ヒューマンタスク UI を作成する

Amazon Textract または Amazon Rekognition 統合で使用する人間によるレビューワークフローを作成する場合、事前に作成されたワーカータスクテンプレートを使用して変更する必要があります。すべてのカスタム統合で独自のカスタムワーカータスクテンプレートを使用できます。次の表では、2 つの組み込み統合のワーカータスクテンプレートを使用してヒューマンタスク UI を作成する方法について説明します。テンプレートを独自のテンプレートに置き換えて、このリクエストをカスタマイズしてください。

Amazon Textract – Key-value pair extraction

このテンプレートの詳細については、「Amazon Textract のカスタムテンプレートの例」を参照してください。

template = r""" <script src="https://assets.crowd.aws/crowd-html-elements.js"></script> {% capture s3_uri %}http://s3.amazonaws.com/{{ task.input.aiServiceRequest.document.s3Object.bucket }}/{{ task.input.aiServiceRequest.document.s3Object.name }}{% endcapture %} <crowd-form> <crowd-textract-analyze-document src="{{ s3_uri | grant_read_access }}" initial-value="{{ task.input.selectedAiServiceResponse.blocks }}" header="Review the key-value pairs listed on the right and correct them if they don"t match the following document." no-key-edit="" no-geometry-edit="" keys="{{ task.input.humanLoopContext.importantFormKeys }}" block-types='["KEY_VALUE_SET"]'> <short-instructions header="Instructions"> <p>Click on a key-value block to highlight the corresponding key-value pair in the document. </p><p><br></p> <p>If it is a valid key-value pair, review the content for the value. If the content is incorrect, correct it. </p><p><br></p> <p>The text of the value is incorrect, correct it.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/correct-value-text.png"> </p><p><br></p> <p>A wrong value is identified, correct it.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/correct-value.png"> </p><p><br></p> <p>If it is not a valid key-value relationship, choose No.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/not-a-key-value-pair.png"> </p><p><br></p> <p>If you can’t find the key in the document, choose Key not found.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/key-is-not-found.png"> </p><p><br></p> <p>If the content of a field is empty, choose Value is blank.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/value-is-blank.png"> </p><p><br></p> <p><strong>Examples</strong></p> <p>Key and value are often displayed next or below to each other. </p><p><br></p> <p>Key and value displayed in one line.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/sample-key-value-pair-1.png"> </p><p><br></p> <p>Key and value displayed in two lines.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/sample-key-value-pair-2.png"> </p><p><br></p> <p>If the content of the value has multiple lines, enter all the text without line break. Include all value text even if it extends beyond the highlight box.</p> <p><img src="https://assets.crowd.aws/images/a2i-console/multiple-lines.png"></p> </short-instructions> <full-instructions header="Instructions"></full-instructions> </crowd-textract-analyze-document> </crowd-form> """
Amazon Rekognition – Image moderation

このテンプレートの詳細については、「Amazon Rekognition のカスタムテンプレートの例」を参照してください。

template = r""" <script src="https://assets.crowd.aws/crowd-html-elements.js"></script> {% capture s3_uri %}http://s3.amazonaws.com/{{ task.input.aiServiceRequest.image.s3Object.bucket }}/{{ task.input.aiServiceRequest.image.s3Object.name }}{% endcapture %} <crowd-form> <crowd-rekognition-detect-moderation-labels categories='[ {% for label in task.input.selectedAiServiceResponse.moderationLabels %} { name: "{{ label.name }}", parentName: "{{ label.parentName }}", }, {% endfor %} ]' src="{{ s3_uri | grant_read_access }}" header="Review the image and choose all applicable categories." > <short-instructions header="Instructions"> <style> .instructions { white-space: pre-wrap; } </style> <p class="instructions">Review the image and choose all applicable categories. If no categories apply, choose None. <b>Nudity</b> Visuals depicting nude male or female person or persons <b>Partial Nudity</b> Visuals depicting covered up nudity, for example using hands or pose <b>Revealing Clothes</b> Visuals depicting revealing clothes and poses <b>Physical Violence</b> Visuals depicting violent physical assault, such as kicking or punching <b>Weapon Violence</b> Visuals depicting violence using weapons like firearms or blades, such as shooting <b>Weapons</b> Visuals depicting weapons like firearms and blades </short-instructions> <full-instructions header="Instructions"></full-instructions> </crowd-rekognition-detect-moderation-labels> </crowd-form>"""
Custom Integration

カスタム統合で使用できるテンプレートの例を次に示します。このテンプレートは、Amazon Comprehend とのカスタム統合を示す、こちらのノートブックで使用されています。

template = r""" <script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-classifier name="sentiment" categories='["Positive", "Negative", "Neutral", "Mixed"]' initial-value="{{ task.input.initialValue }}" header="What sentiment does this text convey?" > <classification-target> {{ task.input.taskObject }} </classification-target> <full-instructions header="Sentiment Analysis Instructions"> <p><strong>Positive</strong> sentiment include: joy, excitement, delight</p> <p><strong>Negative</strong> sentiment include: anger, sarcasm, anxiety</p> <p><strong>Neutral</strong>: neither positive or negative, such as stating a fact</p> <p><strong>Mixed</strong>: when the sentiment is mixed</p> </full-instructions> <short-instructions> Choose the primary sentiment that is expressed by the text. </short-instructions> </crowd-classifier> </crowd-form> """

上記のテンプレートを使用して、 を使用してテンプレートを作成できます。 AWS SDK for Python (Boto3) create_human_task_ui 関数。その他の言語固有の についてはSDKs、「」のリストを参照してください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リクエストで使用できます。

次に、タブを選択して、これらの組み込み統合に使用できるアクティベーション条件の例を確認します。アクティベーション条件オプションの詳細については、「Amazon 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 AWS SDK for Python (Boto3) 前のセクションで作成した リソースを使用して をリクエストします。その他の言語固有の についてはSDKs、「」のリストを参照してくださいCreateFlowDefinition。次の表にあるタブで、Amazon Textract と Amazon Rekognition の組み込み統合に対する人間によるレビューワークフローの作成リクエストを確認します。

Amazon Textract – Key-value pair extraction

Amazon Textract との組み込み統合を使用する場合、HumanLoopRequestSource"AWS/Textract/AnalyzeDocument/Forms/V1""AwsManagedHumanLoopRequestSource" を指定する必要があります。

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://amzn-s3-demo-bucket/prefix/", }, RoleArn="arn:aws:iam::<account-number>:role/<role-name>", Tags=[ { "Key": "string", "Value": "string" }, ] )
Amazon Rekognition – Image moderation

Amazon Rekognition との組み込み統合を使用する場合、HumanLoopRequestSource"AWS/Rekognition/DetectModerationLabels/Image/V3""AwsManagedHumanLoopRequestSource" を指定する必要があります。

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://amzn-s3-demo-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://amzn-s3-demo-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 組み込み統合を使用する場合は、 AnalyzeDocumentオペレーションを使用します。

  • Amazon Rekognition の組み込み統合を使用する場合は、 DetectModerationLabelsオペレーションを使用します。

  • カスタム統合を使用する場合は、 StartHumanLoopオペレーションを使用します。

次の表でタスクタイプを選択すると、 を使用した Amazon Textract および Amazon Rekognition のリクエスト例が表示されます。 AWS SDK for Python (Boto3).

Amazon Textract – Key-value pair extraction

次の例では、 を使用しています。 AWS SDK for Python (Boto3) us-west-2 analyze_documentで を呼び出します。斜体の赤いテキストはリソースに置き換えます。Amazon Mechanical Turk ワークフォースを使用している場合は、DataAttributes パラメータを含めます。詳細については、「」の「Analyze_document」ドキュメントを参照してください。 AWS SDK for Python (Boto) API リファレンス

response = client.analyze_document( Document={"S3Object": {"Bucket": "amzn-s3-demo-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

次の例では、 を使用しています。 AWS SDK for Python (Boto3) us-west-2 detect_moderation_labelsで を呼び出します。斜体の赤いテキストはリソースに置き換えます。Amazon Mechanical Turk ワークフォースを使用している場合は、DataAttributes パラメータを含めます。詳細については、「」の「Detect_moderation_labels」ドキュメントを参照してください。 AWS SDK for Python (Boto) API リファレンス

response = client.detect_moderation_labels( Image={"S3Object":{"Bucket": "amzn-s3-demo-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

次の例では、 を使用しています。 AWS SDK for Python (Boto3) us-west-2 start_human_loopで を呼び出します。斜体の赤いテキストはリソースに置き換えます。Amazon Mechanical Turk ワークフォースを使用している場合は、DataAttributes パラメータを含めます。詳細については、「」の「start_human_loop」ドキュメントを参照してください。 AWS 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。 入力コンテンツにテキストぼかしとセンチメント (Positive、、 などNeutral) の 2 つの要素が含まれておりNegative、次のようにフォーマットされているとします。

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

キー initialValuetaskObject は、ワーカータスクテンプレートの liquid 要素で使用されるキーに対応している必要があります。例については、「ヒューマンタスク UI を作成する」のカスタムテンプレートを参照してください。

inputContentJson を作成するには、次の手順を実行します。

import json inputContentJson = json.dumps(inputContent)

ヒューマンループは start_human_loop を呼び出すたびに開始されます。ヒューマンループのステータスを確認するには、describe_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"]}")