Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen benutzerdefinierter Auftragnehmervorlagen
Crowd-HTML-Elemente sind Webkomponenten, die eine Reihe von Aufgaben-Widgets und Designelementen bereitstellen, die Sie auf die zu stellende Frage zuschneiden können. Sie können diese Crowd-Elemente verwenden, um eine benutzerdefinierte Arbeitsvorlage zu erstellen und sie mit einem Amazon Augmented AI (Amazon A2I) menschlichen Überprüfungsworkflow zu integrieren, um die Arbeitskonsole und Anweisungen anzupassen.
Eine Liste aller HTML-Crowd-Elemente, die für Amazon-A2I-Benutzer verfügbar sind, finden Sie unter Referenz der Crowd-HTML-Elemente. Beispiele für Vorlagen finden Sie im AWS GitHubRepository
Lokales Entwickeln von Vorlagen
Wenn Sie in der Konsole testen, wie Ihre Vorlage eingehende Daten verarbeitet, können Sie das Aussehen der HTML- und benutzerdefinierten Elemente Ihrer Vorlage in Ihrem Browser testen, indem Sie den folgenden Code am Anfang Ihrer HTML-Datei hinzufügen.
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
Dies lädt den erforderlichen Code zum Rendern der benutzerdefinierten HTML-Elemente. Verwenden Sie diesen Code, wenn Sie das Erscheinungsbild Ihrer Vorlage lieber in Ihrem bevorzugten Editor anstatt in der Konsole entwickeln möchten.
Dieser Code analysiert Ihre Variablen nicht. Möglicherweise möchten Sie diese mit Beispielinhalten ersetzen, während Sie lokal entwickeln.
Verwenden externer Komponenten
Mit den benutzerdefinierten Vorlagen von Amazon Augmented AI können Sie externe Skripte und Stylesheets einbetten. Die folgende Kopfzeile bettet beispielsweise ein text/css
-Stylesheet namens stylesheet
, das sich unter https://www.example.com/my-enhancement-styles.css
befindet, in die benutzerdefinierte Vorlage ein.
<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">
Wenn Fehler auftreten, stellen Sie sicher, dass Ihr Ursprungsserver den richtigen MIME-Typ und die richtigen Kodierungskopfzeilen mit den Assets sendet.
Der MIME- und Kodierungstyp für entfernte Skripte ist zum Beispiel application/javascript;CHARSET=UTF-8
.
Der MIME- und Kodierungs-Typ für Remote-Stylesheets ist text/css;CHARSET=UTF-8
.
Verfolgen Ihrer Variablen
Beim Erstellen einer benutzerdefinierten Vorlage müssen Sie Variablen für die Datenteile hinzufügen, die sich von Aufgabe zu Aufgabe oder von Auftragnehmer zu Auftragnehmer ändern können. Wenn Sie mit einer der Beispielvorlagen beginnen, müssen Sie sicherstellen, dass Sie wissen, welche Variablen bereits verwendet werden.
Für eine benutzerdefinierte Vorlage, die eine Augmented AI-Bewertungsschleife mit einer Amazon-Textract-Textbewertungsaufgabe integriert, wird beispielsweise {{ task.input.selectedAiServiceResponse.blocks
}}
für die Eingabedaten der Anfangswerte verwendet. Für Amazon Augmented AI (Amazon A2I) wird {{ task.input.selectedAiServiceResponse.moderationLabels
}}
mit Amazon Rekognition verwendet. Für einen benutzerdefinierten Aufgabentyp müssen Sie den Eingabeparameter für Ihren Aufgabentyp bestimmen. Verwenden Sie {{
task.input.
dort, wo sie customInputValuesForStartHumanLoop
}}
angeben. customInputValuesForStartHumanLoop
Beispiel für eine benutzerdefinierte Vorlage für Amazon Textract
Alle benutzerdefinierten Vorlagen beginnen und enden mit den <crowd-form>
</crowd-form>
-Elementen. Wie bei Standard-HTML-Elementen <form>
sollte der gesamte Formularcode zwischen diesen Elementen platziert werden.
Verwenden Sie das Element <crowd-textract-analyze-document>
für eine Amazon-Textract-Dokumentenanalyseaufgabe. Es verwendet die folgenden Attribute:
-
src
– Gibt die URL der Bilddatei an, die mit Anmerkungen versehen werden soll. -
initialValue
– Legt die Anfangswerte für die Attribute in der Auftragnehmer-Benutzeroberfläche fest. blockTypes
(erforderlich) – Bestimmt die Art der Analyse, die die Auftragnehmer durchführen können. Derzeit wird nurKEY_VALUE_SET
unterstützt.keys
(erforderlich) – Gibt neue Schlüssel und den zugehörigen Textwert an, den der Auftragnehmer hinzufügen kann.-
no-key-edit
(erforderlich) – Verhindert, dass die Auftragnehmer die Schlüssel der durchinitialValue
übermittelten Anmerkungen bearbeiten. -
no-geometry-edit
– Verhindert, dass Auftragnehmer die Polygone von Anmerkungen, die durchinitialValue
weitergegeben werden, bearbeiten können.
Für untergeordnete Elemente des <crowd-textract-analyze-document>
-Elements müssen Sie zwei Regionen haben. Sie können beliebige HTML- und CSS-Elemente in diesen Regionen verwenden.
<full-instructions>
– Anweisungen, die über den Link Vollständige Anweisungen anzeigen im Tool verfügbar sind. Sie können dieses Feld leer lassen, aber wir empfehlen Ihnen, vollständige Anweisungen zu geben, um bessere Ergebnisse zu erzielen.<short-instructions>
– Eine kurze Beschreibung der Aufgabe, die in der Seitenleiste des Werkzeugs angezeigt wird. Sie können dieses Feld leer lassen, aber wir empfehlen Ihnen, vollständige Anweisungen zu geben, um bessere Ergebnisse zu erzielen.
Eine Amazon-Textract-Vorlage würde ähnlich wie die folgende aussehen.
<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>
Beispiel für eine benutzerdefinierte Vorlage für Amazon Rekognition
Alle benutzerdefinierten Vorlagen beginnen und enden mit den <crowd-form>
</crowd-form>
-Elementen. Wie bei Standard-HTML-Elementen <form>
sollte der gesamte Formularcode zwischen diesen Elementen platziert werden. Für eine benutzerdefinierte Amazon-Rekognition-Aufgabenvorlage verwenden Sie das Element <crowd-rekognition-detect-moderation-labels>
. Dieses Element unterstützt die folgenden Attribute:
-
categories
– Eine Reihe von Zeichenketten oder eine Reihe von Objekten, wobei jedes Objekt einname
-Feld hat.-
Wenn die Kategorien als Objekte eingestuft werden, gilt Folgendes:
-
Die angezeigten Kategorien sind der Wert des Feldes
name
. -
Die zurückgegebene Antwort enthält die vollständigen Objekte aller ausgewählten Kategorien.
-
-
Wenn die Kategorien als Zeichenfolgen eingestuft werden, gilt Folgendes:
-
Die zurückgegebene Antwort ist ein Array aller Zeichenfolgen, die ausgewählt wurden.
-
-
-
exclusion-category
– Durch Festlegen dieses Attributs erstellen Sie eine Schaltfläche unterhalb der Kategorien in der Benutzeroberfläche. Wenn ein Benutzer die Schaltfläche anklickt, werden alle Kategorien abgewählt und deaktiviert. Wenn der Auftragnehmer die Schaltfläche erneut auswählt, können die Benutzer wieder Kategorien auswählen. Wenn der Auftragnehmer die Aufgabe abgibt, indem er Absenden wählt, nachdem Sie die Schaltfläche ausgewählt haben, gibt diese Aufgabe ein leeres Array zurück.
Für untergeordnete Elemente des <crowd-rekognition-detect-moderation-labels>
-Elements müssen Sie zwei Regionen haben.
-
<full-instructions>
– Anweisungen, die über den Link Vollständige Anweisungen anzeigen im Tool verfügbar sind. Sie können dieses Feld leer lassen, aber wir empfehlen Ihnen, vollständige Anweisungen zu geben, um bessere Ergebnisse zu erzielen. -
<short-instructions>
– Kurze Beschreibung der Aufgabe, die in der Seitenleiste des Werkzeugs angezeigt wird. Sie können dieses Feld leer lassen, aber wir empfehlen Ihnen, vollständige Anweisungen zu geben, um bessere Ergebnisse zu erzielen.
Eine Vorlage, die diese Elemente verwendet, würde ungefähr wie folgt aussehen.
<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>
Hinzufügen von Automatisierung mit Liquid
Das benutzerdefinierte Vorlagensystem verwendet Liquid
In Liquid ist der Text zwischen einzelnen geschweiften Klammern und Prozentzeichen eine Anweisung oder ein tag, das eine Operation wie Kontrollfluss oder Iteration durchführt. Text zwischen doppelten geschweiften Klammern ist eine Variable oder ein Objekt zum Ausgeben des Werts. Die folgende Liste enthält zwei Arten von Liquid-Tags, die für Sie nützlich sein könnten, um die Verarbeitung von Vorlageneingabedaten zu automatisieren. Wenn Sie einen der folgenden Tag-Typen auswählen, werden Sie zur Liquid-Dokumentation weitergeleitet.
-
Kontrollfluss
: Beinhaltet Programmierlogik-Operatoren wie if/else
,unless
undcase/when
. -
Iteration
: Ermöglicht das wiederholte Ausführen von Codeblöcken mithilfe von Anweisungen wie for-Schleifen. Das folgende Codebeispiel zeigt beispielsweise, wie Sie das Liquid-Tag
for
verwenden können, um einefor
-Schleife zu erstellen. Dieses Beispiel durchläuft die von Amazon Rekognition zurückgegebenenmoderationLabels
und zeigt diemoderationLabels
-Attributename
undparentName
an, sodass Worker sie überprüfen können:{% for label in task.input.selectedAiServiceResponse.moderationLabels %} { name: "{{ label.name }}", parentName: "{{ label.parentName }}", }, {% endfor %}
Verwenden von Variablenfiltern
Zusätzlich zu den standardmäßigen Liquid-Filtern|
) nach dem Variablennamen platziert und dann ein Filtername angegeben wird. Verwenden Sie das folgende Format, um Filter zu verketten.
{{ <content> | <filter> | <filter> }}
Autoescape und explizites Escape
Standardmäßig sind Eingaben durch HTML-Escape-Zeichen geschützt, um Verwirrung zwischen Ihrem variablen Text und HTML zu verhindern. Sie können den escape
-Filter explizit hinzufügen, um es für den Leser der Quelle Ihrer Vorlage ersichtlicher zu machen, dass Escaping erfolgt.
escape_once
escape_once
stellt sicher, dass, wenn Sie Ihren Code bereits durch Escape-Zeichen geschützt haben, er nicht erneut durch Escape-Zeichen geschützt wird. So wird zum Beispiel sichergestellt, dass aus &
nicht &amp;
wird.
skip_autoescape
skip_autoescape
ist nützlich, wenn Ihre Inhalte als HTML verwendet werden sollen. Beispiel: Sie haben ein paar Textabsätze und einige Bilder in den vollständigen Anweisungen für einen Begrenzungsrahmen.
Anmerkung
Sie sollten skip_autoescape
sparsam verwenden. Eine bewährte Methode bei Vorlagen besteht darin, die Übergabe von funktionalem Code oder Markup mit skip_autoescape
zu vermeiden, es sei denn, Sie sind absolut sicher, dass Sie strenge Kontrolle darüber haben, was übergeben wird. Wenn Sie Benutzereingaben übergeben, können Sie Ihre Auftragnehmer einem siteübergreifenden Skriptangriff aussetzen.
to_json
to_json
kodiert Daten, die Sie für JavaScript Object Notation (JSON) bereitstellen. Wenn Sie ein Objekt angeben, wird es serialisiert.
grant_read_access
grant_read_access
nimmt einen Amazon Simple Storage Service (Amazon S3) URI und kodiert ihn in eine HTTPS-URL mit einem kurzlebigen Zugriffstoken für diese Ressource. Dadurch ist es möglich, Foto-, Audio- oder Videoobjekte anzuzeigen, die in S3-Buckets gespeichert sind, auf die Auftragnehmer nicht anders öffentlich zugreifen können.
Beispiel für die Filter to_json und grant_read_access
Eingabe
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 & 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 }}
Output
auto-escape: Have you read 'James & the Giant Peach'? explicit escape: Have you read 'James & the Giant Peach'? explicit escape_once: Have you read 'James & the Giant Peach'? 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>
Beispiel Beispiel für eine automatisierte Klassifizierungsvorlage.
Um dieses einfache Textklassifizierungsbeispiel zu automatisieren, schließen Sie das Liquid-Tag {{ task.input.
ein. In dem Beispiel wird das Element crowd-classifier verwendet.source
}}
<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>
Vorschau einer Vorlage für Auftragnehmeraufgaben
Verwenden Sie den SageMaker RenderUiTemplate
Vorgang, um eine Vorschau einer benutzerdefinierten Worker-Aufgabenvorlage anzuzeigen. Sie können den RenderUiTemplate
Vorgang mit dem AWS CLI oder Ihrem bevorzugten AWS SDK verwenden. Für die Dokumentation der unterstützten sprachspezifischen SDKs für diese API-Operation, siehe den Abschnitt See Also
der RenderUiTemplate
.
Voraussetzungen
Um eine Vorschau Ihrer Worker-Aufgabenvorlage anzuzeigen, muss die AWS Identity and Access Management (IAM) -Rolle Amazon Resource Name (ARN)RoleArn
, die Sie verwenden, über Zugriffsberechtigungen für die S3-Objekte verfügen, die von der Vorlage verwendet werden. Informationen zum Konfigurieren der Rolle oder des Benutzers finden Sie unter Aktivieren der Vorschau von Vorlagen für Auftragnehmeraufgaben .
So zeigen Sie mithilfe der Operation RenderUiTemplate
eine Vorschau Ihrer Vorlage für Auftragnehmeraufgaben an:
-
Geben Sie einen
RoleArn
der Rolle mit den erforderlichen Richtlinien an, um eine Vorschau Ihrer benutzerdefinierten Vorlage anzuzeigen. -
Geben Sie im
Input
-Parameter vonTask
ein JSON-Objekt an, das Werte für die in der Vorlage definierten Variablen enthält. Dies sind die Variablen, die die Variabletask.input.
ersetzen. Wenn Sie beispielsweise eine Variable task.input.text in Ihrer Vorlage definieren, können Sie die Variable im JSON-Objekt alssource
text
:sample text
angeben. -
Fügen Sie in den
Content
-Parameter vonUiTemplate
Ihre Vorlage ein.
Nachdem Sie RenderUiTemplate
konfiguriert haben, verwenden Sie Ihr bevorzugtes SDK oder die AWS CLI , um eine Anforderung zum Rendern Ihrer Vorlage zu übermitteln. Wenn Ihre Anfrage erfolgreich war, enthält die Antwort RenderedContent
, eine Liquid-Vorlage, die das HTML für die Worker-UI rendert.
Wichtig
Um eine Vorschau Ihrer Vorlage anzuzeigen, benötigen Sie eine IAM-Rolle mit der Berechtigung, Amazon S3-Objekte zu lesen, die auf Ihrer Benutzeroberfläche dargestellt werden. Ein Beispiel für eine Richtlinie, die Sie an Ihre IAM-Rolle anhängen können, um diese Berechtigungen zu gewähren, finden Sie unter Aktivieren der Vorschau von Vorlagen für Auftragnehmeraufgaben .