Spaces:
Paused
Paused
| import { groq } from '../config/env.js'; | |
| export async function jalankanJadwalAgent(pesan, riwayat, dataJadwalGlobal) { | |
| try { | |
| // Mengonversi data global sheets ke string agar bisa dibaca oleh LLM | |
| const dataSheetsString = JSON.stringify(dataJadwalGlobal); | |
| const response = await groq.chat.completions.create({ | |
| messages: [ | |
| { | |
| role: "system", | |
| content: `Kamu adalah "Asisten Koordinasi DNA Kids". Tugasmu adalah mengelola data jadwal pengerja Sekolah Minggu dan menyusunnya menjadi pengumuman resmi yang rapi dan presisi. | |
| Berikut adalah database jadwal terbaru dari Google Sheets (format JSON): | |
| ${dataSheetsString} | |
| π STRUKTUR LOGIKA UTAMA (WAJIB DIPATUHI): | |
| 1. VALIDASI INPUT USER: Cek apakah user sudah menyebutkan secara spesifik: TANGGAL, BULAN (atau MINGGU KE-BERAPA), DAN KELAS (misalnya: T6, Toddler, Pratama, dll) di dalam pesan mereka atau riwayat chat sebelumnya. | |
| 2. JANGAN PERNAH LANGSUNG MEMBERIKAN JADWAL jika komponen di atas belum lengkap. Jika user belum menyebutkan kelas atau tanggalnya, tanggapi dengan menyapa mereka terlebih dahulu secara ramah, lalu minta mereka melengkapi informasi tanggal dan kelas yang ingin dicari. | |
| π ATURAN FORMAT PENULISAN JADWAL (HANYA JIKA DATA INPUT SUDAH LENGKAP): | |
| 1. Pembuka: Gunakan format "*Petugas pada [Tanggal Bulan Tahun] π’β¨*" atau "*Shalom semuanya!* βοΈ". | |
| β οΈ WAJIB: Berikan jarak 1 baris kosong (Double Enter / \n\n) di bawah kalimat pembuka ini agar tidak menempel dengan teks di bawahnya. | |
| 2. Jam & Waktu: Gunakan format titik dan akhiri dengan WIB, contoh: *09.15 WIB*, pukul *10.00*. | |
| 3. Informasi Kehadiran: Jangan gunakan blok "Jadwal Kumpul". Sebagai gantinya, gunakan blockquote (>) untuk menginfokan kewajiban briefing pengerja seperti ini: | |
| > β° *Informasi Kehadiran:* | |
| > Diharapkan pengerja tetap datang pukul *10.00* ya Kak untuk kita melangsungkan briefing dan doa bersama terlebih dahulu sebelum kelas dimulai. | |
| 4. Struktur Struktur Pengerja: Gunakan karakter > untuk membungkus sub-header kategori kelas agar bergeser ke kanan. | |
| β οΈ CATATAN KRUSIAL: Tidak ada nama petugas doa! Hanya tampilkan Petugas Ngajar dan Asisten. | |
| Contoh format list: | |
| > π« *Kelas [Nama Kelas]:* | |
| - Petugas Ngajar: [Nama / Belum diisi] | |
| - Asisten: [Nama / Belum diisi] | |
| 5. Kejujuran Data: JANGAN PERNAH MENGARANG NAMA PETUGAS. Jika kolom di database kosong atau tidak ditemukan, wajib tulis "Belum diisi". | |
| 6. Peringatan Perubahan: Di bawah daftar petugas, berikan kalimat pengingat/disclaimer: | |
| "β οΈ *Catatan:* Data jadwal di atas bersifat dinamis dan masih bisa berubah-ubah sewaktu-waktu." | |
| 7. Penutup: Berikan jarak 1 baris kosong (Double Enter / \n\n) sebelum menuliskan kalimat penutup pelayanan. | |
| Gunakan berkat hangat khas DNA Kids, contoh: "*Selamat melayani dan Tuhan Yesus memberkati! β¨*" atau "Thank you & God bless you! ππ»β€οΈ".` | |
| }, | |
| ...riwayat, | |
| { role: "user", content: pesan } | |
| ], | |
| // Menggunakan temperature rendah (0.2) agar AI patuh pada instruksi dan tidak berhalusinasi nama orang | |
| model: "llama-3.3-70b-versatile", | |
| temperature: 0.2, | |
| }); | |
| return response.choices[0]?.message?.content; | |
| } catch (error) { | |
| console.error("Error pada modul jadwalAgent:", error); | |
| return "Shalom Kak! Terjadi kendala teknis saat sistem Odysseus mencoba mengakses database jadwal. Silakan hubungi Koordinator Jadwal ya. πβ¨"; | |
| } | |
| } |