Criar modelos personalizados de tarefas para operadores - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar modelos personalizados de tarefas para operadores

Crowd HTML Elements são componentes Web que fornecem uma série de widgets e elementos de design e tarefas que podem ser adaptados à pergunta que você deseja fazer. Você pode usar esses elementos de público para criar um modelo personalizado de trabalhador e integrá-lo a um fluxo de trabalho de revisão humana do Amazon Augmented AI (Amazon A2I) para personalizar o console do trabalhador e as instruções.

Para obter uma lista de todos os elementos de público HTML disponíveis para os usuários do Amazon A2I, consulte Referência do Crowd HTML Elements. Para ver exemplos de modelos, consulte o AWS GitHubrepositório, que contém mais de 60 exemplos de modelos de tarefas personalizadas.

Desenvolver modelos localmente

No console para testar como o modelo processa os dados de entrada recebidos, é possível testar a aparência dos elementos HTML e dos elementos personalizados do modelo no navegador, adicionando o seguinte código à parte superior do arquivo HTML:

<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>

Isso carrega o código necessário para renderizar os elementos HTML personalizados. Use esse código caso deseje desenvolver a aparência de seu modelo no editor de sua preferência, e não no console.

Esse código não analisará suas variáveis. Você pode querer substituí-las por um conteúdo de amostra ao desenvolver localmente.

Usar ativos externos

Os modelos personalizados do Amazon Augmented AI permitem que você incorpore scripts externos e folhas de estilo. Por exemplo, o cabeçalho a seguir incorpora um nome de folha de estilo de text/css stylesheet localizado em https://www.example.com/my-enhancement-styles.css no modelo personalizado.

<script src="https://www.example.com/my-enhancment-script.js"></script> <link rel="stylesheet" type="text/css" href="https://www.example.com/my-enhancement-styles.css">

Se encontrar erros, verifique se o servidor de origem está enviando o tipo MIME e os cabeçalhos de codificação corretos com os ativos.

Por exemplo, o tipo MIME e de codificação para scripts remotos são application/javascript;CHARSET=UTF-8.

O MIME e o tipo de codificação das folhas de estilo remotas são text/css;CHARSET=UTF-8.

Rastrear as variáveis

Ao criar um modelo personalizado, adicione variáveis a ele para representar as partes de dados que podem mudar de tarefa para tarefa ou de operador para operador. Se você estiver começando com um dos modelos de amostra, será necessário estar ciente das variáveis que ele já usa.

Por exemplo, para um modelo personalizado que integra um ciclo de revisão humana do Amazon Augmented AI com uma tarefa de revisão de texto do Amazon Textract, o {{ task.input.selectedAiServiceResponse.blocks }} é usado como dados de entrada de valor inicial. Para a integração do Amazon Augmented AI (Amazon A2I) com o Amazon Rekognition, {{ task.input.selectedAiServiceResponse.moderationLabels }} é usado. Para um tipo de tarefa personalizado, é necessário determinar o parâmetro de entrada para o tipo de tarefa. Use {{ task.input.customInputValuesForStartHumanLoop}} onde você especificar customInputValuesForStartHumanLoop.

Exemplo de modelo personalizado do Amazon Textract

Todos os modelos personalizados começam e terminam com os elementos <crowd-form> </crowd-form>. Como os elementos HTML padrão de <form>, todo o seu código de formulário deve estar entre esses elementos.

Para uma tarefa de análise de documentos do Amazon Textract, use o elemento <crowd-textract-analyze-document>. Ele usa os seguintes atributos:

  • src - Especifica o URL do arquivo de imagem a ser anotado.

  • initialValue - Define valores iniciais para atributos encontrados na interface do usuário do operador.

  • blockTypes (obrigatório) - Determina o tipo de análise que os operadores podem fazer. No momento, somente KEY_VALUE_SET é compatível.

  • keys (obrigatório) - Especifica novas chaves e o valor de texto associado que o operador pode adicionar.

  • no-key-edit (obrigatório) - Impede que os operadores editem as chaves de anotações transmitidas pelo initialValue.

  • no-geometry-edit - impede que os operadores editem os polígonos das anotações transmitidas pelo initialValue.

