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)