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}"})