新增包含 Liquid 的自動化 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

新增包含 Liquid 的自動化

我們的自訂範本系統使用 Liquid 進行自動化。Liquid 是開放原始碼內嵌標記語言。在 Liquid,單一大括號與百分比符號之間的文字是說明或標籤,用以執行控制流程或重複等操作。雙邊大括號之間的文字是變數,或輸出變數值的物件

Liquid 最常見的用途是剖析來自輸入資訊清單檔案的資料,並提取相關變數以建立任務。除非指定預先註釋 Lambda,否則 Ground Truth 會自動產生任務。Ground Truth 或 傳回的taskInput物件註釋前 Lambda是您範本中的task.input物件。

輸入資訊清單中的屬性會以 的形式傳遞到您的範本event.dataObject

範例 資訊清單資料物件
{ "source": "This is a sample text for classification", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
範例 HTML 使用變數的範例
<crowd-classifier name='tweetFeeling' categories='{{ task.input.labels | to_json }}' header='{{ task.input.header }}' > <classification-target> {{ task.input.source }} </classification-target>

請注意,在上述labels屬性 | to_json中新增 。這是一個篩選條件,可將輸入資訊清單陣列轉換為陣列的JSON表示。下一節將說明變數篩選條件。

下列清單包含兩種 Liquid 標籤,您可能會發現這些標籤對於自動化範本輸入資料處理很有用。如果您選取下列其中一種標籤類型,系統會將您重新導向至 Liquid 文件。

如需詳細資訊及文件,請前往 Liquid 首頁

變數篩選條件

除標準 Liquid 篩選條件與動作外,Ground Truth 也提供幾個額外篩選條件。篩選條件的套用方式,是透過將管道 (|) 字元放置於變數名稱後,再指定篩選條件名稱。篩選條件可以透過下列形式來串連:

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

自動逸出和明確逸出

根據預設,輸入會HTML逸出,以防止變數文字與 之間混淆HTML。您可以明確新增 escape 篩選條件,讓讀取範本來源的人明白逸出正在進行。

escape_once

escape_once 可確保如果您已完成逸出您的程式碼,即不會重新逸出。例如,&amp; 不會變成 &amp;amp;。

skip_autoescape

skip_autoescape 當您的內容旨在用作 時, 非常有用HTML。例如,邊界框的完整說明中可能有幾段文字和一些影像。

請謹慎使用 skip_autoescape

範本中的最佳實務是避免使用 skip_autoescape 來傳遞功能性程式碼或標記,除非您非常確定您可以嚴格控制傳遞內容。如果您傳遞使用者輸入,您可能會讓您的工作者面臨跨網站指令碼攻擊。

to_json

to_json 會編碼您饋送至其中的內容 JSON(JavaScript 物件標記)。如果您提供物件,則會將該物件序列化。

grant_read_access

grant_read_access 會取得 S3 URI並將其編碼為HTTPSURL具有該資源短期存取權杖的 。這可讓工作者顯示存放在 S3 儲存貯體中不可公開存取的相片、音訊或影片物件。

s3_presign

s3_presign 篩選條件的運作方式與grant_read_access篩選條件相同。 s3_presign會採用 Amazon S3,URI並將其編碼為HTTPSURL具有該資源短期存取權杖的 。這能夠將存放在 S3 儲存貯體中的照片、音訊或影片物件顯示給工作者,這些物件在其他情況下無法公開存取。

範例 變數篩選條件的

輸入

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

輸出

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> s3_presign: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?<access token and other params>
範例 自動化分類範本。

若要自動執行簡易文字分類範例,請將推文文字取代為變數。

自動化的文字分類範本如下,其中已新增自動化。變更/新增內容以粗體顯示。

<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 seem to match, choose "other." </full-instructions> <short-instructions> Pick the term best describing the sentiment of the tweet. </short-instructions> </crowd-classifier> </crowd-form>

先前範例中的推文文字現在會取代為 物件。entry.taskInput 物件使用 source(或您在註釋前 Lambda 中指定的另一個名稱) 做為文字的屬性名稱,並且HTML會因為在雙大括號之間而直接插入 。