← Semua pembelajaran / AWS untuk AI Engineer
Fase 6 · Safety, Security & Governance

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 guardrailConfig di Converse, atau dipanggil sendiri lewat ApplyGuardrail.

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 dokumentasiPengaman yang dipakai
Chatbot yang harus menyaring masukan berbahaya dan respons toksikContent filters
Aplikasi perbankan yang tidak boleh memberi nasihat investasi ilegalDenied topics
Ringkasan transkrip call center yang harus menyensor PIISensitive information filters

Yang bisa dikonfigurasi

PengamanMenangkap
Content filtersHate, Insults, Sexual, Violence, Misconduct, Prompt Attack — teks maupun gambar
Denied topicsTopik yang kamu definisikan sendiri sebagai tidak diinginkan
Word filtersKata atau frasa persis: umpatan, nama kompetitor, istilah internal
Sensitive informationPII format standar dan entitas regex buatanmu — bisa diblokir atau disamarkan
Contextual groundingRespons yang tidak berpijak pada sumber, atau tidak relevan dengan pertanyaan
Automated reasoningKepatuhan 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?
    ]
}
FilterMenangkap
GROUNDINGJawaban yang menambahkan informasi yang tidak ada di potongan sumber
RELEVANCEJawaban 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

  1. Ubah konfigurasi di DRAFT.
  2. Uji dengan kumpulan prompt bermasalah yang kamu simpan.
  3. Terbitkan jadi versi bernomor.
  4. Aplikasi menunjuk nomor versi, bukan DRAFT.
  5. 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.