Para os filhos do elemento <crowd-textract-analyze-document>, é necessário ter duas Regiões. É possível usar elementos HTML e CSS arbitrários nessas regiões.

  • <full-instructions> - Instruções que estão disponíveis no link Visualizar instruções completas na ferramenta. É possível deixar isso em branco, mas recomendamos que você forneça instruções completas para obter melhores resultados.

  • <short-instructions>- Uma breve descrição da tarefa que aparece na barra lateral da ferramenta. É possível deixar isso em branco, mas recomendamos que você forneça instruções completas para obter melhores resultados.

Um modelo do Amazon Textract seria semelhante ao seguinte.

<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"> <style> .instructions { white-space: pre-wrap; } .instructionsImage { display: inline-block; max-width: 100%; } </style> <p class='instructions'>Choose a key-value block to highlight the corresponding key-value pair in the document. If it is a valid key-value pair, review the content for the value. If the content is incorrect, correct it. The text of the value is incorrect, correct it. <img class='instructionsImage' src="https://example-site/correct-value-text.png" /> A wrong value is identified, correct it. <img class='instructionsImage' src="https://example-site/correct-value.png" /> If it is not a valid key-value relationship, choose No. <img class='instructionsImage' src="https://example-site/not-a-key-value-pair.png" /> If you can’t find the key in the document, choose Key not found. <img class='instructionsImage' src="https://example-site/key-is-not-found.png" /> If the content of a field is empty, choose Value is blank. <img class='instructionsImage' src="https://example-site/value-is-blank.png" /> <b>Examples</b> Key and value are often displayed next to or below to each other. Key and value displayed in one line. <img class='instructionsImage' src="https://example-site/sample-key-value-pair-1.png" /> Key and value displayed in two lines. <img class='instructionsImage' src="https://example-site/sample-key-value-pair-2.png" /> If the content of the value has multiple lines, enter all the text without a line break. Include all value text even if it extends beyond the highlight box. <img class='instructionsImage' 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>

Exemplo de modelo personalizado do Amazon Rekognition

Todos os modelos personalizados começam e terminam com os elementos <crowd-form> </crowd-form>. Como os elementos HTML padrão de <form>, todo o seu código de formulário deve estar entre esses elementos. Para um modelo de tarefa personalizado do Amazon Rekognition, use o elemento <crowd-rekognition-detect-moderation-labels>. Esse elemento oferece suporte aos seguintes atributos:

  • categories - Uma matriz de strings ou uma matriz de objetos, na qual cada objeto tem um campo name.

    • Se as categorias entrarem como objetos, o seguinte se aplica:

      • As categorias exibidas são o valor do campo name.

      • A resposta retornada contém os objetos completos de todas as categorias selecionadas.

    • Se as categorias entrarem como strings, o seguinte se aplica:

      • A resposta retornada é uma matriz de todas as strings que foram selecionadas.

  • exclusion-category - Ao definir esse atributo, é criado um botão abaixo das categorias na interface do usuário. Quando um usuário seleciona o botão, todas as categorias são desmarcadas e desativadas. Se o operador selecionar o botão novamente, você reabilita a opção para os usuários escolherem categorias. Se o operador enviar a tarefa selecionando o botão Enviar depois de pressionar o botão, essa tarefa retornará uma matriz vazia.

Para os filhos do elemento <crowd-rekognition-detect-moderation-labels>, é necessário ter duas Regiões.

  • <full-instructions> - Instruções que estão disponíveis no link Visualizar instruções completas na ferramenta. É possível deixar isso em branco, mas recomendamos que você forneça instruções completas para obter melhores resultados.

  • <short-instructions> - Breve descrição da tarefa que aparece na barra lateral da ferramenta. É possível deixar isso em branco, mas recomendamos que você forneça instruções completas para obter melhores resultados.

Um modelo que use esses elementos seria semelhante ao seguinte.

