import streamlit as st from g4f.client import Client import sqlite3 import google.generativeai as genai # import pyttsx3 import pyperclip import os api_key = os.getenv("Gemini_api") st.set_page_config(page_title="DarkGPT", page_icon="๐Ÿค–", initial_sidebar_state="expanded" ) def local_css(file_name): with open(file_name) as f: st.markdown(f"", unsafe_allow_html=True) local_css("style.css") # Create a connection to the database conn = sqlite3.connect('chat_history.db') c = conn.cursor() # Create table if not exists try: c.execute('''CREATE TABLE IF NOT EXISTS chat_history (conversation_id INTEGER, role TEXT, content TEXT)''') conn.commit() except Exception as e: st.error(f"An error occurred: {e}") # Streamlit app def main(): try: if "chat_history" not in st.session_state: st.session_state.chat_history = [] if "conversation_id" not in st.session_state: st.session_state.conversation_id = 1 models = { "๐Ÿš€ Airoboros 70B": "airoboros-70b", "๐Ÿ‘‘ Gemini 1.0": "gemini-1.0-pro", "๐Ÿงจ Gemini 1.0 Pro ": "gemini-1.0-pro-001", "โšก Gemini 1.0 pro latest": "gemini-1.0-pro-latest", "๐Ÿ”ฎ Gemini Pro": "gemini-pro", } columns = st.columns(3) # Split the layout into three columns with columns[0]: st.header("DarkGPT") with columns[2]: selected_model_display_name = st.selectbox("Select Model", list(models.keys()), index=0) selected_model = models[selected_model_display_name] with columns[1]: pass # if st.button("summarize"): # st.switch_page('pages/summarize.py') # Sidebar (left side) - New chat button if st.sidebar.button("โœจ New Chat", key="new_chat_button"): st.session_state.chat_history.clear() st.session_state.conversation_id += 1 # Sidebar (left side) - Display saved chat st.sidebar.write("Chat History") c.execute("SELECT DISTINCT conversation_id FROM chat_history") conversations = c.fetchall() for conv_id in reversed(conversations): c.execute("SELECT content FROM chat_history WHERE conversation_id=? AND role='bot' LIMIT 1", (conv_id[0],)) first_bot_response = c.fetchone() if first_bot_response: if st.sidebar.button(" ".join(first_bot_response[0].split()[0:5])): display_conversation(conv_id[0]) # Sidebar (left side) - Clear Chat History button if st.sidebar.button("Clear Chat History โœ–๏ธ"): st.session_state.chat_history.clear() c.execute("DELETE FROM chat_history") conn.commit() # Main content area (center) st.markdown("---") user_input = st.chat_input("Ask Anything ...") if user_input: if selected_model == "airoboros-70b": try: client = Client() response = client.chat.completions.create( model=models[selected_model_display_name], messages=[{"role": "user", "content": user_input}], ) bot_response = response.choices[0].message.content st.session_state.chat_history.append({"role": "user", "content": user_input}) st.session_state.chat_history.append({"role": "bot", "content": bot_response}) # Store chat in the database for chat in st.session_state.chat_history: c.execute("INSERT INTO chat_history VALUES (?, ?, ?)", (st.session_state.conversation_id, chat["role"], chat["content"])) conn.commit() # Display chat history for index, chat in enumerate(st.session_state.chat_history): with st.chat_message(chat["role"]): if chat["role"] == "user": st.markdown(chat["content"]) elif chat["role"] == "bot": st.markdown(chat["content"]) except Exception as e: st.error(f"An error occurred: {e}") else: try: # GEMINI Replace with your Gemini Api key GOOGLE_API_KEY = api_key genai.configure(api_key=GOOGLE_API_KEY) model = genai.GenerativeModel(selected_model) prompt = user_input response = model.generate_content(prompt) bot_response = response.candidates[0].content.parts[0].text st.session_state.chat_history.append({"role": "user", "content": user_input}) st.session_state.chat_history.append({"role": "bot", "content": bot_response}) # Store chat in the database for chat in st.session_state.chat_history: c.execute("INSERT INTO chat_history VALUES (?, ?, ?)", (st.session_state.conversation_id, chat["role"], chat["content"])) conn.commit() for index, chat in enumerate(st.session_state.chat_history): with st.chat_message(chat["role"]): if chat["role"] == "user": st.markdown(chat["content"]) elif chat["role"] == "bot": st.markdown(chat["content"]) except Exception as e: st.error(f"An error occurred: {e}") except Exception as e: st.error(f"An error occurred: {e}") def display_conversation(conversation_id): c.execute("SELECT * FROM chat_history WHERE conversation_id=?", (conversation_id,)) chats = c.fetchall() st.markdown(f"### Conversation") for chat in chats: st.markdown(f"{chat[1]}") st.markdown(f"{chat[2]}") if __name__ == "__main__": main()