import streamlit as st import google.generativeai as genai import time # Configure the Gemini API key genai.configure(api_key="AIzaSyC86IqnS0vAzkijFfnDW2yOEtpWNiea1Vc") # Initialize the model model = genai.GenerativeModel("gemini-1.5-flash") # System Prompt SYSTEM_PROMPT = """ You are a highly knowledgeable and friendly fitness assistant for an advanced gym website. Your task is to answer all gym-related queries with accurate, professional, and practical advice. You can handle any gym-related topic, including: - Workout Plans (Strength, Weight Loss, Muscle Gain) - Diet & Nutrition (Meal Plans, Supplements, Recovery) - Fat Loss & Muscle Gain (Guidance & Tips) - Gym Equipment Usage, Class & Trainer Schedules - Motivation, Consistency, Membership & Pricing Details If a user asks something unrelated to the gym, politely let them know you only answer gym-related queries. """ # Function to get chatbot response def get_gym_chatbot_response(user_query): prompt = SYSTEM_PROMPT + f"\nUser Query: {user_query}\nResponse:" response = model.generate_content(prompt) return response.text.strip() # Streamlit UI Configuration st.set_page_config(page_title="Gym Chatbot", page_icon="🏋️‍♂️", layout="wide") # Custom CSS for styling st.markdown(""" """, unsafe_allow_html=True) # Sidebar - Chat History st.sidebar.title("📜 Chat History") if "chat_history" not in st.session_state: st.session_state.chat_history = [] # Display chat history in sidebar if st.session_state.chat_history: for i, chat in enumerate(st.session_state.chat_history): if st.sidebar.button(f"Chat {i+1} 🏋️", key=f"chat_{i}"): st.session_state.messages = chat["messages"] st.rerun() # Button to Start New Chat if st.sidebar.button("➕ Start New Chat", key="new_chat"): st.session_state.messages = [] st.session_state.chat_history.append({"messages": []}) st.rerun() # Main Chat Interface st.markdown('
💪 AI Gym Chatbot
', unsafe_allow_html=True) st.markdown('

Ask me anything about fitness, workouts, diet plans, and more!

', unsafe_allow_html=True) # Session State for Messages if "messages" not in st.session_state: st.session_state.messages = [] # Display Chat Messages for msg in st.session_state.messages: with st.chat_message(msg["role"]): st.markdown(msg["content"]) # User Input Box user_input = st.chat_input("Type your message here...") if user_input: # Store and Display User Message st.session_state.messages.append({"role": "user", "content": user_input}) with st.chat_message("user"): st.markdown(user_input) # Typing Effect with st.spinner("🤖 Thinking..."): time.sleep(1.5) # Generate Bot Response bot_response = get_gym_chatbot_response(user_input) # Store and Display Bot Response st.session_state.messages.append({"role": "assistant", "content": bot_response}) with st.chat_message("assistant"): st.markdown(bot_response) # Save Chat to History if st.session_state.messages and len(st.session_state.chat_history) > 0: st.session_state.chat_history[-1]["messages"] = st.session_state.messages