Bot_v1.0 / agents /jadwalAgent.js
JustJoin's picture
Upload 9 files
d85b9cd verified
Raw
History Blame Contribute Delete
2.33 kB
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
/**
* Menganalisis data CSV untuk menjawab pertanyaan seputar jadwal
* @param {string} pesanUser - Pertanyaan dari guru
* @param {string} dataJadwalCSV - Data mentah string CSV dari Google Sheets
* @param {Array} riwayat - Riwayat obrolan dari index.js (Bawaan Kosong jika chat baru)
* @returns {Promise<string>} - Jawaban rapi hasil analisa Gemini
*/
export async function jalankanJadwalAgent(pesanUser, dataJadwalCSV, riwayat = []) {
const promptSistem = `
Kamu adalah asisten admin Sekolah Minggu DNA Kids yang cerdas, ramah, dan sangat teliti.
Tugasmu adalah menjawab pertanyaan user berdasarkan DATA MENTAH CSV dari Google Sheets berikut ini:
========== DATA JADWAL CSV ==========
${dataJadwalCSV}
=====================================
ATURAN UTAMA:
1. Jawablah secara singkat, padat, informatif, dan gunakan emoji Kristen/anak-anak yang ramah (seperti ✨, 🌟, πŸ™, πŸ“–).
2. Jika data yang dicari user tidak ada di dalam CSV, katakan dengan jujur dan sopan bahwa jadwal belum tertera.
3. Selalu asumsikan format tanggal pada CSV adalah HARI, TANGGAL-BULAN-TAHUN.
4. Jangan berhalusinasi atau mengada-ada nama atau tanggal yang tidak tertera di data CSV.
`;
// 🟒 MENGUBAH ARRAY RIWAYAT MENJADI BLOK TEKS KONTEKS
const konteksRiwayat = riwayat.length > 0
? `--- RIWAYAT PERCAKAPAN SEBELUMNYA (Gunakan sebagai konteks jika user menggunakan kata ganti seperti "kalau minggu depannya lagi?") ---\n` +
riwayat.map(h => `${h.role === 'user' ? 'User' : 'Asisten'}: ${h.content}`).join('\n') +
'\n=====================================\n'
: '';
try {
// 🟒 Menyisipkan konteksRiwayat di tengah sistem jaringan prompt
const hasil = await model.generateContent([promptSistem, konteksRiwayat, pesanUser]);
return hasil.response.text();
} catch (error) {
console.error("❌ Eror pada Jadwal Agent:", error);
return "Maaf ya, Kak, sistem kami sedang mengalami kendala saat membaca jadwal. Mohon hubungi koordinator. πŸ™";
}
}