⚠️ STATUS PROYEK: ON-GOING PROTOTYPE⚠️ Proyek ini masih dalam tahap pengembangan aktif (On-Going) dan berstatus purwarupa (prototype). Beberapa fitur (seperti pemrosesan pesan suara / Voice Notes) mungkin masih dalam tahap integrasi, dan pembaruan arsitektur serta data masih terus dilakukan untuk mencapai versi yang lebih stabil.
Apotek AI adalah Chatbot Telegram berbasis Kecerdasan Buatan (AI) yang dirancang untuk memberikan informasi dan rekomendasi obat menggunakan metode RAG (Retrieval-Augmented Generation). Bot ini didukung oleh vector database dan model bahasa ukuran besar (LLM) untuk memahami keluhan pengguna dan mencari solusi yang relevan dari 50.000+ data obat.
| Fitur | Status | Deskripsi |
|---|---|---|
| 💬 Natural Text Chat | ✅ Selesai | Pengguna dapat mengetik keluhan dengan bahasa sehari-hari. |
| 🔍 Semantic Search (RAG) | ✅ Selesai | Mencari obat paling relevan dari database lokal (50K+ data). |
| 🤖 AI Response (Gemini) | ✅ Selesai | Menghasilkan respons yang ramah, informatif, dan mudah dipahami. |
| 🇮🇩 Bahasa Indonesia | ✅ Selesai | Interaksi sepenuhnya menggunakan Bahasa Indonesia. |
| 🎤 Voice Note Processing | 🚧 On-Going | Konversi pesan suara Telegram (OGG) ke Teks menggunakan Speech-to-Text. |
| 📊 Analytics Dashboard | 📅 Terjadwal | Dashboard untuk memantau metrik penggunaan bot dan query populer. |
Sistem ini menggabungkan Telegram Bot API dengan RAG engine:
- User Input: Pengguna mengirim pesan teks keluhan via Telegram.
- Retrieval (ChromaDB): Sistem mengubah teks menjadi vektor (embedding) dan mencari data obat yang paling relevan dari dataset (dimuat ke dalam memori ChromaDB).
- Generation (Gemini AI): Konteks obat yang ditemukan digabungkan dengan keluhan pengguna (lewat Prompting) dan diserahkan ke Gemini AI.
- Response: Gemini AI meracik jawaban berdasar data obat yang akurat untuk kemudian dikirim kembali ke pengguna Telegram.
apotek/
│
├── src/ # Source code utama
│ ├── core/ # Konfigurasi, variabel environment, dan template prompt
│ ├── services/ # Business logic (RAG engine & Voice processing)
│ └── bot/ # Layer Telegram Bot (Command & Message Handlers)
│
├── data/ # Direktori penyimpanan data
│ └── medicine_dataset.csv # Database obat mentah (50K+ baris)
│
├── docs/ # Dokumentasi tambahan
├── tests/ # Modul pengujian otomatis (Testing)
├── chroma_db/ # Vector store lokal (Otomatis dibuat saat run pertama)
│
├── main.py # Entry point aplikasi bot (Jalankan file ini)
├── requirements.txt # Dependensi pustaka Python
├── .env.example # Template file environment
└── README.md # Dokumentasi ini
| Komponen | Teknologi yang Digunakan |
|---|---|
| LLM (Language Model) | Google Gemini 2.0 Flash |
| Embeddings | paraphrase-multilingual-MiniLM-L12-v2 (Sentence-Transformers) |
| Vector Database | ChromaDB (Local Storage) |
| Bot Framework | python-telegram-bot (v20+) |
| Data Processing | Pandas |
Karena proyek ini masih berbentuk purwarupa, jalankan instalasi secara manual di lokal komputer atau server Anda.
Pastikan Anda sudah menginstal Python 3.10+.
# Clone repository ini (jika ada di Git) atau masuk ke direktori proyek lokal
cd apotek
# (Opsional) Buat virtual environment agar dependensi tidak bentrok
python -m venv venv
source venv/Scripts/activate # Untuk Windows
# source venv/bin/activate # Untuk Linux/Mac
# Install semua dependensi yang diperlukan
pip install -r requirements.txtGandakan file .env.example menjadi .env:
copy .env.example .env # Windows
# cp .env.example .env # Linux/MacEdit file .env dan masukkan kredensial berikut:
TELEGRAM_BOT_TOKEN: Dapatkan dari @BotFather di Telegram.GEMINI_API_KEY: Dapatkan dari Google AI Studio.
(Opsional) Hanya untuk pengembangan fitur Voice: Instal FFmpeg di komputer Anda (ffmpeg.org).
Jalankan file utama untuk memulai aplikasi:
python main.py💡 Catatan Penting (First Run): Saat bot pertama kali dijalankan, sistem akan membaca file
medicine_dataset.csvdan membuat index (embedding) ke dalam ChromaDB. Proses ini mungkin memakan waktu 2-5 menit (tergantung spesifikasi komputer). Pada proses eksekusi berikutnya (ketika bot direstart), bot akan langsung siap dalam hitungan detik.
- Buka aplikasi Telegram.
- Cari bot Anda yang sesuai dengan Token dari BotFather.
- Kirim perintah
/startuntuk melihat pesan sapaan bot. - Ketik keluhan (misalnya:
"Kepala saya pusing dari kemarin dan hidung tersumbat, obat apa yang cocok?") lalu bot akan merespons.
Sebagai proyek yang masih On-Going, berikut adalah fokus pengembangan selanjutnya:
- Menyelesaikan integrasi komplit
voice_service.pyuntuk menerima Voice Notes Telegram otomatis. - Meningkatkan performa fetching data LLM agar latency lebih rendah.
- Menyediakan fallback response bila API Gemini mengalami limit atau timeout.
- Penambahan unit test dan integration test menyeluruh di folder
tests/.
Dibuat untuk keperluan prototipe dan pembelajaran.