Panduan Konfigurasi Bot
Panduan ini menjelaskan 5 sistem pengaturan yang mengontrol perilaku chatbot HUPH. Dengan memahami sistem ini, kamu bisa mengatur akurasi, kepribadian, dan keputusan bot tanpa perlu coding.
Gambaran Umum: Bagaimana Bot Memproses Pesan
Setiap kali user WhatsApp mengirim pesan, bot memprosesnya melalui beberapa tahap. Setiap tahap dikontrol oleh sistem pengaturan yang berbeda.
User kirim pesan WhatsApp
│
▼
┌─────────────────────────────────┐
│ 1. KLASIFIKASI INTENT │ ← diatur di halaman Intents
│ "Apa yang user inginkan?" │
│ Hasil: mau_daftar, │
│ tanya_beasiswa, umum... │
└──────────────┬──────────────────┘
│
▼
┌─────────────────────────────────┐
│ 2. CEK ATURAN ESKALASI │ ← diatur di halaman Escalation Rules
│ "Perlu dialihkan ke manusia?" │
│ Cek: sentimen, skor lead, │
│ jumlah pesan │
│ Hasil: eskalasi / notifikasi │
│ / lanjut dengan bot │
└──────────────┬──────────────────┘
│
▼
┌─────────────────────────────────┐
│ 3. PENCOCOKAN FAQ │ ← diatur di halaman FAQ
│ "Ada jawaban siap pakai?" │
│ Pencarian kemiripan semantik │
│ Cocok → jawab instan (~0.4s) │
│ Tidak cocok → lanjut ke AI │
└──────────────┬──────────────────┘
│ (tidak ada FAQ cocok)
▼
┌─────────────────────────────────┐
│ 4. AI BUAT JAWABAN │
│ Cari di Knowledge Base │ ← Dokumen + Web Sources
│ + AI generate jawaban │
│ Dipandu oleh: │
│ - Guidance Rules │ ← diatur di halaman Guidance Rules
│ - Persona chatbot │ ← diatur di halaman Chatbot Config
│ (~5 detik) │
└──────────────┬──────────────────┘
│
▼
Bot kirim jawaban
Intinya:
- Langkah 1-2 menentukan BAGAIMANA pesan diproses (routing)
- Langkah 3 mencoba jawab CEPAT dari FAQ
- Langkah 4 jawab menggunakan AI jika FAQ tidak cocok
1. Chatbot Config — Kepribadian & Kriteria Scoring
Halaman: Bot Config → Chatbot
Sistem ini mengatur siapa bot ini dan bagaimana menilai lead.
Pengaturan Persona
Persona menentukan identitas bot — ini mempengaruhi gaya bahasa di SEMUA jawaban.
| Pengaturan | Fungsi | Contoh |
|---|---|---|
| Nama bot | Cara bot memperkenalkan diri | "HalloUPH" |
| Tone | Gaya bahasa formal atau santai | "Santai, ramah, pakai 'kamu'" |
| Bahasa | Bahasa default jawaban | "Bahasa Indonesia" |
Kriteria Lead Scoring
Lead scoring menentukan seberapa "panas" seorang calon mahasiswa. Ini mempengaruhi prioritas follow-up dan notifikasi ke counselor.
| Label | Skor | Ciri-ciri | Yang Terjadi |
|---|---|---|---|
| HOT | 80-100 | Siap daftar, sudah tanya detail program, sudah kasih data pribadi | Counselor langsung dihubungi, follow-up otomatis dilewati |
| WARM | 40-79 | Tertarik tapi masih eksplorasi, tanya beberapa program, bandingkan dengan universitas lain | Dapat 3x follow-up, konten berisi nilai tambah |
| COLD | 0-39 | Hanya browsing, pertanyaan umum, belum sebut program tertentu | Dapat max 2x follow-up, lalu berhenti |
Teks kriteria ini bisa diedit di halaman Chatbot Config. AI membaca teks ini saat menilai setiap lead di pesan ke-3, 5, 7, lalu setiap 5 pesan.
Keyword Sentimen
Kata-kata yang membantu bot mendeteksi emosi user:
| Sentimen | Contoh Kata |
|---|---|
| Kecewa/frustasi | "kecewa", "lambat", "susah", "ribet", "ga jelas" |
| Positif | "terima kasih", "bagus", "mantap", "helpful" |
| Mendesak | "segera", "deadline", "buru-buru", "kapan terakhir" |
Keyword ini digunakan oleh Escalation Rules. Misalnya, aturan bisa berisi: "Jika sentimen = frustasi DAN skor lead > 80, eskalasi ke counselor."
2. Intents — Memahami Maksud Pesan User
Halaman: Bot Config → Intents
Sistem ini mengatur bagaimana bot mengklasifikasi apa yang user inginkan.
Cara Kerja Klasifikasi
Setiap pesan masuk melewati 4 tingkat klasifikasi:
| Tingkat | Cara | Kecepatan | Kapan Dipakai |
|---|---|---|---|
| Tingkat 1: Aturan | Pencocokan kata kunci | Instan | Kata kunci persis (misal "mau daftar") |
| Tingkat 2: Cache | Lookup klasifikasi sebelumnya | Instan | Pesan mirip pernah diklasifikasi |
| Tingkat 3: AI | AI tentukan klasifikasi | ~0.5 detik | Tidak ada aturan atau cache cocok |
| Tingkat 4: Default | Masuk ke unknown |
Instan | AI tidak bisa tentukan → ke FAQ/KB |
Daftar Intent
| Intent | Artinya | Yang Bot Lakukan |
|---|---|---|
want_register |
User mau mendaftar | Tampilkan langkah pendaftaran, minta nama/email/telp |
want_visit_campus |
User mau kunjungi kampus | Tampilkan jadwal Open Day, minta data kontak |
ask_scholarship |
Tanya tentang beasiswa | Arahkan ke info beasiswa dari Knowledge Base |
ask_program_specific |
Tanya tentang program tertentu | Arahkan ke info program dari Knowledge Base |
share_personal_info |
User memberikan nama/email/telp | Ekstrak dan simpan ke data lead |
request_human |
Mau bicara dengan orang | Langsung eskalasi ke counselor |
complaint |
Menyampaikan keluhan | Eskalasi dengan prioritas tinggi |
payment_confirmation |
Konfirmasi sudah bayar | Eskalasi ke admin keuangan |
document_upload_help |
Butuh bantuan upload dokumen | Eskalasi ke admin |
transfer_student |
Mahasiswa pindahan | Eskalasi ke spesialis |
unknown |
Pertanyaan umum | Ke FAQ → Knowledge Base → AI jawab |
Apa yang Bisa Dilakukan di Halaman Intents
- Toggle on/off — nonaktifkan intent yang sering salah klasifikasi
- Edit contoh — tambah atau hapus contoh kalimat untuk melatih classifier
- AI Suggest — AI buatkan variasi contoh kalimat otomatis
- Export/Import CSV — edit massal lewat spreadsheet
- Lihat log klasifikasi — lihat pesan terbaru dan bagaimana diklasifikasi
Tips
- Kalau user sering salah klasifikasi, tambah contoh kalimat untuk intent yang benar
- Gunakan AI Suggest untuk generate variasi yang mungkin tidak terpikirkan
- Log klasifikasi menunjukkan skor confidence — skor rendah berarti bot menebak
unknownitu BUKAN masalah — artinya pesan masuk ke pipeline AI lengkap untuk jawaban yang lebih baik
3. FAQ — Jawaban Cepat
Halaman: Knowledge → FAQ
Sistem ini mengatur pasangan pertanyaan-jawaban yang sudah disiapkan untuk respon instan.
Cara Kerja FAQ
FAQ adalah jalur cepat. Kalau user bertanya sesuatu yang mirip dengan FAQ, bot langsung jawab tanpa perlu proses AI yang lebih lama.
User: "Berapa biaya kuliah Informatika?"
│
▼
Sistem cek FAQ (kemiripan semantik)
│
├─ Skor > 0.7 → FAQ cocok → jawab instan (~0.4 detik)
│
└─ Skor < 0.7 → tidak cocok → proses AI lengkap (~5 detik)
Statistik Saat Ini
- 101 FAQ item aktif
- Threshold: 0.7 skor kemiripan
- Kecepatan: ~0.4 detik untuk FAQ vs ~5 detik untuk AI lengkap
FAQ vs Knowledge Base
| FAQ | Knowledge Base (Dokumen + Web Sources) | |
|---|---|---|
| Kecepatan | ~0.4 detik | ~5 detik |
| Akurasi | Tepat (jawaban ditulis manusia) | Dibuat AI (bisa bervariasi) |
| Cakupan | Hanya pertanyaan yang cocok | Topik apapun yang ada di KB |
| Kapan pakai | Pertanyaan umum yang berulang | Pertanyaan kompleks dan bervariasi |
Apa yang Bisa Dilakukan di Halaman FAQ
- Tambah FAQ — tulis pertanyaan dan jawabannya
- Toggle on/off — nonaktifkan sementara tanpa menghapus
- Edit — ubah pertanyaan atau jawaban
- Hapus — hapus permanen
- Perubahan otomatis sync ke sistem dalam 5 detik
Tips
- Mulai dari 20 pertanyaan paling sering ditanyakan — ini memberikan dampak terbesar
- Tulis pertanyaan sesuai cara user bertanya, bukan formal (misal "Berapa biaya kuliah?" bukan "Berapakah biaya perkuliahan?")
- Buat jawaban singkat — pesan WhatsApp harus pendek dan mudah dibaca
- Kalau FAQ tidak pernah cocok, coba ubah kata-kata pertanyaannya sesuai cara user sebenarnya bertanya
FAQ Score Threshold — Slider Lanjutan (Phase 2)
Lokasi: Chatbot Config → Advanced → FAQ Score Threshold
Slider ini mengontrol batas minimum skor kemiripan sebelum FAQ fast-path dipakai. Default 0.7 (sudah terbukti aman untuk 101 FAQ produksi).
- Naikkan (mis. 0.8) → FAQ lebih selektif, lebih banyak pertanyaan yang diroute ke AI lengkap. Cocok kalau operator lihat banyak reject dari judge Bot Health karena FAQ match yang kurang tepat.
- Turunkan (mis. 0.6) → FAQ lebih longgar, lebih banyak pertanyaan yang kena fast-path. Cocok kalau volume jawaban AI tinggi tapi banyak pertanyaan sebetulnya sudah ada di FAQ.
Status saat ini: Slider terkunci sampai FEATURE_FAQ_THRESHOLD=true di-set di server. Itu dilakukan setelah window observasi 1 minggu di Phase 1 (paling cepat 2026-05-01) membuktikan knob ini perlu. Tanpa data Phase 1 yang jelas, perubahan threshold = tebak-tebakan.
Apa yang terjadi saat disimpan: backend HUPH kirim perintah ke Dify (/v1/apps/annotation-reply/enable) untuk re-index embedding dengan threshold baru. Prosesnya async (~detik untuk 35 anotasi aktif). Selama proses, slider sudah mencerminkan nilai baru; chat user langsung pakai threshold baru setelah re-index selesai.
Kalau Dify gagal: backend batal tulis ke app_config lokal dan balas 502. Ini sengaja — mencegah split-brain di mana UI bilang "0.8" tapi Dify masih pakai "0.7". Cukup retry setelah Dify sehat.
Edge case langka — Dify terima tapi database HUPH gagal: urutan saat ini Dify dulu, baru UPSERT lokal. Kalau Dify sudah apply threshold baru tapi UPSERT ke app_config gagal (koneksi postgres putus tepat saat itu), Dify punya nilai baru sementara app_config masih lama. UI akan bilang "threshold 0.7" padahal chat bot pakai 0.8. Recovery: simpan ulang slider dengan nilai yang benar (idempotent pada Dify). Secara statistik sangat jarang; dokumentasi ini ada supaya kalau kejadian operator tahu apa yang terjadi.
Apa yang tidak diubah slider: embedding_provider_name dan embedding_model_name (ditampilkan di bawah slider sebagai info). Mengubah ini butuh re-index ulang semua FAQ embedding — bukan knob harian, dilakukan lewat SQL manual + scripts/migrate-faq-threshold-config.sql bila benar-benar perlu.
4. Escalation Rules — Kapan Melibatkan Manusia
Halaman: Bot Config → Escalation Rules
Sistem ini mengatur aturan otomatis yang menentukan kapan bot harus menyerahkan percakapan ke counselor manusia.
Cara Kerja Aturan Eskalasi
Setelah setiap pesan, bot mengevaluasi SEMUA aturan eskalasi yang aktif. Setiap aturan punya kondisi (logika AND — semua harus terpenuhi) dan aksi.
Pesan masuk → Bot klasifikasi intent + deteksi sentimen + cek skor lead
│
▼
Untuk setiap aturan aktif:
Kondisi 1 cocok? DAN Kondisi 2 cocok? DAN ...
│
├─ Semua cocok → jalankan aksi (eskalasi / notifikasi / tag)
│
└─ Ada yang tidak cocok → lewati, cek aturan berikutnya
Field Kondisi
| Field | Apa yang Diukur | Contoh Nilai |
|---|---|---|
sentiment |
Emosi user | frustrated, positive, neutral, urgent |
lead_score |
Seberapa "panas" lead (0-100) | 0, 40, 80, 95 |
funnel_stage |
Posisi di proses admisi | inquiry, prospect, registered, admitted |
message_count |
Total pesan dalam percakapan | 1, 5, 10, 20 |
intent |
Apa yang user inginkan | want_register, complaint, request_human |
user_role |
Siapa yang mengirim pesan | prospective_student, parent, teacher |
Operator
| Operator | Arti | Contoh |
|---|---|---|
eq |
Sama dengan | sentiment eq "frustrated" |
ne |
Tidak sama dengan | intent ne "unknown" |
gt / gte |
Lebih besar dari / atau sama | lead_score gte 80 |
lt / lte |
Lebih kecil dari / atau sama | message_count lt 3 |
in |
Salah satu dari (daftar) | funnel_stage in ["inquiry", "prospect"] |
contains |
Teks mengandung | intent contains "register" |
Jenis Aksi
| Aksi | Yang Terjadi | Bot Lanjut? |
|---|---|---|
| Escalate | Status percakapan → "escalated", counselor diberitahu, bot berhenti merespons | Tidak — counselor mengambil alih |
| Notify | Notifikasi dikirim ke counselor/admin, tapi bot tetap merespons | Ya — bot tetap jalan |
| Tag | Label ditambahkan ke metadata percakapan untuk tracking | Ya — tidak ada perubahan terlihat |
Contoh Aturan
| Nama Aturan | Kondisi | Aksi | Mengapa |
|---|---|---|---|
| Lead panas kecewa | sentimen = frustrated DAN skor_lead >= 80 | Eskalasi (prioritas: tinggi) | Lead bernilai tinggi sedang kecewa — perlu sentuhan manusia SEKARANG |
| Alert lead panas | skor_lead >= 80 | Notifikasi admin | Beri tahu counselor tentang lead panas, tapi bot bisa terus bicara |
| User terjebak | jumlah_pesan > 15 | Eskalasi (prioritas: sedang) | User sudah chat terlalu lama — kemungkinan bingung |
| Orang tua bertanya | user_role = parent | Tag "parent" | Lacak percakapan orang tua secara terpisah |
Eskalasi Otomatis vs Manual
| Berdasarkan Intent | Berdasarkan Aturan | |
|---|---|---|
| Pemicu | User bilang "mau bicara orang" | Sistem mendeteksi kombinasi sinyal |
| Siapa yang memutuskan | User meminta langsung | Bot memutuskan otomatis |
| Contoh | Intent request_human → eskalasi |
sentimen=frustrated + skor>80 → eskalasi |
| Kapan berguna | User tahu mereka butuh bantuan | User mungkin tidak tahu, tapi sinyal menunjukkan butuh bantuan |
Keduanya bisa memicu eskalasi. Intent-based bersifat eksplisit (user minta), rules-based bersifat implisit (sistem deteksi).
5. Guidance Rules — Pedoman Pengetahuan Bot
Halaman: Bot Config → Guidance Rules
Sistem ini mengatur pengetahuan faktual dan aturan perilaku yang diinjeksi ke prompt sistem AI.
Cara Kerja Guidance Rules
Berbeda dengan FAQ (yang merupakan jawaban UNTUK user), guidance rules adalah instruksi UNTUK bot. Rules ini diinjeksi ke system prompt, sehingga AI membacanya sebelum membuat setiap jawaban.
User bertanya
│
▼
AI menerima:
System prompt:
"Kamu adalah HalloUPH..." ← dari Chatbot Config
"Aturan yang harus diikuti:
- Biaya formulir: 50rb/750rb/400rb ← dari Guidance Rules
- JANGAN sebut Rp 500rb ← dari Guidance Rules
- Jawab semua pertanyaan satu-satu" ← dari Guidance Rules
│
▼
AI buat jawaban mengikuti aturan ini
Aturan yang Saat Ini Aktif
| Kategori | Aturan | Mengapa Ada |
|---|---|---|
| admission | "8 tahap pendaftaran: Prospect → Inquiry → Registered → Form Purchased → Submitted → Admitted → Committed → Matriculated" | Bot harus tahu urutan tahap yang benar |
| admission | "Biaya formulir: Keperawatan Rp 50.000, Kedokteran Rp 750.000, program lain Rp 400.000 — JANGAN PERNAH sebut Rp 500.000" | Mencegah bot menyebut harga yang SALAH. Website lama pernah menampilkan Rp 500.000. |
| admission | "Tes masuk hanya wajib untuk: Kedokteran, Keperawatan, Homeschool, Paket C. Lainnya: Direct Admission (tanpa tes)" | Kesalahpahaman umum — banyak user mengira semua program harus tes masuk |
| general | "Jika user kirim beberapa pertanyaan dalam satu pesan, JAWAB SEMUA pertanyaan satu per satu" | Tanpa aturan ini, AI cenderung hanya menjawab pertanyaan pertama |
| payment | "Metode pembayaran: BCA e-Payment kode 720015, BCA VA kode 75109, Mandiri ATM kode 10028" | Kode pembayaran harus tepat — bot tidak boleh menebak |
| payment | "Jenis beasiswa: Prestasi Akademik (3 semester SPP), Bantuan Keuangan (D3/S1 Farmasi), Olahraga" | Info beasiswa yang akurat |
Kapan Harus Menambah Guidance Rule
Tambahkan rule ketika:
- Bot memberikan informasi salah berulang kali — misal harga salah, deadline salah, prosedur salah
- Ada kesalahpahaman umum — misal "semua jurusan harus tes masuk" (salah)
- Kamu ingin memaksakan perilaku tertentu — misal "jawab semua pertanyaan, jangan skip"
- Data kritis yang harus tepat — misal kode pembayaran, nomor rekening bank
Panduan Memilih: FAQ atau Guidance Rule?
| Situasi | Pakai FAQ | Pakai Guidance Rule |
|---|---|---|
| User tanya "Berapa biaya formulir?" | ✅ Tulis jawaban sebagai FAQ | |
| Bot terus menyebut harga yang salah | ✅ Tambah rule: "JANGAN sebut Rp 500rb" | |
| User tanya jenis beasiswa | ✅ Daftar beasiswa di FAQ | |
| Bot hanya jawab 1 dari 3 pertanyaan | ✅ Tambah rule: "Jawab SEMUA pertanyaan" | |
| Pertanyaan umum tentang lokasi kampus | ✅ FAQ dengan alamat | |
| Bot harus selalu arahkan ke one.uph.edu | ✅ Tambah rule: "Selalu arahkan ke one.uph.edu" |
Aturan sederhana:
- FAQ = "Apa yang dijawab" — jawaban spesifik untuk user
- Guidance Rule = "Bagaimana menjawab" — aturan perilaku untuk bot, atau "Apa yang TIDAK boleh dikatakan" — guardrail
Sistem Prioritas
Setiap rule punya nomor prioritas (lebih tinggi = lebih penting). Saat ini:
- 95: Aturan perilaku umum (mempengaruhi semua jawaban)
- 90: Koreksi fakta kritis (harga salah, dll.)
- 85: Pengetahuan proses/prosedur
- 80: Data referensi (kode pembayaran, jenis beasiswa)
Tabel Ringkasan
| Sistem | Halaman | Mengontrol | User Lihat? | Seberapa Sering Diubah |
|---|---|---|---|---|
| Chatbot Config | Bot Config → Chatbot | Identitas bot, kriteria scoring, keyword sentimen | Tidak langsung (mempengaruhi gaya bahasa) | Jarang (diatur sekali) |
| Intents | Bot Config → Intents | Aturan klasifikasi pesan dan contoh kalimat | Tidak (routing internal) | Bulanan (tuning akurasi) |
| FAQ | Knowledge → FAQ | Pasangan pertanyaan-jawaban cepat | Ya (dikirim ke user) | Mingguan (tambah FAQ baru) |
| Escalation Rules | Bot Config → Escalation Rules | Kapan bot menyerahkan ke manusia | Tidak (logika internal) | Bulanan (tuning threshold) |
| Guidance Rules | Bot Config → Guidance Rules | Pengetahuan faktual dan guardrail perilaku AI | Tidak langsung (mempengaruhi akurasi) | Sesuai kebutuhan (saat bot buat kesalahan) |
Alur Kerja yang Direkomendasikan untuk Tuning Bot
Tuning bot adalah proses iteratif. Bot semakin baik seiring waktu saat kamu menambah FAQ, guidance rules, dan contoh intent.
Langkah-langkah:
- Pantau percakapan — lihat inbox percakapan, cari jawaban yang salah
- Cek klasifikasi intent — kalau intent yang terdeteksi salah, tambah contoh kalimat di halaman Intents
- Tambah FAQ — kalau user terus menanyakan pertanyaan yang sama, buat FAQ untuk jawaban instan
- Tambah Guidance Rule — kalau bot memberikan fakta yang salah, tambah aturan guardrail
- Sesuaikan Escalation Rules — kalau terlalu banyak/sedikit eskalasi, ubah threshold skor
- Review kriteria scoring — kalau lead dinilai salah, perbaiki deskripsi HOT/WARM/COLD di Chatbot Config
Contoh Skenario:
"Bot menjawab biaya formulir Rp 500.000 padahal seharusnya Rp 400.000"
- Cek FAQ → ada FAQ dengan harga benar? Kalau belum, tambahkan
- Cek Guidance Rules → tambahkan: "JANGAN sebut Rp 500.000, harga yang benar adalah Rp 400.000"
- Cek Knowledge Base → apakah ada dokumen lama dengan harga salah? Hapus atau update
"User yang sangat tertarik tidak mendapat perhatian counselor"
- Cek scoring criteria → apakah definisi HOT sudah tepat?
- Cek Escalation Rules → tambahkan rule: "Jika skor >= 80, kirim notifikasi ke counselor"
- Cek log → apakah skor lead memang rendah padahal seharusnya tinggi?
"Bot hanya menjawab 1 dari 3 pertanyaan yang dikirim bersamaan"
- Cek Guidance Rules → tambahkan: "Jika user kirim beberapa pertanyaan, JAWAB SEMUA satu per satu"
- Tidak perlu ubah FAQ atau Intent — ini masalah perilaku AI
Tambahan 2026-04: Bilingual + Quality Gate
Dua kapabilitas tambahan aktif di chatflow live (v3-observe) yang
dijelaskan di sini supaya admin paham perilaku bot yang mungkin
terlihat. Kontrol utamanya ada di file YAML chatflow Dify, bukan di
halaman admin seperti 5 sistem di atas.
6. Bilingual ID + EN (Phase A.6)
Chatflow punya dual-LLM per-path: setiap path bot (FAQ, Registration,
Multi-Q, Complaint, Off-topic) punya dua LLM node — satu dengan
prompt Bahasa Indonesia native, satu English native. Router bahasa
memilih salah satu berdasarkan user_language dari API.
Saat BILINGUAL_ENABLED=false (default): 100% traffic rute ke LLM
Bahasa → perilaku identik pre-April 2026. Saat
BILINGUAL_ENABLED=percent:N: N% percakapan di-deteksi bahasanya +
routing.
Yang bisa admin lakukan:
- Isi question_en + answer_en di halaman FAQ supaya
FAQ tersedia bilingual
- Request developer flip BILINGUAL_ENABLED saat UPH siap (lihat
docs/ops/bilingual/rollout-runbook.md)
Editing prompt LLM ID/EN butuh developer (YAML chatflow).
7. Quality Gate Observe Mode (Phase A.5)
Setiap jawaban bot dinilai LLM judge (Claude Haiku) berdasarkan apakah fakta jawaban grounded di retrieved context. Saat ini observe-only — judge mencatat keputusan ke Langfuse tapi tidak memblok.
Keputusan judge: - pass — jawaban grounded di KB - reject — klaim tampak tidak ter-ground (tidak memblok sekarang)
Yang bisa admin lakukan:
- Monitor pola reject di Langfuse (port 3300) → identifikasi:
- Pertanyaan yang bot sering mengarang → tambah KB/FAQ
- Topic overextrapolate → tambah guidance rule
- Request developer flip ke block mode saat UPH siap (lihat
docs/ops/phase-a5-observe-2026-04-23.md)
Untuk pengukuran mutu kuantitatif dari jawaban bot, gunakan Answer evaluation dengan golden questions.
Monitoring Judge Decisions (Analytics → Bot Health)
Halaman Analytics V2 → tab Bot Health sekarang menampilkan panel Quality Gate — Judge Decisions di paling atas. Panel ini memperlihatkan performance judge Claude Haiku yang mengevaluasi setiap jawaban bot di Dify chatflow.
Apa yang ditampilkan
- Pass rate — persentase jawaban bot yang dinilai "pass" oleh judge (hijau = bagus, merah muda = perlu review)
- Rejects by path — jumlah rejection per tipe jawaban: FAQ, Registration, Multi-Q, Complaint, Off-Topic
- Judged total — berapa banyak jawaban bot yang sudah di-evaluasi dalam window waktu yang dipilih
- Recent rejects (tabel) — 20 rejection terakhir dengan waktu, path, snippet pertanyaan user, dan alasan judge menolak jawaban bot
Cara membaca
- Pass rate > 90% — bot konsisten, tidak perlu aksi. Lanjut cek metric lain (intent confidence, default rate).
- Pass rate 70-90% — review recent rejects. Cari pola:
- Topik tertentu selalu reject? → update FAQ atau KB di topik itu
- Program tertentu sering dihallucinate? → tambah guidance rule atau koreksi KB sourcing
- Bahasa tertentu (ID vs EN) bermasalah? → review KB bilingual coverage
- Pass rate < 70% — eskalasi ke tim teknis. Kemungkinan:
- KB outdated — banyak info baru (biaya, jadwal) belum di-update
- Model drift — Claude Haiku berperilaku beda dari sebelumnya
- Judge prompt terlalu strict — butuh kalibrasi ulang corpus
Range waktu
Panel mengikuti range selector di atas tab (Today / 7d / 30d): - Today = 24 jam terakhir - 7d = 168 jam (1 minggu) - 30d = 720 jam (1 bulan)
Catatan penting
Saat ini Quality Gate berjalan di observe mode — router selalu teruskan jawaban ke user meski judge reject. Mode block (auto-escalate saat reject) akan di-enable setelah: 1. Data terkumpul cukup (≥50 conversations/bulan) 2. Corpus audit selesai (verify judge labels akurat) 3. Admin UI untuk override decision per-conversation tersedia 4. Stakeholder sign-off dari tim UPH
Sementara di observe mode, data rejection adalah sinyal untuk improvement KB/FAQ, bukan automatic escalation.