""" 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." )