Asisten AI Pintar untuk Informasi Akademik Politeknik Negeri Jember
JEMPOL adalah chatbot AI yang dikembangkan untuk Pusat Informasi dan Pelayanan Terpadu (PINTU) Politeknik Negeri Jember. Chatbot ini dirancang untuk menyediakan informasi akurat tentang layanan akademik, profil dosen, prosedur administrasi, dan informasi kampus lainnya melalui antarmuka percakapan yang interaktif.
- 💬 Antarmuka Percakapan Interaktif - Pengalaman chat yang mulus dengan dukungan markdown dan fitur UI/UX modern
- 🧠 AI Cerdas - Memanfaatkan model LLM canggih (Groq dan Google Generative AI) untuk pemahaman bahasa alami
- 🔍 Pencarian Berbasis Vektor - Retrieving informasi yang relevan dengan menggunakan Pinecone sebagai vector database
- 📚 Basis Pengetahuan Komprehensif - Informasi dari website POLIJE, data dosen, dan dokumen akademik
- 🌐 Web Scraping Otomatis - Sistem terjadwal untuk menjaga informasi tetap up-to-date
- 💡 Saran Pertanyaan Lanjutan - Menghasilkan saran pertanyaan yang relevan untuk membantu pengguna
- 🔒 Filter Konten - Memfilter kata-kata tidak pantas untuk menjaga interaksi tetap profesional
- 🌓 Mode Gelap/Terang - Dukungan tema untuk kenyamanan visual
- 📱 Responsif - Tampilan yang bekerja dengan baik di perangkat seluler dan desktop
- Framework: Next.js dengan TypeScript
- Styling: Tailwind CSS dan Radix UI
- LLM Integration: LangChain
- Vector Database: Pinecone
- AI Models: Google Generative AI (Gemini) dan Groq
- Database: MongoDB untuk menyimpan pertanyaan pengguna
- Web Scraping: Puppeteer
- Scheduling: Node-cron
- Node.js (v18 atau lebih baru)
- npm atau yarn
- Akun Pinecone
- Akun Google AI Studio (untuk API key Gemini)
- Akun Groq (untuk API key Groq)
- Akun MongoDB (opsional, untuk menyimpan pertanyaan)
- Clone repositori:
git clone https://github.com/SideeID/chatbot-poliyey.git
cd chatbot-poltek-v2
- Instal dependensi:
npm install
# atau
yarn install
- Buat file
.env
berdasarkan contoh di.env.example
:
GOOGLE_API_KEY=your_google_gemini_api_key
GROQ_API_KEY=your_groq_api_key
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_INDEX_NAME=your_pinecone_index_name
MONGODB_URI=your_mongodb_connection_string
INDEX_INIT_TIMEOUT=24000
SCRAPING_API_KEY=your_scraping_api_key
- Siapkan data vektor:
# Untuk memproses dokumen PDF
npm run prepare:data
# Untuk web scraping dan pemrosesan data web
npm run prepare:web
Jalankan server pengembangan:
npm run dev
# atau
yarn dev
Buka http://localhost:3000 untuk melihat aplikasi di browser.
Build aplikasi untuk produksi:
npm run build
# atau
yarn build
Jalankan build produksi:
npm start
# atau
yarn start
chatbot-poltek-v2/
├── docs/ # Dokumen PDF dan teks untuk vector store
├── dosen/ # Data dosen dalam format JSON
├── public/ # Aset statis
├── scraped_docs/ # Hasil web scraping
├── src/
│ ├── app/ # App router pages dan API routes
│ ├── components/ # Komponen React
│ │ ├── ui/ # Komponen UI dasar
│ │ └── ... # Komponen khusus aplikasi
│ ├── hooks/ # React hooks
│ ├── lib/ # Utilitas dan integrasi
│ ├── models/ # Schema MongoDB
│ ├── scripts/ # Skrip utilitas
│ └── services/ # Layanan backend
# Jalankan scraping web secara manual
npm run scrape:web
GET/POST /api/chat
- Endpoint untuk interaksi chatGET/POST /api/questions
- Endpoint untuk manajemen pertanyaanPOST /api/scrape
- Endpoint untuk memicu scraping web manual
- Tambahkan file JSON baru di direktori
/dosen
dengan format yang sesuai - Perbarui vector store dengan menjalankan
npm run prepare:data
- Edit file
src/lib/web-loader.ts
dan tambahkan URL baru ke arrayurls
- Jalankan scraping web dengan
npm run scrape:web
- Dimas Fajar - Developer Utama
Proyek ini dilisensikan di bawah Lisensi MIT - lihat file LICENSE untuk detailnya.
Untuk pertanyaan atau dukungan, silakan hubungi:
- Instagram: Side ID
- Website: https://www.side.my.id/