Menyusun guardrail
Halaman ini turun ke tingkat konfigurasi: apa yang bisa disetel di setiap filter, dan konsekuensi tiap pilihan.
Intisari
- Kekuatan filter konten diatur per kategori — tidak harus seragam.
- Standard tier memperluas deteksi ke dalam elemen kode: komentar, nama variabel, dan string literal.
- Sensitive information filter berbasis ML dan bergantung konteks — bukan sekadar pencocokan pola.
- Bisa blok atau samarkan; untuk ringkasan transkrip, samarkan jauh lebih berguna.
- Automated reasoning checks memvalidasi respons terhadap aturan logis yang kamu tulis dalam bahasa alami.
Content filters
"contentPolicyConfig": {
"filtersConfig": [
{"type": "HATE", "inputStrength": "HIGH", "outputStrength": "HIGH"},
{"type": "INSULTS", "inputStrength": "MEDIUM", "outputStrength": "MEDIUM"},
{"type": "SEXUAL", "inputStrength": "HIGH", "outputStrength": "HIGH"},
{"type": "VIOLENCE", "inputStrength": "MEDIUM", "outputStrength": "MEDIUM"},
{"type": "MISCONDUCT", "inputStrength": "HIGH", "outputStrength": "HIGH"},
{"type": "PROMPT_ATTACK", "inputStrength": "HIGH", "outputStrength": "NONE"},
]
}
Perhatikan baris terakhir. PROMPT_ATTACK memeriksa upaya membajak instruksi, dan itu
masuk akal hanya pada input. Menyetel outputStrength-nya ke NONE adalah
pilihan yang benar, bukan kelalaian.
Tier
| Classic | Standard | |
|---|---|---|
| Kategori dasar | Didukung | Didukung |
| Deteksi di dalam elemen kode | Tidak | Ya — komentar, nama variabel/fungsi, string literal |
| Prompt leakage | Tidak | Ya |
Perbedaan itu penting untuk asisten yang menangani kode. Instruksi jahat yang disembunyikan sebagai komentar di dalam potongan kode adalah jalur serangan nyata, dan hanya Standard tier yang memeriksanya.
Denied topics
"topicPolicyConfig": {
"topicsConfig": [{
"name": "NasihatMedis",
"definition": ("Permintaan diagnosis, resep obat, dosis, atau saran "
"pengobatan untuk kondisi kesehatan tertentu."),
"examples": [
"Obat apa yang cocok untuk sakit kepala saya?",
"Berapa dosis parasetamol untuk anak 5 tahun?",
],
"type": "DENY",
}]
}
Definisi ditulis dalam bahasa alami, dan contoh sangat membantu ketepatannya. Tulis definisi yang sempit: "nasihat medis" yang terlalu luas akan ikut memblokir pertanyaan tentang kebijakan asuransi kesehatan perusahaan.
Sensitive information
"sensitiveInformationPolicyConfig": {
"piiEntitiesConfig": [
{"type": "EMAIL", "action": "ANONYMIZE"},
{"type": "PHONE", "action": "ANONYMIZE"},
{"type": "NAME", "action": "ANONYMIZE"},
{"type": "CREDIT_DEBIT_CARD_NUMBER", "action": "BLOCK"},
],
"regexesConfig": [{
"name": "NIP",
"pattern": r"\bNIP-\d{8}\b",
"action": "ANONYMIZE",
}],
}
| Aksi | Yang terjadi | Kapan dipilih |
|---|---|---|
BLOCK | Seluruh permintaan atau respons ditolak | Data yang seharusnya tidak pernah muncul, mis. nomor kartu |
ANONYMIZE | Bagian sensitif diganti penanda | Ringkasan transkrip, tiket dukungan — isinya tetap berguna |
Dokumentasinya menekankan bahwa filter ini berbasis machine learning dan bergantung konteks. Artinya ia bisa mengenali nama orang tanpa pola tetap — dan juga berarti ia probabilistik. Untuk identifier yang bentuknya pasti (NIP, nomor invoice), regex kustom lebih dapat diandalkan.
Automated reasoning checks
Ini pengaman yang paling berbeda sifatnya. Alih-alih menyaring konten berbahaya, ia memeriksa apakah respons patuh pada aturan logis yang kamu tetapkan dalam bahasa alami — misalnya memastikan chatbot layanan pelanggan hanya merekomendasikan produk yang benar-benar ada di inventaris.
Bedakan dari contextual grounding: grounding menanyakan "apakah ini berpijak pada sumber?", automated reasoning menanyakan "apakah ini melanggar aturan yang saya tetapkan?".
Urutan menyusun guardrail
- Kumpulkan 20–30 prompt bermasalah nyata dari aplikasimu.
- Mulai dari content filter dengan kekuatan sedang untuk semua kategori.
- Tambahkan denied topics yang spesifik untuk domainmu.
- Tambahkan filter PII sesuai data yang benar-benar kamu tangani.
- Untuk RAG, tambahkan contextual grounding dan kalibrasi ambangnya.
- Jalankan seluruh kumpulan prompt uji, hitung false positive dan false negative.
- Naikkan kekuatan hanya pada kategori yang memang bocor.
Latihan: susun daftar sepuluh prompt: lima yang harus diblokir, lima yang harus lolos tapi terlihat
mencurigakan. Jalankan lewat apply_guardrail dan hitung berapa yang salah klasifikasi. Setel ulang
kekuatan filter sampai sepuluh-sepuluhnya benar — dan simpan daftar itu sebagai tes regresi.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.