Bedrock Guardrails
Guardrails adalah lapisan keamanan yang berdiri terpisah dari model. Ia berlaku sama untuk model mana pun, sehingga kebijakanmu tidak ikut berubah saat kamu mengganti model.
Intisari
- Berlaku pada input pengguna maupun respons model, dan konsisten lintas foundation model.
- Enam kelompok pengaman: content filter, denied topics, word filter, sensitive information, contextual grounding, automated reasoning.
- Kategori content filter: Hate, Insults, Sexual, Violence, Misconduct, dan Prompt Attack — kekuatannya diatur per kategori.
- Contextual grounding check adalah penangkal halusinasi bawaan untuk aplikasi RAG.
- Bisa dipasang lewat
guardrailConfigdi Converse, atau dipanggil sendiri lewatApplyGuardrail.
Kenapa terpisah dari prompt
Menaruh aturan keamanan di dalam system prompt punya dua kelemahan: ia bisa ditawar oleh masukan pengguna, dan ia harus ditulis ulang setiap kali kamu ganti model. Guardrails hidup di luar model — kebijakan yang sama berlaku untuk model mana pun, dan pelanggarannya tercatat.
| Contoh dari dokumentasi | Pengaman yang dipakai |
|---|---|
| Chatbot yang harus menyaring masukan berbahaya dan respons toksik | Content filters |
| Aplikasi perbankan yang tidak boleh memberi nasihat investasi ilegal | Denied topics |
| Ringkasan transkrip call center yang harus menyensor PII | Sensitive information filters |
Yang bisa dikonfigurasi
| Pengaman | Menangkap |
|---|---|
| Content filters | Hate, Insults, Sexual, Violence, Misconduct, Prompt Attack — teks maupun gambar |
| Denied topics | Topik yang kamu definisikan sendiri sebagai tidak diinginkan |
| Word filters | Kata atau frasa persis: umpatan, nama kompetitor, istilah internal |
| Sensitive information | PII format standar dan entitas regex buatanmu — bisa diblokir atau disamarkan |
| Contextual grounding | Respons yang tidak berpijak pada sumber, atau tidak relevan dengan pertanyaan |
| Automated reasoning | Kepatuhan respons pada aturan logis yang kamu tulis dalam bahasa alami |
Prompt Attack adalah kategori di dalam content filters, dan ia menangkap jailbreak, prompt injection, serta prompt leakage. Ini pertahanan berlapis yang penting untuk agent: dokumen yang dibaca agent bisa berisi instruksi jahat, dan guardrail memeriksanya sebelum sampai ke model.
Memasangnya di Converse
resp = runtime.converse(
modelId=MODEL_ID,
messages=[{"role": "user", "content": [{"text": pertanyaan}]}],
guardrailConfig={
"guardrailIdentifier": GUARDRAIL_ID,
"guardrailVersion": "3", # sebutkan versi, jangan DRAFT di produksi
"trace": "enabled", # kembalikan alasan pemblokiran
},
)
if resp["stopReason"] == "guardrail_intervened":
print("diblokir guardrail")
print(resp.get("trace", {}).get("guardrail"))
Memanggilnya sendiri
ApplyGuardrail memeriksa teks tanpa memanggil model sama sekali. Ini berguna untuk memeriksa
masukan lebih awal — dan lebih murah, karena teks yang jelas melanggar tidak perlu sampai ke model:
hasil = runtime.apply_guardrail(
guardrailIdentifier=GUARDRAIL_ID,
guardrailVersion="3",
source="INPUT", # atau "OUTPUT"
content=[{"text": {"text": pertanyaan}}],
)
if hasil["action"] == "GUARDRAIL_INTERVENED":
return "Maaf, pertanyaan itu di luar cakupan saya."
Pola ini juga jalan keluar saat kamu memakai model atau layanan yang tidak mendukung
guardrailConfig secara langsung — misalnya menyaring hasil tool sebelum dimasukkan ke konteks.
Contextual grounding untuk RAG
"contextualGroundingPolicyConfig": {
"filtersConfig": [
{"type": "GROUNDING", "threshold": 0.75}, # setia pada sumber?
{"type": "RELEVANCE", "threshold": 0.75}, # menjawab pertanyaannya?
]
}
| Filter | Menangkap |
|---|---|
GROUNDING | Jawaban yang menambahkan informasi yang tidak ada di potongan sumber |
RELEVANCE | Jawaban yang benar tapi tidak menjawab pertanyaan |
Ambang batas perlu dikalibrasi dengan data nyata. Terlalu tinggi, jawaban benar ikut diblokir; terlalu rendah, halusinasi lolos. Pakai dataset evaluasi dari Fase 7 untuk menyetelnya, bukan perasaan.
Versi dan siklus hidup
- Ubah konfigurasi di
DRAFT. - Uji dengan kumpulan prompt bermasalah yang kamu simpan.
- Terbitkan jadi versi bernomor.
- Aplikasi menunjuk nomor versi, bukan
DRAFT. - Kalau versi baru bermasalah, kembalikan nomornya — perubahan berlaku seketika.
Guardrail menambah latensi dan biaya per permintaan. Ia layak dibayar untuk aplikasi yang menghadap pengguna. Untuk pekerjaan batch internal atas data tepercaya, timbang lagi. Yang tidak boleh: mematikannya di produksi karena "lambat" tanpa mengganti dengan pengaman lain.
Latihan: buat guardrail dengan satu denied topic (mis. nasihat medis), satu word filter, dan filter PII bermode mask. Pasang ke aplikasi RAG-mu, lalu uji tiga prompt: normal, menyentuh topik terlarang, dan berisi nomor telepon. Pastikan yang ketiga tersamarkan, bukan ditolak.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.