Tutorial: Cómo empezar a utilizar Amazon A2I API - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Cómo empezar a utilizar Amazon A2I API

En este tutorial se explican las API operaciones que puede utilizar para empezar a utilizar Amazon A2I.

Para usar un cuaderno de Jupyter para ejecutar estas operaciones, seleccione un cuaderno de Jupyter Casos y ejemplos de uso de Amazon A2I y utilícelo Utilice SageMaker Notebook Instance con Amazon A2I Jupyter Notebook para aprender a usarlo en una instancia de bloc de notas. SageMaker

Para obtener más información sobre las API operaciones que puede utilizar con Amazon A2I, consulte. Uso de las API en Amazon Augmented AI

Crear un equipo de trabajo privado

Puede crear un equipo de trabajo privado y añadirse como trabajador para poder obtener una vista previa de Amazon A2I.

Si no está familiarizado con Amazon Cognito, le recomendamos que utilice la SageMaker consola para crear una plantilla privada y que se añada como trabajador privado. Para obtener instrucciones, consulte Paso 1: crear un equipo de trabajo.

Si está familiarizado con Amazon Cognito, puede utilizar las siguientes instrucciones para crear un equipo de trabajo privado con. SageMaker API Después de crear un equipo de trabajo, anote el equipo de trabajo ARN (WorkteamArn).

Para obtener más información sobre la plantilla privada y otras configuraciones disponibles, consulte Usar personal privado.

Cree un personal privado

Si no ha creado una plantilla privada, puede hacerlo mediante un grupo de usuarios de Amazon Cognito. Recuerde añadirse a usted mismo a este grupo de usuarios. Puede crear un equipo de trabajo privado mediante el AWS SDK for Python (Boto3) create_workforcefunción. Para conocer otros idiomas específicosSDKs, consulte la lista de. CreateWorkforce

response = client.create_workforce( CognitoConfig={ "UserPool": "Pool_ID", "ClientId": "app-client-id" }, WorkforceName="workforce-name" )
Crear un equipo de trabajo privado

Una vez que haya creado una fuerza laboral privada en el AWS Región para configurar e iniciar su ciclo humano, puede crear un equipo de trabajo privado utilizando el AWS SDK for Python (Boto3) create_workteamfunción. Para obtener información sobre otros idiomas específicosSDKs, consulte la lista de. 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" }, } ] )

Acceda a su equipo de trabajo de la siguiente ARN manera:

workteamArn = response["WorkteamArn"]
Incluir los equipos de trabajo privados en su cuenta

Si ya has creado un equipo de trabajo privado, puedes enumerar todos los equipos de trabajo de un equipo determinado AWS Región de tu cuenta que utiliza el AWS SDK for Python (Boto3) list_workteamsfunción. Para obtener información sobre otros idiomas específicosSDKs, consulte la lista de. ListWorkteams

response = client.list_workteams()

Si tiene varios equipos de trabajo en su cuenta, quizá le interese usar MaxResults, NameContains y SortBy para filtrar los resultados.

Crear un flujo de trabajo de revisión humana

Puede crear un flujo de trabajo de revisión humana mediante la operación CreateFlowDefinition de Amazon A2I. Antes de crear su flujo de trabajo de revisión humana, debe crear una interfaz de usuario de tareas humanas. Puede hacerlo con la operación CreateHumanTaskUi.

Si utiliza Amazon A2I con las integraciones de Amazon Textract o Amazon Rekognition, puede especificar las condiciones de activación mediante un. JSON

Crear una interfaz de usuario para tareas humanas

Si va a crear un flujo de trabajo de revisión humana para usarlo con las integraciones de Amazon Textract o Amazon Rekognition, necesitará usar y modificar una plantilla de tareas de trabajo prediseñada. Puede usar su propia plantilla de tareas de trabajo personalizada en todas las integraciones personalizadas. Use la siguiente tabla para aprender a crear una interfaz de usuario para tareas humanas con una plantilla de tareas de trabajador para las dos integraciones integradas. Sustituya la plantilla por la suya propia para personalizar esta solicitud.

Amazon Textract – Key-value pair extraction

Para obtener más información sobre esta plantilla, consulte Ejemplo de plantilla personalizada para 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

Para obtener más información sobre esta plantilla, consulte Ejemplo de plantilla personalizada para 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