<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>Graphic Male Nudity</b> Visuals depicting full frontal male nudity, often close ups <b>Graphic Female Nudity</b> Visuals depicting full frontal female nudity, often close ups <b>Sexual Activity</b> Visuals depicting various types of explicit sexual activities and pornography <b>Illustrated Nudity or Sexual Activity</b> Visuals depicting animated or drawn sexual activity, nudity, or pornography <b>Adult Toys</b> Visuals depicting adult toys, often in a marketing context <b>Female Swimwear or Underwear</b> Visuals depicting female person wearing only swimwear or underwear <b>Male Swimwear Or Underwear</b> Visuals depicting male person wearing only swimwear or underwear <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, such as deep cut dresses <b>Graphic Violence or Gore</b> Visuals depicting prominent blood or bloody injuries <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 <b>Self Injury</b> Visuals depicting self-inflicted cutting on the body, typically in distinctive patterns using sharp objects <b>Emaciated Bodies</b> Visuals depicting extremely malnourished human bodies <b>Corpses</b> Visuals depicting human dead bodies <b>Hanging</b> Visuals depicting death by hanging</p> </short-instructions> <full-instructions header="Instructions"></full-instructions> </crowd-rekognition-detect-moderation-labels> </crowd-form>

Adicionar automação com o Liquid

O sistema de modelo personalizado usa o Liquid para automação. Liquid é uma linguagem de marcação em linha de código aberto. Para obter mais informações e acessar a documentação, consulte a página inicial do Liquid.

No Liquid, o texto entre chaves simples e símbolos de percentagem é uma instrução ou tag que realiza uma operação, como controle de fluxo ou iteração. O texto entre chaves duplas é uma variável ou um objeto que gera seu valor. A lista a seguir inclui dois tipos de etiquetas líquidas que podem ser úteis para automatizar o processamento de dados de entrada de modelos. Se você selecionar um dos seguintes tipos de tag, será redirecionado para a documentação do Liquid.

  • Fluxo de controle: inclui operadores lógicos de programação como if/else, unless e case/when.

  • Iteração: permite que você execute blocos de código repetidamente usando instruções como for loops.

    Por exemplo, o exemplo de código a seguir demonstra como você pode usar a tag for do Liquid para criar um loop for. Este exemplo percorre as informações moderationLabels retornadas pelo Amazon Rekognition e exibe os atributos moderationLabels name e parentName para que os trabalhadores os revisem:

    {% for label in task.input.selectedAiServiceResponse.moderationLabels %} { name: &quot;{{ label.name }}&quot;, parentName: &quot;{{ label.parentName }}&quot;, }, {% endfor %}

Usar filtros de variáveis

Além dos filtros e ações padrão do Liquid, o Amazon Augmented AI (Amazon A2I) oferece filtros adicionais. Os filtros são aplicados colocando um caractere de barra vertical (|) após o nome da variável e especificando o nome de um filtro. Para encadear filtros, use o seguinte formato.

{{ <content> | <filter> | <filter> }}

Escape automático e escape explícito

Por padrão, as entradas são escapes de HTML para evitar confusão entre o texto da variável e o HTML. Você pode adicionar explicitamente o filtro escape para tornar mais óbvio para alguém que esteja lendo o código-fonte de seu modelo que o escape está sendo feito.

escape_once

escape_once garante que, se o código já tiver sido escapado, ele não será escapado novamente. Por exemplo, para garantir que &amp; não se torne &amp;amp;.

skip_autoescape

skip_autoescape é útil quando seu conteúdo deve ser usado como HTML. Por exemplo, você pode ter alguns parágrafos de texto e algumas imagens nas instruções completas de uma caixa delimitadora.

nota

Use skip_autoescape com moderação. Como uma melhor prática para modelos, evite passar código funcional ou marcação com skip_autoescape, a menos que você tenha certeza absoluta de que tem controle estrito sobre o que está sendo passado. Se você estiver transmitindo a entrada do usuário, poderá expor seus funcionários a um ataque de cross site scripting.

to_json

to_jsoncodifica os dados que você fornece para o JavaScript Object Notation (JSON). Se você fornecer um objeto, ele o serializará.

grant_read_access

