

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menambahkan otomatisasi dengan Liquid
<a name="sms-custom-templates-step2-automate"></a>

Sistem template kustom kami menggunakan [Liquid](https://shopify.github.io/liquid/) untuk otomatisasi. Ini adalah bahasa markup inline open source. Dalam Liquid, teks antara kurung kurawal tunggal dan simbol persen adalah instruksi atau *tag* yang melakukan operasi seperti aliran kontrol atau iterasi. Teks antara kurung kurawal ganda adalah variabel atau *objek* yang mengeluarkan nilainya.

Penggunaan Liquid yang paling umum adalah mengurai data yang berasal dari file manifes masukan Anda, dan mengeluarkan variabel yang relevan untuk membuat tugas. Ground Truth secara otomatis menghasilkan tugas kecuali Lambda pra-anotasi ditentukan. `taskInput`Objek yang dikembalikan oleh Ground Truth atau Anda [Pre-annotation Lambda](sms-custom-templates-step3-lambda-requirements.md#sms-custom-templates-step3-prelambda) adalah `task.input` objek di template Anda.

Properti dalam manifes masukan Anda diteruskan ke template Anda sebagai`event.dataObject`.

**Example objek data manifes**  

```
{
  "source": "This is a sample text for classification",
  "labels": [ "angry" , "sad" , "happy" , "inconclusive" ],
  "header": "What emotion is the speaker feeling?"
}
```

**Example contoh HTML menggunakan variabel**  

```
<crowd-classifier 
  name='tweetFeeling'
  categories='{{ task.input.labels | to_json }}'
  header='{{ task.input.header }}' >
<classification-target>
  {{ task.input.source }}
</classification-target>
```

Perhatikan penambahan ` | to_json` `labels` properti di atas. Itu adalah filter yang mengubah array manifes input menjadi representasi JSON dari array. Filter variabel dijelaskan di bagian selanjutnya.

Daftar berikut mencakup dua jenis tag Liquid yang mungkin berguna bagi Anda untuk mengotomatiskan pemrosesan data input template. Jika Anda memilih salah satu jenis tag berikut, Anda akan diarahkan ke dokumentasi Liquid.
+ [Aliran kontrol](https://shopify.github.io/liquid/tags/control-flow/): Termasuk operator logika pemrograman seperti `if/else``unless`,, dan`case/when`.
+ [Iterasi](https://shopify.github.io/liquid/tags/iteration/): Memungkinkan Anda menjalankan blok kode berulang kali menggunakan pernyataan seperti untuk loop. 

  Untuk contoh template HTML yang menggunakan elemen Liquid untuk membuat loop for, lihat [translation-review-and-correction.liquid.html](https://github.com/aws-samples/amazon-sagemaker-ground-truth-task-uis/blob/8ae02533ea5a91087561b1daecd0bc22a37ca393/text/translation-review-and-correction.liquid.html) di. GitHub 

Untuk informasi dan dokumentasi selengkapnya, kunjungi [beranda Liquid](https://shopify.github.io/liquid/).

## Filter variabel
<a name="sms-custom-templates-step2-automate-filters"></a>

Selain [filter dan tindakan Liquid](https://shopify.github.io/liquid/filters/abs/) standar, Ground Truth menawarkan beberapa filter tambahan. Filter diterapkan dengan menempatkan karakter pipe (`|`) setelah nama variabel, kemudian menentukan nama filter. Filter dapat dirantai dalam bentuk:

**Example**  

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

### Autoescape dan pelarian eksplisit
<a name="sms-custom-templates-step2-automate-filters-autoescape"></a>

Secara default, input akan berupa HTML yang lolos untuk mencegah kebingungan antara teks variabel dan HTML Anda. Anda dapat secara eksplisit menambahkan `escape` filter untuk membuatnya lebih jelas bagi seseorang yang membaca sumber template Anda bahwa pelolosan sedang dilakukan.

### escape\_once
<a name="sms-custom-templates-step2-automate-escapeonce"></a>

`escape_once`memastikan bahwa jika Anda telah lolos dari kode Anda, itu tidak akan lolos kembali di atas itu. Misalnya, agar & tidak menjadi &;.

### skip\_autoescape
<a name="sms-custom-templates-step2-automate-skipautoescape"></a>

`skip_autoescape`berguna ketika konten Anda dimaksudkan untuk digunakan sebagai HTML. Misalnya, Anda mungkin memiliki beberapa paragraf teks dan beberapa gambar dalam instruksi lengkap untuk kotak pembatas.

**Gunakan `skip_autoescape` dengan hemat**  
Praktik terbaik dalam template adalah menghindari meneruskan kode fungsional atau markup `skip_autoescape` kecuali Anda benar-benar yakin Anda memiliki kontrol ketat atas apa yang sedang diteruskan. Jika Anda meneruskan masukan pengguna, Anda bisa membuka pekerja Anda hingga serangan Cross Site Scripting.

### to\_json
<a name="sms-custom-templates-step2-automate-tojson"></a>

`to_json`akan menyandikan apa yang Anda berikan ke JSON (JavaScript Object Notation). Jika Anda memberinya makan sebuah objek, itu akan membuat serial itu.

### grant\_read\_access
<a name="sms-custom-templates-step2-automate-grantreadaccess"></a>

`grant_read_access`mengambil URI S3 dan mengkodekannya ke URL HTTPS dengan token akses berumur pendek untuk sumber daya itu. Hal ini memungkinkan untuk menampilkan kepada pekerja objek foto, audio, atau video yang disimpan dalam ember S3 yang tidak dapat diakses publik.

### s3\_presign
<a name="sms-custom-templates-step2-automate-s3"></a>

 `s3_presign`Filter bekerja dengan cara yang sama seperti `grant_read_access` filter. `s3_presign`mengambil URI Amazon S3 dan mengkodekannya ke URL HTTPS dengan token akses berumur pendek untuk sumber daya itu. Ini memungkinkan untuk menampilkan objek foto, audio, atau video yang disimpan dalam ember S3 yang tidak dapat diakses publik oleh pekerja.

**Example dari filter variabel**  
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 }}
s3_presign: {{ "s3://amzn-s3-demo-bucket/myphoto.png" | s3_presign }}
```

**Example**  
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>}}
s3_presign: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?{{<access token and other params>}}
```

**Example dari template klasifikasi otomatis.**  
Untuk mengotomatiskan contoh klasifikasi teks sederhana, ganti teks tweet dengan variabel.  
Template klasifikasi teks di bawah ini dengan otomatisasi ditambahkan. changes/additions Disorot dengan huruf tebal.  

```
<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>
```
Teks tweet dalam sampel sebelumnya sekarang diganti dengan objek. `entry.taskInput`Objek menggunakan `source` (atau nama lain yang Anda tentukan dalam Lambda pra-anotasi Anda) sebagai nama properti untuk teks, dan itu dimasukkan langsung dalam HTML berdasarkan berada di antara tanda kurung kurawal ganda.