创建定制工作人员任务模板 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建定制工作人员任务模板

Crowd HTML 元素 是提供多种任务小部件和设计元素的 Web 组件,您可以根据您要提出的问题定制这些组件。您可以使用这些群组元素创建自定义工作人员模板,并将其与 Amazon Augmented AI (Amazon Augmented AI (Amazon A2I) 人工审核工作流集成,以自定义工作人员控制台和说明。

有关 Amazon Augmented 元素的列表,请参阅Crowd HTML 元素参考. 有关模板示例,请参阅AmazonGitHub 存储库,其中包含 60 多个示例自定义任务模板。

在本地开发模板

在控制台中测试模板将如何处理传入数据时,您可以通过在 HTML 文件的顶部添加以下代码,在浏览器中测试模板的 HTML 和自定义元素的外观。

这会加载必要的代码来呈现自定义 HTML 元素。如果您希望在常用编辑器而非在控制台中开发您的模板的外观,则使用此代码。

此代码不会解析您的变量。您可能希望在本地开发时将它们替换示例内容。

使用外部资产

Amazon Augmented AI 自定义模板允许您嵌入外部脚本和样式表。例如,以下标题将位于 https://www.example.com/my-enhancement-styles.csstext/css 样式表名称 stylesheet 嵌入自定义模板中。

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

如果您遇到错误,请确保您的原始服务器随资产一起发送正确的 MIME 类型和编码标头。

例如,对于远程脚本,MIME 和编码类型为:application/javascript;CHARSET=UTF-8.

对于远程样式表,MIME 和编码类型为:text/css;CHARSET=UTF-8

跟踪您的变量

构建自定义模板时,您必须向其中添加变量,用于表示可能在不同任务之间或者在不同工作人员之间更改的数据片段。如果您以其中一个示例模板开始,您需要确保您知道它已经使用的变量。

例如,对于将 Augmented AI 人工审核循环与 Amazon Textract 文本审核任务集成的自定义模板,{{ task.input.selectedAiServiceResponse.blocks }}用于初始值输入数据。对于 Amazon Augmented AI (Amazon A2I) 与 Amazon Rekognition 集成,{{ task.input.selectedAiServiceResponse.moderationLabels }}使用。对于自定义任务类型,您需要确定任务类型的输入参数。使用指定了 customInputValuesForStartHumanLoop{{ task.input.customInputValuesForStartHumanLoop}}

Amazon Textract 的自定义模板示例

所有自定义模板都以 <crowd-form> </crowd-form> 元素开始和结束。与标准 HTML <form> 元素类似,所有格式代码都应位于这些元素之间。

对于 Amazon Textract 文档分析任务,请使用<crowd-textract-analyze-document>元素。它使用以下属性:

  • src— 指定要注释的图像文件的 URL。

  • initialValue— 为工作人员 UI 中的属性设置初始值。

  • blockTypes(必需)— 确定工作人员可以执行的分析类型。当前仅支持 KEY_VALUE_SET

  • keys(必需)— 指定工作人员可以添加的新密钥和关联的文本值。

  • no-key-edit(必需)— 防止工作人员编辑通过传递的注释的键initialValue.

  • no-geometry-edit— 防止工作人员编辑通过传递的注释的多边形initialValue.

对于儿童<crowd-textract-analyze-document>元素,您必须有两个区域。您可以在这些区域中使用任意 HTML 和 CSS 元素。

  • <full-instructions>— 从查看完整说明链接。您可以将此项留空,但我们建议您提供完整的说明以获得更好结果。

  • <short-instructions>— 工具侧栏中显示的任务的简要描述。您可以将此项留空,但我们建议您提供完整的说明以获得更好结果。

Amazon Textract 模板类似于以下内容。

Amazon Rekognition 订单的自定义模板示例

所有自定义模板都以 <crowd-form> </crowd-form> 元素开始和结束。与标准 HTML <form> 元素类似,所有格式代码都应位于这些元素之间。对于 Amazon Rekognition 自定义任务模板,请使用<crowd-rekognition-detect-moderation-labels>元素。此元素支持以下属性:

  • categories— 字符串数组或者对象数组,其中每个对象都具有name字段中返回的子位置类型。

    • 如果类别作为对象提供,则以下情况适用:

      • 显示的类别是 name 字段的值。

      • 返回的答复包含任何选定类别的完整 对象。

    • 如果类别作为字符串提供,则以下情况适用:

      • 返回的答复是选择的所有字符串的数组。

  • exclusion-category— 通过设置此属性,您可以在 UI 中的类别下创建一个按钮。当用户选择该按钮时,将取消选择并禁用所有类别。如果工作人员再次选择该按钮,您将重新允许用户选择类别。如果工作人员通过选择提交在选择该按钮后,该任务将返回一个空数组。

对于儿童<crowd-rekognition-detect-moderation-labels>元素,您必须有两个区域。

  • <full-instructions>— 从查看完整说明链接。您可以将此项留空,但我们建议您提供完整的说明以获得更好结果。

  • <short-instructions>— 工具侧栏中显示的任务的简要描述。您可以将此项留空,但我们建议您提供完整的说明以获得更好结果。

使用这些元素的模板类似于如下所示。

使用 Liquid 添加自动化功能

自定义模板系统使用 Liquid 实现自动化。Liquid 是开源内联标记语言。有关更多信息和文档,请参阅 Liquid 主页

在 Liquid 中,单大括号之间的文本以及百分比符号是指令或标签,它执行像控制流或迭代这样的操作。双大括号之间的文本是一个变量或用于输出变量值的对象。以下列表包含两种类型的液体标签,您可能会发现这些标签对于自动处理模板输入数据很有用。如果您选择以下标记类型之一,您将被重定向到液体文档。

  • 控制流:包括编程逻辑运算符,如if/elseunless, 和case/when.

  • 迭代: 允许您使用 for 循环等语句重复运行代码块。

    例如,以下代码示例说明了如何使用 Liquidfor标签创建for循环。此示例循环遍历moderationLabels从 Amazon Rekognition 退回,并显示moderationLabels属性nameparentName供工作人员查看:

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

使用变量筛选条件

除了标准液体过滤条件和操作,Amazon Augmented AI (Amazon Augmented AI (Amazon A2I) 将提供额外筛选条件。您可以在变量名称之后放置竖线 (|) 字符,然后指定筛选条件名称,从而应用筛选条件。要链接过滤条件,请使用以下格式。

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

自动转义和显式转义

默认情况下,输入将进行 HTML 转义,以防止在变量文本和 HTML 之间产生混淆。您可以明确添加 escape 筛选条件,使其对于读取正在进行转义的模板源的用户更显而易见。

escape_once

escape_once 可确保您的代码已经转义,而不会再次重新转义。例如,它确保&amp;不会变为&amp;amp;.

skip_autoescape

当您的内容要用作 HTML 时,skip_autoescape 很有用。例如,您可能在边界框的完整说明中有一些文本段落和一些图像。

注意

请谨慎使用 skip_autoescape。对于模板,最佳实践是避免使用 skip_autoescape 传递功能代码或标记,除非您绝对确信您对正传递的内容具有严格的控制。如果您传递用户输入,您可能会让您的工作线程遭受跨站点脚本攻击。

to_json

to_json 对您提供给 JavaScript 对象表示法 (JSON) 的数据进行编码。如果您提供了一个对象,它会对该对象进行序列化。

grant_read_access

grant_read_access获取 Amazon Simple Storage Service (Amazon S3) URI 并将其编码为 HTTPS URL(具有针对该资源的短期访问令牌)。这样,就可以向工作人员显示存储在 S3 存储桶中但原本无法公开访问的照片、音频或视频对象。

例 to_json 和 grant_read_access 筛选条件示例

输入

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

输出

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>

例 自动化分类模板的示例。

要自动执行此简单文本分类示例,请包括 Liquid 标签 {{ task.input.source }}。此示例使用 crowd-classifier 元素。

预览工作人员任务模板

要预览自定义工作人员任务模板,请使用 SageMakerRenderUiTemplateoperation. 您可以使用RenderUiTemplate操作与Amazon CLI或首选的Amazon开发工具包。有关此 API 操作支持的语言特定 SDK 的文档,请参阅 See Also的 部分 RenderUiTemplate.

先决条件

要预览工作人员任务模板,您使用的 Amazon Identity and Access Management (IAM) 角色 Amazon 资源名称 (ARN) 或 RoleArn 必须有权访问模板使用的 S3 对象。要了解如何配置角色或用户,请参阅启用工作人员任务模板预览

要使用 RenderUiTemplate 操作预览工作人员任务模板,请执行以下操作:

  1. 提供附加了所需策略的角色的 RoleArn 以预览自定义模板。

  2. Input的参数Task中,提供一个包含模板中定义的变量值的 JSON 对象。这些变量用于替换 task.input.source 变量。例如,如果您在模板中定义了 task.input.text 变量,则可以在 JSON 对象中以作为textsample text.

  3. Content的参数UiTemplate中,插入模板。

配置了之后RenderUiTemplate,请使用您的首选 SDK 或Amazon CLI以提交呈现模板的请求。如果您的请求已成功,响应会包含 RenderedContent,这是一个呈现工作人员 UI 的 HTML 的液体模板。

重要

要预览模板,您需要有权读取在用户界面上呈现的 Amazon S3 对象的 IAM 角色。有关可附加到 IAM 角色以授予这些权限的示例策略,请参阅启用工作人员任务模板预览 .