Spaces:
Runtime error
Runtime error
import streamlit as st | |
import google.generativeai as genai | |
import sqlite3 | |
from streamlit import file_uploader | |
# Database setup | |
conn = sqlite3.connect('chat_history.db') | |
c = conn.cursor() | |
c.execute(''' | |
CREATE TABLE IF NOT EXISTS history | |
(role TEXT, message TEXT) | |
''') | |
# Generative AI setup | |
api_key = "AIzaSyC70u1sN87IkoxOoIj4XCAPw97ae2LZwNM" | |
genai.configure(api_key=api_key) | |
generation_config = { | |
"temperature": 0.9, | |
"max_output_tokens": 3000 | |
} | |
safety_settings = [] | |
# Streamlit UI | |
st.title("Chatbot") | |
chat_history = st.session_state.get("chat_history", []) | |
if len(chat_history) % 2 == 0: | |
role = "user" | |
else: | |
role = "model" | |
for message in chat_history: | |
r, t = message["role"], message["parts"][0]["text"] | |
st.markdown(f"**{r.title()}:** {t}") | |
# Use text_area for multiline input | |
user_input = st.text_area("", height=5) | |
if user_input: | |
chat_history.append({"role": role, "parts": [{"text": user_input}]}) | |
if role == "user": | |
# Model code | |
model_name = "gemini-pro" | |
model = genai.GenerativeModel( | |
model_name=model_name, | |
generation_config=generation_config, | |
safety_settings=safety_settings | |
) | |
response = model.generate_content(chat_history) | |
response_text = response.text | |
chat_history.append({"role": "model", "parts": [{"text": response_text}]}) | |
st.session_state["chat_history"] = chat_history | |
for message in chat_history: | |
r, t = message["role"], message["parts"][0]["text"] | |
st.markdown(f"**{r.title()}:** {t}") | |
if st.button("Display History"): | |
c.execute("SELECT * FROM history") | |
rows = c.fetchall() | |
for row in rows: | |
st.markdown(f"**{row[0].title()}:** {row[1]}") | |
# Save chat history to database | |
for message in chat_history: | |
c.execute("INSERT INTO history VALUES (?, ?)", | |
(message["role"], message["parts"][0]["text"])) | |
conn.commit() | |
conn.close() | |
# Separate section for image uploading | |
st.title("Image Description Generator") | |
uploaded_file = st.file_uploader("Upload an image here", type=["png", "jpg", "jpeg"]) | |
# Text input for asking questions about the image | |
image_question = st.text_input("Ask something about the image:") | |
if uploaded_file and image_question: | |
image_parts = [ | |
{ | |
"mime_type": uploaded_file.type, | |
"data": uploaded_file.read() | |
}, | |
] | |
prompt_parts = [ | |
image_question, | |
image_parts[0], | |
] | |
model = genai.GenerativeModel( | |
model_name="gemini-pro-vision", | |
generation_config=generation_config, | |
safety_settings=safety_settings | |
) | |
response = model.generate_content(prompt_parts) | |
st.markdown(f"**Model's answer:** {response.text}") | |