Tera Router
Konsep

Guardrails

Kebijakan berlapis untuk PII, prompt injection, topik, toksisitas, dan bias.

Guardrails menyaring setiap request inferensi (/v1/chat/completions, /v1/messages, /v1/responses) setelah routing dan sebelum provider mana pun melihatnya. Kebijakan dikelola dari halaman Guardrails.

Hanya teks yang ditulis pengguna yang diperiksa: bagian teks dari pesan user. System prompt, giliran asisten, hasil tool, dan keluaran model tidak diperiksa.

Berlapis dan paling spesifik menang

Kebijakan bisa dipasang di lima scope — global, provider, model, chain, dan key. Kebijakan non-global hanya berlaku bila target-nya cocok dengan request:

ScopeTarget cocok dengan
keyid API key
chainnama chain yang dilalui request
modelmodel yang diminta, atau model / provider/model / alias dari target kandidat mana pun
providerslug provider dari target kandidat mana pun

Untuk satu request, router menentukan pengaturan efektif per detektor dengan aturan paling spesifik menang: key mengalahkan chain, yang mengalahkan model, lalu provider, lalu global. Kebijakan paling spesifik yang mengaktifkan sebuah detektor menentukan pengaturannya.

Konsekuensinya: guardrail global tidak bisa dimatikan dari key — key hanya bisa memperketat atau menyetel, tidak melonggarkan lapisan di atasnya. Kebijakan provider dan model berlaku bila cocok dengan target fallback mana pun, jadi fallback tidak bisa lolos darinya.

Detektor

DetektorApa yang diperiksa
piiEmail, IP, nomor telepon, kartu kredit, IBAN, dan identitas Indonesia (NIK, NPWP, paspor) — dengan strategi masking
injectionPola prompt injection, bertingkat
topicsDaftar topik yang diizinkan atau diblokir (mode allow/block)
toxicityKonten kasar/berbahaya dengan ambang skor
biasBias dengan ambang skor

Setiap detektor punya enabled dan action:

  • block — tolak request dengan 400 sebelum dikirim.
  • warn — teruskan dan tandai respons.
  • log — teruskan dan catat saja.

PII memakai strategi masking (redact → <PII>, mask → ****, hash → [hash:…]). Temuan ditulis ulang di teks pengguna sebelum diteruskan, meskipun warn dari detektor lain lebih kuat.

Setiap keputusan selain allow menambahkan header respons X-TeraRouter-Guardrails: <keputusan> dan entri guardrail.<keputusan> di tab Audit Logs. Kegagalan membaca kebijakan ditolak dengan 500 (fail closed).

Menguji tanpa risiko

Editor kebijakan punya panel Test Policy (POST /v1/guardrails/evaluate): kirim teks contoh, lihat detektor mana yang terpicu, keputusannya, dan teks hasil masking — tanpa mengirim apa pun ke provider. Hilangkan config untuk menguji terhadap gabungan semua kebijakan aktif.

curl -X POST http://localhost:8080/v1/guardrails/evaluate \
  -H "Authorization: Bearer <jwt-dashboard>" \
  -H "Content-Type: application/json" \
  -d '{ "text": "email saya [email protected]" }'

Impor dan ekspor

Export all mengunduh guardrails-policies.json ({ "policies": [...] }). Import memvalidasi seluruh file terlebih dahulu, lalu membuat setiap kebijakan di dalamnya di samping kebijakan yang sudah ada.

Kredibilitas deteksi

Detektor bawaan bersifat deterministik (regex/kamus) dan berjalan di dalam proses router. Belum ada engine eksternal (Presidio, OpenAI moderation) yang terpasang, jadi toggle external_detectors saat ini hanya mengubah catatan engine di panel uji.

Di halaman ini