Spaces:
Running
Running
File size: 8,793 Bytes
5759094 7cd4c4f 5759094 9270b84 7cd4c4f 2b27d13 7cd4c4f 2b27d13 7cd4c4f 5759094 2b27d13 5759094 ff18760 2b27d13 c35810d 7cd4c4f c35810d 5759094 ff18760 5759094 1340ba9 5759094 7cd4c4f 5759094 2b27d13 eff3649 2b27d13 7cd4c4f ff18760 5759094 2b27d13 5759094 2b27d13 5759094 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
import streamlit as st
import g4f
from g4f.client import Client
import sqlite3
import google.generativeai as genai
# import pyttsx3
import pyperclip
import requests
from PIL import Image
import io
API_URL = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0"
headers = {"Authorization": "Bearer Your_huggingface_Api_key"}
def local_css(file_name):
with open(file_name) as f:
st.markdown(f"<style>{f.read()}</style>", 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}")
def generate_image_from_model(prompt):
try:
response = requests.post(API_URL, headers=headers, json={"inputs": prompt})
image_bytes = response.content
image = Image.open(io.BytesIO(image_bytes))
return image
except Exception as e:
st.error(f"Error occurs:{e}")
def generate_image(prompt):
try:
response = requests.post(API_URL, headers=headers, json={"inputs": prompt})
image_bytes = response.content
image = Image.open(io.BytesIO(image_bytes))
return image
except Exception as e:
st.error(f"Error occurs:{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 Pro": "gemini-pro",
"📷 StabilityAI": "stabilityai/stable-diffusion-xl-base-1.0"
}
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)
with columns[1]:
selected_model = models[selected_model_display_name]
# 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 == "gemini-pro":
try:
if user_input.startswith("/image"):
prompt = user_input[len("/image"):].strip() # Extract prompt after "/image"
# Use Gemini Pro to generate content based on the prompt
GOOGLE_API_KEY = "AIzaSyC8_gwU5LSVQJk3iIXyj5xJ94ArNK11dXU"
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-1.0-pro')
response = model.generate_content(prompt)
bot_response = response.candidates[0].content.parts[0].text
# Generate image based on the generated text prompt
generated_image = generate_image(bot_response)
st.session_state.chat_history.append({"role": "user", "content": user_input})
st.session_state.chat_history.append({"role": "bot", "content": generated_image})
# Display the generated image
for index, chat in enumerate(st.session_state.chat_history):
with st.chat_message(chat["role"]):
if chat["role"] == "user":
st.markdown(user_input)
elif chat["role"] == "bot":
st.image(generated_image, width=400)
else:
GOOGLE_API_KEY = "your_Gemini_Api_key"
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-1.0-pro')
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}")
elif selected_model == "stabilityai/stable-diffusion-xl-base-1.0":
prompt = user_input
generated_image = generate_image_from_model(prompt)
for index, chat in enumerate(st.session_state.chat_history):
with st.chat_message(chat["role"]):
if chat["role"] == "user":
st.markdown(user_input)
elif chat["role"] == "bot":
st.image(generated_image, width=400)
else:
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}")
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()
|