import streamlit as st import google.generativeai as genai import os import time # Impor untuk jeda (opsional) # --- Konfigurasi Awal (Sama seperti kode Anda) --- try: # Ambil API Key dari Replit Secrets api_key = os.environ['GOOGLE_API_KEY'] genai.configure(api_key=api_key) except KeyError: st.error("Error: GOOGLE_API_KEY tidak ditemukan di Replit Secrets.") st.info("Pastikan Anda sudah menambahkan GOOGLE_API_KEY ke bagian Secrets di Replit.") st.stop() # Hentikan eksekusi jika API Key tidak ada # Inisialisasi model model_name = 'models/gemini-pro-latest' try: model = genai.GenerativeModel(model_name) except Exception as e: st.error(f"Terjadi kesalahan saat inisialisasi model: {e}") st.info("Pastikan nama model sudah benar.") st.stop() # -------------------------------------------------- # --- Pengaturan Streamlit --- st.title("🤖 Chatbot SKANBARA") st.caption("Didukung oleh Google Gemini & Streamlit") # Inisialisasi riwayat chat jika belum ada # st.session_state digunakan untuk menyimpan variabel antar interaksi if "messages" not in st.session_state: st.session_state.messages = [] st.session_state.messages.append({"role": "assistant", "content": "Halo! Ada yang bisa saya bantu?"}) # Tampilkan riwayat chat for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) # Input dari pengguna prompt_pengguna = st.chat_input("Ketik pesan Anda di sini...") if prompt_pengguna: # Tambahkan pesan pengguna ke riwayat chat dan tampilkan st.session_state.messages.append({"role": "user", "content": prompt_pengguna}) with st.chat_message("user"): st.markdown(prompt_pengguna) # Kirim prompt ke Gemini dan tampilkan respons with st.chat_message("assistant"): message_placeholder = st.empty() message_placeholder.markdown("Memproses...✍️") try: # Mengirim prompt ke model Gemini response = model.generate_content(prompt_pengguna) # Menampilkan respons if response.parts: full_response = response.text message_placeholder.markdown(full_response) # Tambahkan respons AI ke riwayat chat st.session_state.messages.append({"role": "assistant", "content": full_response}) else: message_placeholder.markdown("Maaf, saya tidak bisa memberikan respons saat ini.") st.session_state.messages.append({"role": "assistant", "content": "Maaf, saya tidak bisa memberikan respons saat ini."}) except Exception as e: st.error(f"Terjadi kesalahan saat mengirim prompt: {e}") message_placeholder.markdown(f"Terjadi kesalahan: {e}") st.session_state.messages.append({"role": "assistant", "content": f"Terjadi kesalahan: {e}"})