Creazione di modelli di attività del worker personalizzati - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di modelli di attività del worker personalizzati

I Crowd HTML Elements sono componenti web che forniscono una serie di widget di attività ed elementi di progettazione che puoi personalizzare in base alla domanda che desideri porre. Puoi utilizzare questi elementi crowd per creare un modello del worker personalizzato e integrarlo con un flusso di lavoro di revisione umana IA aumentata Amazon (Amazon A2I) per personalizzare la console di lavoro e le istruzioni.

Per un elenco di tutti gli elementi HTML crowd disponibili per gli utenti di Amazon A2I, consulta. Riferimento per gli elementi Crowd HTML Per esempi di modelli, consulta il AWS GitHubrepository, che contiene oltre 60 modelli di attività personalizzati di esempio.

Sviluppo di modelli in locale

Quando utilizzate la console per testare il modo in cui il modello elabora i dati in entrata, potete testare l'aspetto del modello HTML e degli elementi personalizzati nel browser aggiungendo il codice seguente all'inizio del file. HTML

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

In questo modo viene caricato il codice necessario per il rendering degli HTML elementi personalizzati. Utilizza questo codice se desideri sviluppare l'aspetto del modello nell'editor preferito anziché nella console.

Questo codice non analizza le variabili. Durante lo sviluppo in locale potrebbe essere necessario sostituirlo con il contenuto di esempio.

Utilizzo di risorse esterne

I modelli personalizzati IA aumentata Amazon consentono di incorporare script esterni e fogli di stile. Ad esempio, l'intestazione seguente incorpora nel modello personalizzato un foglio di stile text/css denominato stylesheet presente in https://www.example.com/my-enhancement-styles.css.

<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 riscontrate degli errori, assicuratevi che il server di origine invii gli header MIME di tipo e codifica corretti con gli asset.

Ad esempio, il tipo di codifica MIME and per gli script remoti è. application/javascript;CHARSET=UTF-8

Il tipo di codifica MIME and per i fogli di stile remoti è. text/css;CHARSET=UTF-8

Monitoraggio delle variabili

Quando crei un modello personalizzato, devi aggiungervi le variabili per rappresentare le parti di dati che potrebbero cambiare da attività a attività o da worker a worker. Se inizi con uno dei modelli di esempio, accertati di conoscere le variabili già in uso.

Ad esempio, per un modello personalizzato che integra un ciclo di revisione umana IA aumentata con un'attività di revisione del testo Amazon Textract viene utilizzato {{ task.input.selectedAiServiceResponse.blocks }} per i dati di input del valore iniziale. Per IA aumentata Amazon (Amazon A2I) viene utilizzata l'integrazione con Amazon Rekognition. {{ task.input.selectedAiServiceResponse.moderationLabels }} Per un tipo di attività personalizzato, è necessario determinare il parametro di input per il tipo di attività. Utilizza {{ task.input.customInputValuesForStartHumanLoop}} dove specifichi customInputValuesForStartHumanLoop.

Esempio di modello personalizzato per Amazon Textract

Tutti i modelli personalizzati iniziano e terminano con gli elementi <crowd-form> </crowd-form>. Come HTML <form> gli elementi standard, tutto il codice del modulo dovrebbe passare tra questi elementi.

Per un'attività di analisi dei documenti Amazon Textract, utilizza l'elemento <crowd-textract-analyze-document>. Utilizza gli attributi seguenti:

  • src— Speciifica il file URL di immagine da annotare.

  • initialValue: imposta i valori iniziali per gli attributi che si trovano nell'interfaccia utente del worker.

  • blockTypes (obbligatorio): determina il tipo di analisi che i worker possono eseguire. Al momento è supportato soltanto KEY_VALUE_SET.

  • keys (obbligatorio): specifica le nuove chiavi e il valore di testo associato che il worker può aggiungere.

  • no-key-edit (obbligatorio): impedisce ai worker di modificare le chiavi delle annotazioni passate tramite initialValue.

  • no-geometry-edit: impedisce ai worker di modificare i poligoni delle annotazioni passate tramite initialValue.

