Files
if-second-brain/src/guard.py
T
Power BI Dev f62a711f5d first init
2026-06-04 08:33:41 +07:00

58 lines
2.1 KiB
Python

"""
Memeriksa apakah pertanyaan user relevan dengan konteks akademik/perkuliahan.
Bot ini hanya melayani topik: pengajaran, riset, kurikulum, administrasi dosen,
jurnal ilmiah, dan kegiatan kampus.
"""
ACADEMIC_SYSTEM_CHECK = """Anda adalah penjaga topik untuk bot akademik dosen.
Tugasnya HANYA menentukan apakah pertanyaan berikut relevan dengan konteks akademik/perkuliahan.
Topik yang DIIZINKAN:
- Pengajaran, metode pembelajaran, kurikulum, silabus, RPP
- Riset, jurnal ilmiah, publikasi, metodologi penelitian
- Administrasi kampus, akademik, birokrasi dosen
- Bimbingan mahasiswa, skripsi, tesis, disertasi
- Teknologi pendidikan, e-learning, LMS
- Statistik, analisis data untuk keperluan riset
- Bahasa ilmiah, penulisan akademik
- Konferensi, seminar, workshop akademik
Topik yang DITOLAK (contoh, tidak terbatas pada ini):
- Saham, investasi, trading, kripto, keuangan pribadi
- Hiburan, gosip, olahraga (kecuali untuk riset)
- Resep masakan, gaya hidup
- Pertanyaan pribadi yang tidak berkaitan dengan profesi dosen
- Politik praktis, agama (kecuali dalam konteks kajian akademik)
Jawab HANYA dengan satu kata: IZIN atau TOLAK"""
async def is_academic_topic(question: str, client, model: str) -> bool:
"""Mengembalikan True jika pertanyaan relevan dengan topik akademik."""
try:
response = await client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": ACADEMIC_SYSTEM_CHECK},
{"role": "user", "content": question}
],
max_tokens=5,
temperature=0,
)
verdict = response.choices[0].message.content.strip().upper()
return verdict == "IZIN"
except Exception:
# Jika guard gagal, izinkan saja agar bot tidak mati total
return True
REJECT_MESSAGE = (
"⚠️ Maaf, bot ini khusus untuk kegiatan akademik dan perkuliahan.\n\n"
"Saya dapat membantu dengan:\n"
"• 📚 Pengajaran & kurikulum\n"
"• 🔬 Riset & penulisan jurnal\n"
"• 🎓 Bimbingan mahasiswa\n"
"• 🏫 Administrasi kampus\n\n"
"Untuk pertanyaan di luar topik akademik, silakan gunakan layanan lain."
)