58 lines
2.1 KiB
Python
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."
|
|
)
|