Per gli elementi figlio dell'elemento <crowd-textract-analyze-document> sono necessarie due Regioni. È possibile utilizzare CSS elementi HTML e arbitrari in queste regioni.

  • <full-instructions>: le istruzioni disponibili dal collegamento Visualizza istruzioni complete nello strumento. Puoi lasciarlo vuoto, ma ti consigliamo di fornire istruzioni complete per ottenere risultati migliori.

  • <short-instructions>: una breve descrizione dell'attività visualizzata nella barra laterale dello strumento. Puoi lasciarlo vuoto, ma ti consigliamo di fornire istruzioni complete per ottenere risultati migliori.

Un modello Amazon Textract è simile al seguente esempio.

<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>

Esempio di modello personalizzato per Amazon Rekognition

Tutti i modelli personalizzati iniziano e terminano con gli elementi <crowd-form> </crowd-form>. Come HTML <form> gli elementi standard, tutto il codice del modulo dovrebbe passare tra questi elementi. Per un modello di attività Amazon Rekognition personalizzato, utilizza l'elemento <crowd-rekognition-detect-moderation-labels>. Questo elemento supporta i seguenti attributi:

  • categories: un array di stringhe o un array di oggetti in cui ogni oggetto ha un campo name.

    • Se le categorie sono disponibili come oggetti, si applica quanto segue:

      • Le categorie visualizzate sono il valore del campo name.

      • La risposta restituita contiene gli oggetti completi di ogni categoria selezionata.

    • Se le categorie sono disponibili come stringhe, si applica quanto segue:

      • La risposta restituita è un array di tutte le stringhe selezionate.

  • exclusion-category: impostando questo attributo, si crea un pulsante sotto le categorie nell'interfaccia utente. Quando un utente seleziona il pulsante, tutte le categorie vengono deselezionate e disabilitate. Se il worker seleziona nuovamente il pulsante, gli utenti possono di nuovo scegliere le categorie. Se il worker invia l'attività selezionando il pulsante Invia dopo aver selezionato questo pulsante, l'attività restituisce un array vuoto.

Per gli elementi figlio dell'elemento <crowd-rekognition-detect-moderation-labels> sono necessarie due Regioni.

  • <full-instructions>: le istruzioni disponibili dal collegamento Visualizza istruzioni complete nello strumento. Puoi lasciarlo vuoto, ma ti consigliamo di fornire istruzioni complete per ottenere risultati migliori.

  • <short-instructions>: breve descrizione dell'attività visualizzata nella barra laterale dello strumento. Puoi lasciarlo vuoto, ma ti consigliamo di fornire istruzioni complete per ottenere risultati migliori.

Un modello che utilizza questi elementi è simile al seguente esempio.

<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>

Aggiunta di automazione con Liquid

Il sistema di modello personalizzato utilizza Liquid per l'automazione. Liquid è un linguaggio markup inline open-source. Per ulteriori informazioni e la documentazione, visita la home page Liquid.

In Liquid, il testo compreso tra parentesi graffe singole e simboli di percentuale è un'istruzione o un tag che svolge un operazione come un flusso di controllo o un’iterazione. Il testo racchiuso tra parentesi graffe doppie è una variabile o oggetto che genera il suo valore. L'elenco seguente include due tipi di tag Liquid che potresti trovare utili per automatizzare l'elaborazione dei dati di input dei modelli. Se selezioni uno dei seguenti tipi di tag, verrai reindirizzato alla documentazione di Liquid.

  • Flusso di controllo: include operatori logici di programmazione comeif/else, unless e case/when.

  • Iterazione: consente di eseguire ripetutamente blocchi di codice utilizzando istruzioni come i cicli for.

    Ad esempio, il seguente esempio di codice dimostra come utilizzare il tag Liquid for per creare un ciclo for. Questo esempio esegue un ciclo continuo di moderationLabels restituiti da Amazon Rekognition e mostra gli attributi moderationLabels name e parentName per la revisione da parte dei worker:

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

Utilizzo di filtri variabili

Oltre ai filtri e alle operazioni Liquid standard, IA aumentata Amazon (Amazon A2I) offre alcuni filtri aggiuntivi. I filtri si applicano inserendo un carattere barra verticale (|) dopo il nome della variabile e quindi specificando il nome di un filtro. Per concatenare i filtri utilizza il seguente formato.

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

