Berakar pada Pengetahuan, Tumbuh Bersama Keberlanjutan.
Asisten cerdas berbasis AI yang mengubah informasi tani, iklim, dan alam yang rumit menjadi jawaban yang konkret, kontekstual, dan langsung bisa dipraktikkan.
- Ringkasan
- Latar Belakang dan Masalah
- Solusi dan Keunikan
- Filosofi Nama
- Pengguna dan Cakupan Topik
- Fitur
- Arsitektur dan Alur Kerja
- Desain System Prompt
- Konfigurasi dan Parameter
- Contoh Percakapan
- Struktur Proyek
- Identitas Visual
- Keterbatasan dan Penggunaan yang Bertanggung Jawab
- Pemenuhan Ketentuan Tugas
- Arah Pengembangan
JATI.AI (Jaringan Asisten Tani dan Iklim) adalah chatbot berbasis kecerdasan buatan yang dikembangkan untuk menjembatani kesenjangan antara informasi tentang pertanian, perubahan iklim, dan keberlanjutan lingkungan dengan kebutuhan nyata masyarakat sehari-hari.
Pengguna cukup bertanya dengan bahasa sehari-hari. JATI.AI menghubungkan pertanyaan itu dengan konteks tani, iklim, dan alam, lalu menjawab dalam bahasa Indonesia yang sederhana, disertai langkah yang bisa langsung dikerjakan.
JATI.AI tersedia dalam dua antarmuka yang memakai satu inti logika yang sama (jati_core.py):
| Antarmuka | Perintah | Keterangan |
|---|---|---|
| Web (Streamlit) | streamlit run app.py |
Tampilan visual lengkap dengan pengaturan, riwayat, dan statistik |
| Console | python chatbot_console.py |
Versi terminal dengan perintah khusus |
Informasi tentang budidaya tanaman, perubahan iklim, dan pengelolaan lingkungan sebenarnya melimpah. Namun informasi itu:
- tersebar di berbagai sumber, seperti jurnal, laporan pemerintah, dan artikel;
- menggunakan istilah teknis yang sulit dipahami oleh orang di luar bidangnya;
- sulit diterjemahkan menjadi tindakan yang relevan dengan kondisi lahan dan kebutuhan pengguna.
Petani yang sedang menghadapi masalah di lahan membutuhkan jawaban yang spesifik, singkat, dan bisa dikerjakan hari itu juga, bukan definisi umum atau ringkasan akademik.
JATI.AI diposisikan sebagai asisten pengetahuan yang berorientasi pada kebutuhan pengguna, bukan sekadar chatbot yang memberikan definisi atau jawaban umum.
Pendekatan jawaban. JATI.AI tidak berhenti pada "apa yang terjadi?", tetapi membantu pengguna memahami:
Mengapa hal itu terjadi β Apa dampaknya β Apa yang dapat dilakukan
Keunggulan utama:
- Bahasa sehari-hari. Pengguna tidak perlu latar belakang akademik di bidang pertanian atau lingkungan. Istilah teknis selalu diberi penjelasan singkat.
- Konkret dan kontekstual. Jawaban berisi takaran, waktu, alat, atau urutan kerja, dengan konteks Indonesia: komoditas lokal, musim hujan dan kemarau, BMKG, BPP, dan kelompok tani.
- Jawab dulu, tanya kemudian. Saat pertanyaan kurang jelas, JATI.AI memberi jawaban umum yang berguna lebih dulu, lalu menutup dengan maksimal 1-2 pertanyaan singkat untuk memperdalam.
- Penghubung pengetahuan dan keputusan. AI diposisikan sebagai jembatan antara pengetahuan dan pengambilan keputusan, bukan sekadar penghasil teks.
- Demokratisasi pengetahuan keberlanjutan. Antarmuka percakapan yang sederhana membuka akses informasi lingkungan bagi siapa saja.
- Jujur akan batasnya. JATI.AI tidak memiliki data cuaca real-time, harga pasar terkini, atau citra satelit, sehingga pengguna diarahkan ke BMKG, Dinas Pertanian, atau penyuluh setempat. JATI.AI juga tidak mengarang angka, peraturan, atau hasil penelitian.
- Mengutamakan keselamatan. Setiap pembahasan pestisida, herbisida, dan pupuk kimia disertai pengingat alat pelindung diri, dosis sesuai label, dan masa tunggu sebelum panen. Solusi terpadu (pencegahan, musuh alami, rotasi tanaman) diutamakan lebih dulu.
Pohon jati berakar kuat, mampu bertahan dalam berbagai kondisi lingkungan, tumbuh perlahan, dan bernilai jangka panjang. JATI.AI diharapkan menjadi teknologi yang berakar pada kebutuhan masyarakat, tangguh menghadapi tantangan perubahan iklim, dan memberi manfaat jangka panjang.
| Bagian Pohon | Makna dalam JATI.AI |
|---|---|
| π± Akar | Pengetahuan, yaitu fondasi informasi yang menjadi dasar setiap jawaban |
| πͺ΅ Batang | Teknologi AI, yaitu penyalur yang menghubungkan pengetahuan ke pengguna |
| πΏ Cabang | Persoalan tani, iklim, alam, dan keberlanjutan yang dapat dijelajahi pengguna |
Logo JATI.AI mengikuti filosofi yang sama: huruf "J" yang membentuk batang dan akar pohon, dengan sehelai daun di ujung atas.
Pengguna
- Primer: petani, penyuluh, dan pelaku sektor agrikultur di Indonesia.
- Sekunder: masyarakat umum yang ingin memahami isu iklim, konservasi alam, penggunaan sumber daya, dan gaya hidup berkelanjutan.
Cakupan topik
| Kategori | Cakupan pembahasan |
|---|---|
| πΎ Tani | budidaya tanaman, pemilihan varietas, pengolahan tanah, pemupukan, hama dan penyakit, irigasi, pasca panen, pertanian organik/regeneratif, hitungan biaya sederhana |
| π¦οΈ Iklim | musim hujan dan kemarau, El Nino/La Nina, kalender tanam, adaptasi cuaca ekstrem, kekeringan, banjir, emisi gas rumah kaca dari pertanian |
| πΏ Alam | keberlanjutan lingkungan, kesehatan tanah, air, keanekaragaman hayati, agroforestri, pengelolaan sampah organik, konservasi, restorasi lahan |
Pertanyaan di luar ketiga ranah tersebut (misalnya tugas kuliah umum, gosip, atau coding) ditolak dengan sopan dalam satu kalimat, lalu JATI.AI menawarkan bantuan yang masih di ranahnya.
Inti
- Percakapan berbahasa Indonesia dengan system prompt khusus tema tani, iklim, dan alam
- Pengelolaan riwayat percakapan (conversation history) dengan pemangkasan otomatis untuk menghemat token
- Penanganan error yang menerjemahkan masalah teknis menjadi pesan ramah, tanpa membuat aplikasi crash
Tambahan
- Streaming response. Jawaban muncul bertahap seperti diketik langsung (
stream_jawaban()). - Tiga pilihan model Groq yang bisa dipilih dari sidebar web.
- Antarmuka web dengan sidebar topik, contoh pertanyaan, dan identitas visual sendiri.
- Simpan dan muat riwayat dalam format JSON, serta unduh percakapan langsung dari browser.
- Statistik percakapan: jumlah pertanyaan dan jawaban, jumlah kata, panjang rata-rata jawaban, dan topik dominan.
- Kontrol parameter: pilihan model, temperature, dan panjang jawaban maksimal.
- 7 perintah khusus pada versi console.
statistik() mengembalikan pertanyaan, jawaban, kata_ditulis_pengguna, kata_dijawab_jati, rata_rata_panjang_jawaban, skor_topik, dan topik_utama. Topik dominan dihitung dengan pencocokan kata kunci pada pertanyaan pengguna untuk kategori Tani, Iklim, dan Alam, sehingga sifatnya perkiraan sederhana, bukan klasifikasi model.
JATI.AI didefinisikan lewat SYSTEM_PROMPT dan terdiri atas lima bagian:
| Bagian | Isi |
|---|---|
| Identitas | JATI.AI, asisten digital berbahasa Indonesia dengan tagline "Teman Cerdas untuk Tani, Iklim, dan Alam" |
| Pengguna | petani, penyuluh, dan pelaku agrikultur (primer); masyarakat umum (sekunder) |
| Topik | Tani, Iklim, dan Alam, dengan subtopik seperti pada bagian 5 |
| Gaya menjawab | bahasa sederhana dan ramah; istilah teknis dijelaskan dalam kurung; 2-5 paragraf pendek atau poin bernomor untuk langkah; selalu ada langkah konkret; konteks Indonesia; maksimal satu emoji per jawaban; ditutup dengan satu saran lanjutan bila relevan |
| Batasan | tanpa data real-time (cuaca, harga, citra satelit); tidak mengarang statistik, peraturan, atau hasil penelitian; keselamatan penggunaan pestisida dan pupuk kimia; tidak menyarankan bahan aktif terlarang; menolak topik di luar ranah; selalu mengaku sebagai JATI.AI |
Nilai bawaan (di bagian atas jati_core.py):
| Parameter | Nilai | Keterangan |
|---|---|---|
MODEL_DEFAULT |
openai/gpt-oss-120b |
model utama |
TEMPERATURE_DEFAULT |
0.6 |
cukup luwes, tetapi tetap konsisten untuk informasi teknis |
MAX_TOKENS_DEFAULT |
1200 |
batas panjang jawaban |
MAX_PESAN_KONTEKS |
12 |
jumlah pesan terakhir yang dikirim ulang ke API (sekitar 6 putaran tanya-jawab) |
FOLDER_RIWAYAT |
riwayat/ |
lokasi penyimpanan percakapan |
Model yang tersedia (dapat dipilih di sidebar versi web):
| Model | Karakter |
|---|---|
openai/gpt-oss-120b |
paling pintar (bawaan) |
openai/gpt-oss-20b |
lebih ringan dan cepat |
llama-3.3-70b-versatile |
alternatif |
Kontrol di antarmuka web: temperature 0.0-1.2 (nilai kecil lebih konsisten, nilai besar lebih kreatif) dan panjang jawaban maksimal 400-2000 token.
Daftar model Groq terbaru tersedia di https://console.groq.com/docs/models. Jika model tidak lagi tersedia, JATI.AI akan menampilkan petunjuk untuk menggantinya.
- Python 3.9+ (disarankan 3.11)
- Visual Studio Code atau editor lain
- API key Groq (gratis) dari https://console.groq.com/keys
Dependensi utama (sudah tercantum di requirements.txt): groq, python-dotenv, dan streamlit versi 1.39 atau lebih baru.
Buka folder proyek di VS Code lewat File β Open Folder β jati-ai, lalu buka terminal lewat Terminal β New Terminal.
# Windows
python -m venv .venv
.venv\Scripts\activate
# macOS / Linux
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtSalin .env.example menjadi .env, lalu isi tanpa tanda kutip dan tanpa spasi:
GROQ_API_KEY=gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAPI key tidak pernah ditulis di dalam kode. File
.envsudah terdaftar di.gitignore, jadi tidak ikut terunggah ke GitHub.
Jalankan perintah dari folder utama proyek, karena folder
riwayat/dibuat relatif terhadap lokasi Anda menjalankan program.
Versi web (Streamlit)
streamlit run app.pyBrowser akan terbuka otomatis di http://localhost:8501. Jika tidak, salin alamat yang muncul di terminal.
Versi console
python chatbot_console.py| Perintah | Fungsi |
|---|---|
/keluar atau /exit |
keluar dari chatbot (riwayat otomatis disimpan) |
/baru atau /clear |
hapus riwayat dan mulai percakapan baru |
/simpan |
simpan percakapan ke riwayat/*.json |
/muat |
pilih dan lanjutkan percakapan lama |
/statistik |
ringkasan jumlah pesan dan topik yang paling sering dibahas |
/suhu 0.8 |
ubah temperature (0.0 = konsisten, 1.5 = kreatif) |
/bantuan |
tampilkan daftar perintah |
Anda > Padi saya menguning di ujung daun, apa penyebabnya?
JATI > Daun padi yang menguning mulai dari ujung biasanya menandakan tiga hal
yang paling sering terjadi di lapangan:
1. Kekurangan nitrogen ...
2. Keracunan besi pada sawah yang tergenang terus ...
3. Serangan penyakit hawar daun bakteri ...
Supaya lebih tepat, boleh tahu tanaman padinya sudah umur berapa minggu,
dan apakah sawahnya tergenang terus atau sempat dikeringkan?
jati-ai/
βββ jati_core.py # OTAK: seluruh logika inti chatbot
βββ chatbot_console.py # Antarmuka 1: versi terminal
βββ app.py # Antarmuka 2: versi web (Streamlit)
βββ requirements.txt # daftar library
βββ .env # API key (rahasia, tidak diunggah)
βββ .env.example # contoh isi .env untuk orang lain
βββ .gitignore # menjaga .env agar tidak ikut ter-push
βββ .streamlit/
β βββ config.toml # tema terang Streamlit sesuai identitas JATI
βββ assets/
β βββ logo.svg # logo huruf "J" berbentuk batang dan akar + daun
β βββ logo_light.svg # versi terang untuk latar hijau tua
β βββ logo.png # favicon dan avatar chatbot
βββ riwayat/ # berkas JSON percakapan (dibuat otomatis saat menyimpan)
Palet warna didefinisikan di WARNA pada jati_core.py dan dipakai bersama oleh app.py dan console.
| Warna | Hex | Penggunaan |
|---|---|---|
| Forest Green | #173F2F |
identitas utama, sidebar, bubble pengguna |
| Leaf Green | #6F8F5F |
elemen sekunder, hover, fokus input |
| Sage Light | #DCE8D4 |
teks pendukung di atas hijau tua, aksen lembut |
| Warm Ivory | #F6F4EC |
latar utama |
| Climate Teal | #2F6F73 |
tagline, elemen iklim dan data |
| Earth Accent | #D98E5B |
peringatan ringan |
| Dark Text | #22332B |
teks utama |
| White | #FFFFFF |
kartu, input, bubble jawaban JATI, teks di atas hijau tua |
Tipografi: Segoe UI (cadangan: Helvetica Neue dan Arial).
Logo: huruf "J" yang membentuk batang dan akar pohon dengan sehelai daun di ujung atas, menyatukan nama JATI dan filosofi pohon jati dalam satu simbol.
- JATI.AI tidak terhubung ke data cuaca, harga pasar, atau citra satelit secara real-time.
- Jawaban dapat keliru. Untuk keputusan penting di lahan, tetap pertimbangkan kondisi lokal dan konsultasikan dengan penyuluh pertanian setempat atau sumber resmi seperti BMKG.
- Konteks percakapan dipangkas otomatis: hanya 12 pesan terakhir (sekitar 6 putaran tanya-jawab) yang dikirim ke model, sehingga hal yang dibahas jauh di awal percakapan bisa terlupa.
- Panduan penggunaan pestisida dan pupuk kimia bersifat umum. Selalu ikuti label produk dan anjuran keselamatan.
- Deteksi topik pada statistik berbasis kata kunci, sehingga hanya perkiraan kasar.
- Ketersediaan model bergantung pada Groq. Model dapat dihentikan sewaktu-waktu dan perlu diganti.
| Ketentuan | Status | Keterangan |
|---|---|---|
| Berjalan di console/terminal | chatbot_console.py |
|
| Menggunakan API LLM (bukan model lokal) | Groq API, model bawaan openai/gpt-oss-120b |
|
| Punya system prompt sesuai tema | SYSTEM_PROMPT di jati_core.py |
|
| Mengelola conversation history | list messages, reset_history(), dan potong_history() |
|
| Penanganan error | JatiError, _pesan_error(), dan pembuangan pertanyaan terakhir saat gagal |
|
| Minimal 2 perintah khusus | 7 perintah (/keluar, /baru, /simpan, /muat, /statistik, /suhu, /bantuan) |
|
| Bonus: tampilan web | Streamlit (app.py) |
|
| Bonus: streaming response | stream_jawaban(), dipakai di console dan web |
|
| Bonus: simpan dan muat riwayat | JSON di folder riwayat/ |
|
| Bonus: statistik percakapan | statistik() |
|
| Bonus: kontrol parameter | temperature, panjang jawaban, dan tiga pilihan model | |
| API key tidak ada di dalam kode | .env dan .gitignore |
Gagasan pengembangan berikutnya, sejalan dengan keterbatasan yang sudah diidentifikasi:
- Integrasi data cuaca dan peringatan dini dari sumber resmi (misalnya BMKG)
- Dukungan tanya-jawab berbasis foto tanaman untuk membantu identifikasi hama dan penyakit
- Penyesuaian jawaban berdasarkan lokasi dan jenis lahan pengguna
- Deteksi topik yang lebih akurat pada statistik percakapan
- Basis pengetahuan terkurasi dari sumber terpercaya agar jawaban lebih terverifikasi
JATI.AI β Berakar pada Pengetahuan, Tumbuh Bersama Keberlanjutan. π±
Dibuat untuk tugas mata kuliah Sains Data Terapan.