Spaces:
Runtime error
Runtime error
import streamlit as st | |
import uuid | |
from gtts import gTTS | |
import google.generativeai as genai | |
from io import BytesIO # Import BytesIO | |
# Set your API key | |
api_key = "AIzaSyC70u1sN87IkoxOoIj4XCAPw97ae2LZwNM" # Replace with your actual API key | |
genai.configure(api_key=api_key) | |
# Configure the generative AI model | |
generation_config = genai.GenerationConfig( | |
temperature=0.9, | |
max_output_tokens=3000 | |
) | |
# Safety settings configuration | |
safety_settings = [ | |
{ | |
"category": "HARM_CATEGORY_DANGEROUS_CONTENT", | |
"threshold": "BLOCK_NONE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", | |
"threshold": "BLOCK_NONE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_HATE_SPEECH", | |
"threshold": "BLOCK_NONE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_HARASSMENT", | |
"threshold": "BLOCK_NONE", | |
}, | |
] | |
# Initialize session state for chat history | |
if 'chat_history' not in st.session_state: | |
st.session_state['chat_history'] = [] | |
st.title("Gemini Chatbot") | |
# Display chat history | |
def display_chat_history(): | |
for entry in st.session_state['chat_history']: | |
st.markdown(f"{entry['role'].title()}: {entry['parts'][0]['text']}") | |
# Function to clear conversation history | |
def clear_conversation(): | |
st.session_state['chat_history'] = [] | |
# Send message function | |
def send_message(): | |
user_input = st.session_state.user_input | |
if user_input: | |
prompts = [entry['parts'][0]['text'] for entry in st.session_state['chat_history']] | |
prompts.append(user_input) | |
chat_history_str = "\n".join(prompts) | |
model = genai.GenerativeModel( | |
model_name='gemini-pro', | |
generation_config=generation_config, | |
safety_settings=safety_settings | |
) | |
response = model.generate_content([{"role": "user", "parts": [{"text": chat_history_str}]}]) | |
response_text = response.text if hasattr(response, "text") else "No response text found." | |
if response_text: | |
st.session_state['chat_history'].append({"role": "model", "parts":[{"text": response_text}]}) | |
# Convert the response text to speech | |
tts = gTTS(text=response_text, lang='en') | |
tts_file = BytesIO() | |
tts.write_to_fp(tts_file) | |
tts_file.seek(0) | |
st.audio(tts_file, format='audio/mp3') | |
st.session_state.user_input = '' | |
display_chat_history() | |
# User input text area | |
user_input = st.text_area( | |
"Enter your message here:", | |
value="", | |
key="user_input" | |
) | |
# Send message button | |
send_button = st.button( | |
"Send", | |
on_click=send_message | |
) | |
# Clear conversation button | |
clear_button = st.button("Clear Conversation", on_click=clear_conversation) | |