Escape automatico ed escape esplicito

Per impostazione predefinita, gli input sono HTML -escape per evitare confusione tra il testo variabile e. HTML Puoi aggiungere in maniera esplicita il filtro escape per rendere più evidente a chi legge il codice sorgente del modello dove si esegue l'escape.

escape_once

escape_once garantisce che se hai già eseguito l'escape del codice, questo non viene nuovamente sottoposto a escape. Ad esempio, garantisce che &amp; non diventi &amp;amp;.

skip_autoescape

skip_autoescapeè utile quando i tuoi contenuti sono pensati per essere usati come. HTML Ad esempio, le istruzioni complete per un riquadro di delimitazione potrebbero contenere qualche paragrafo di testo e alcune immagini.

Nota

Usa skip_autoescape con parsimonia. La best practice per i modelli è evitare di passare codice funzionale o markup con skip_autoescape a meno che non sei assolutamente certo di avere il controllo rigoroso di ciò che viene passato. Se stai passando input utente, potresti esporre i worker a un attacco Cross-site scripting.

to_json

to_jsoncodifica i dati forniti a JavaScript Object Notation ()JSON. Se fornisci un oggetto, lo serializza.

grant_read_access

grant_read_accessprende un Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon URI S3) e lo codifica in HTTPS URL un token di accesso di breve durata per quella risorsa. Questo consente di visualizzare oggetti foto, audio o video archiviati in bucket S3 che non sono altrimenti accessibili pubblicamente dai worker.

Esempio di filtri to_json e grant_read_access

Input

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://amzn-s3-demo-bucket/myphoto.png" | grant_read_access }}

Output

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/amzn-s3-demo-bucket/myphoto.png?<access token and other params>
Esempio Esempio di modello di classificazione automatizzato

Per automatizzare questo semplice esempio di classificazione del testo, includi il tag Liquid {{ task.input.source }}. In questo esempio viene utilizzato l'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>

Anteprima di un modello di attività del worker

Per visualizzare in anteprima un modello di task di lavoro personalizzato, usa l'operazione. SageMaker RenderUiTemplate È possibile utilizzare l'RenderUiTemplateoperazione con AWS CLI o il tuo preferito AWS SDK. Per la documentazione sulla lingua supportata specifica SDKs per questa API operazione, vedere la See Alsosezione di RenderUiTemplate.

Prerequisiti

Per visualizzare in anteprima il modello di attività lavorativa, il AWS Identity and Access Management (IAM) il ruolo Amazon Resource Name (ARN) oRoleArn, che utilizzi, deve disporre dell'autorizzazione per accedere agli oggetti S3 utilizzati dal modello. Per informazioni su come configurare il ruolo o l'utente, consulta Abilitazione delle anteprime dei modelli di attività del worker .

Per visualizzare in anteprima il modello di attività del worker utilizzando l'operazione RenderUiTemplate:
  1. Fornisci il RoleArn di un ruolo con le policy richieste collegate per visualizzare in anteprima il modello personalizzato.

  2. Nel Inputparametro di Task, fornisci un JSON oggetto che contenga i valori per le variabili definite nel modello. Queste sono le variabili che vengono sostituite alla variabile task.input.source. Ad esempio, se definisci una variabile task.input.text nel tuo modello, puoi fornire la variabile nell'oggetto come:. JSON text sample text

  3. Nel parametro Content di UiTemplate inserisci il modello.

Una volta configurato, usa il tuo preferito RenderUiTemplate o il SDK AWS CLI per inviare una richiesta per il rendering del modello. Se la richiesta ha avuto esito positivo, la risposta include RenderedContentun modello Liquid che esegue il rendering dell'interfaccia utente HTML per l'utente di lavoro.

Importante

Per visualizzare l'anteprima del modello, è necessario un IAM ruolo con le autorizzazioni per leggere gli oggetti Amazon S3 che vengono renderizzati sulla tua interfaccia utente. Per un esempio di policy che puoi allegare al tuo IAM ruolo per concedere queste autorizzazioni, consulta. Abilitazione delle anteprime dei modelli di attività del worker