A continuación, se muestra un ejemplo de plantilla que se puede utilizar en una integración personalizada. Esta plantilla se utiliza en este cuaderno, y muestra una integración personalizada con 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> """

Con la plantilla especificada anteriormente, puede crear una plantilla utilizando el AWS SDK for Python (Boto3) create_human_task_uifunción. Para obtener información sobre otros idiomas específicosSDKs, consulte la lista de. CreateHumanTaskUi

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

Este elemento de respuesta contiene la interfaz de usuario de tareas humanas. ARN Guarde esto de la siguiente manera:

humanTaskUiArn = response["HumanTaskUiArn"]

Cree JSON para especificar las condiciones de activación

En el caso de las integraciones integradas de Amazon Textract y Amazon Rekognition, puede guardar las condiciones de activación en un objeto y utilizarlas en JSON su solicitud. CreateFlowDefinition

A continuación, seleccione una pestaña para ver ejemplos de condiciones de activación que puede utilizar para estas integraciones integradas. Para obtener información acerca de las opciones de condición de activación, consulte Esquema JSON para condiciones de activación del bucle humano en Amazon Augmented AI.

Amazon Textract – Key-value pair extraction

En este ejemplo, se especifican las condiciones para claves específicas (como Mail address) en el documento. Si la confianza de Amazon Textract supera los umbrales establecidos aquí, el documento se envía a una persona para que lo revise, y se le solicitarán al trabajador las claves específicas que iniciaron el bucle humano.

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

Las condiciones de activación del bucle humano que se utilizan aquí se adaptan a la moderación de contenidos de Amazon Rekognition, y se basan en los umbrales de confianza para las etiquetas de moderación Suggestive y Female 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 } } ] } ] } )

Crear un flujo de trabajo de revisión humana

En esta sección se ofrece un ejemplo de CreateFlowDefinition AWS SDK for Python (Boto3) solicite utilizando los recursos creados en las secciones anteriores. Para obtener información sobre otros idiomas específicosSDKs, consulte la lista de. CreateFlowDefinition Utilice las pestañas de la siguiente tabla para ver las solicitudes de creación de un flujo de trabajo de revisión humana para las integraciones integradas de Amazon Textract y Amazon Rekognition.

Amazon Textract – Key-value pair extraction

Si utiliza la integración integrada con Amazon Textract, debe especificar "AWS/Textract/AnalyzeDocument/Forms/V1" para "AwsManagedHumanLoopRequestSource" en 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://amzn-s3-demo-bucket/prefix/", }, RoleArn="arn:aws:iam::<account-number>:role/<role-name>", Tags=[ { "Key": "string", "Value": "string" }, ] )
Amazon Rekognition – Image moderation

Si utiliza la integración integrada con Amazon Rekognition, debe especificar "AWS/Rekognition/DetectModerationLabels/Image/V3" para "AwsManagedHumanLoopRequestSource" en 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://amzn-s3-demo-bucket/prefix/", }, RoleArn="arn:aws:iam::<account-number>:role/<role-name>", Tags=[ { "Key": "string", "Value": "string" }, ] )
Custom Integration

Si utiliza una integración personalizada, excluya los parámetros HumanLoopRequestSource y HumanLoopActivationConfig.

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" }, ] )

Tras crear un flujo de trabajo de revisión humana, puede recuperar la definición del flujo a ARN partir de la respuesta:

humanReviewWorkflowArn = response["FlowDefinitionArn"]

Crear un bucle humano

La API operación que utilice para iniciar un bucle humano depende de la integración de Amazon A2I que utilice.

  • Si utilizas la integración integrada de Amazon Textract, utilizas la AnalyzeDocumentoperación.

  • Si utiliza la integración integrada de Amazon Rekognition, utilizará la operación. DetectModerationLabels

  • Si usa una integración personalizada, usa la operación. StartHumanLoop

Seleccione el tipo de tarea en la siguiente tabla para ver ejemplos de solicitudes para Amazon Textract y Amazon Rekognition mediante el AWS SDK for Python (Boto3).

Amazon Textract – Key-value pair extraction

En el siguiente ejemplo, se utiliza la AWS SDK for Python (Boto3) para llamar a analyze_document us-west-2. Sustituya el texto rojo en cursiva por sus recursos. Solo debe incluir el parámetro DataAttributes si utiliza la plantilla de Amazon Mechanical Turk. Para obtener más información, consulte la documentación analyze_document en la AWS SDK for Python (Boto) APIReferencia.

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"] )

Los bucles humanos solo se crean si la confianza de Amazon Textract para la tarea de análisis de documentos cumple las condiciones de activación que ha especificado en su flujo de trabajo de revisión humana. Puede comprobar el elemento response para determinar si se ha creado un bucle humano. Para ver todo lo que está incluido en esta respuesta, consulte 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

En el siguiente ejemplo, se utiliza el AWS SDK for Python (Boto3) para llamar a detect_moderation_labels us-west-2. Sustituya el texto rojo en cursiva por sus recursos. Solo debe incluir el parámetro DataAttributes si utiliza la plantilla de Amazon Mechanical Turk. Para obtener más información, consulte la documentación detect_moderation_labels en la AWS SDK for Python (Boto) APIReferencia.

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"]} } )

Los bucles humanos solo se crean si la confianza de Amazon Rekognition para la tarea de moderación de imagen cumple las condiciones de activación que ha especificado en su flujo de trabajo de revisión humana. Puede comprobar el elemento response para determinar si se ha creado un bucle humano. Para ver todo lo que está incluido en esta respuesta, consulte 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

En el siguiente ejemplo, se utiliza el AWS SDK for Python (Boto3) para llamar a start_human_loop us-west-2. Sustituya el texto rojo en cursiva por sus recursos. Solo debe incluir el parámetro DataAttributes si utiliza la plantilla de Amazon Mechanical Turk. Para obtener más información, consulte la documentación start_human_loop en la AWS SDK for Python (Boto) APIReferencia.

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"]} )

Este ejemplo almacena el contenido de entrada en la variable inputContentJson. Suponga que el contenido de entrada contiene dos elementos: un texto publicitario y un sentimiento (por ejemplo PositiveNegative,, oNeutral), y tiene el siguiente formato:

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

Las claves initialValue y taskObject deben corresponderse con las teclas utilizadas en los elementos Liquid de la plantilla de tareas del trabajador. Consulte la plantilla personalizada en Crear una interfaz de usuario para tareas humanas para ver un ejemplo.

Para crear inputContentJson, haga lo siguiente:

import json inputContentJson = json.dumps(inputContent)

Cada vez que llama a start_human_loop, se inicia un bucle humano. Para comprobar el estado de su bucle humano, use 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"]}")