grant_read_access usa um URI do Amazon Simple Storage Service (Amazon S3) e o codifica em um URL HTTPS com um token de acesso de curta duração para esse recurso. Isso possibilita exibir objetos de fotografia, áudio ou vídeo armazenados em buckets do S3 que, de outra forma, não são acessíveis publicamente para operadores.

exemplo Exemplo dos filtros to_json e grant_read_access

Entrada

auto-escape: {{ "Have you read 'James & the Giant Peach'?" }} explicit escape: {{ "Have you read 'James & the Giant Peach'?" | escape }} explicit escape_once: {{ "Have you read 'James &amp; the Giant Peach'?" | escape_once }} skip_autoescape: {{ "Have you read 'James & the Giant Peach'?" | skip_autoescape }} to_json: {{ jsObject | to_json }} grant_read_access: {{ "s3://examplebucket/myphoto.png" | grant_read_access }}

Saída

auto-escape: Have you read &#39;James &amp; the Giant Peach&#39;? explicit escape: Have you read &#39;James &amp; the Giant Peach&#39;? explicit escape_once: Have you read &#39;James &amp; the Giant Peach&#39;? skip_autoescape: Have you read 'James & the Giant Peach'? to_json: { "point_number": 8, "coords": [ 59, 76 ] } grant_read_access: https://s3.amazonaws.com/examplebucket/myphoto.png?<access token and other params>
exemplo Exemplo de um modelo de classificação automatizado.

Para automatizar esse exemplo de classificação de texto simples, inclua a tag {{ task.input.source }} do Liquid. Esse exemplo usa o elemento crowd-classifier.

<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-classifier name="tweetFeeling" categories="['positive', 'negative', 'neutral', 'cannot determine']" header="Which term best describes this tweet?" > <classification-target> {{ task.input.source }} </classification-target> <full-instructions header="Analyzing a sentiment"> Try to determine the feeling the author of the tweet is trying to express. If none seems to match, choose "other." </full-instructions> <short-instructions> Pick the term that best describes the sentiment of the tweet. </short-instructions> </crowd-classifier> </crowd-form>

Visualizar um modelo de tarefa de operador

Para visualizar um modelo de tarefa de trabalhador personalizado, use a SageMaker RenderUiTemplate operação. Você pode usar a RenderUiTemplate operação com o SDK AWS CLI ou com seu AWS SDK preferido. Para documentação sobre os SDKs específicos de linguagem suportados para esta operação da API, consulte a See Also seção do a RenderUiTemplate.

Pré-requisitos

Para visualizar seu modelo de tarefa de trabalho, a função AWS Identity and Access Management (IAM) Amazon Resource Name (ARN), ouRoleArn, que você usa, deve ter permissão para acessar os objetos do S3 que são usados pelo modelo. Para saber como configurar sua função ou usuário, consulte Habilitar visualizações do modelo de tarefa de operador .

Para visualizar o modelo de tarefa do operador usando a operação RenderUiTemplate:
  1. Forneça um RoleArn da função com as políticas necessárias anexadas para visualizar o modelo personalizado.

  2. No parâmetro Input da Task, forneça um objeto JSON que contenha valores para as variáveis definidas no modelo. Estas são as variáveis que são substituídas para a variável task.input.source. Por exemplo, se você definir uma variável task.input.text em seu modelo, você pode fornecer a variável no objeto JSON como text: sample text.

  3. No parâmetro Content de UiTemplate, insira seu modelo.

Depois de configurar RenderUiTemplate, use seu SDK preferido ou a AWS CLI para enviar uma solicitação para renderizar seu modelo. Se sua solicitação foi bem-sucedida, a resposta incluirá RenderedContent, um modelo Liquid que renderiza o HTML para a interface do usuário do operador.

Importante

Para visualizar o modelo, você precisa de um perfil do IAM com permissões para ler os objetos do Amazon S3 que são renderizados na interface de usuário. Para obter uma política de exemplo que você pode anexar ao perfil do IAM para conceder essas permissões, consulte Habilitar visualizações do modelo de tarefa de operador .