import os import streamlit as st from groq import Groq # Set up the Groq API Key GROQ_API_KEY = "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" os.environ["GROQ_API_KEY"] = GROQ_API_KEY # Initialize the Groq client client = Groq(api_key=GROQ_API_KEY) # Streamlit user interface setup st.set_page_config(page_title="AI Study Assistant", page_icon="🤖", layout="wide") st.title("📚 Subject-specific AI Chatbot") st.write("Hello! I'm your AI Study Assistant. You can ask me any questions related to your subjects, and I'll try to help.") # Add sidebar with styling options st.sidebar.header("⚙️ Settings") st.sidebar.write("Customize your chatbot experience!") chat_theme = st.sidebar.radio("Choose a theme:", ["Light", "Dark", "Blue", "Green"]) # Apply theme if chat_theme == "Dark": st.markdown(""" """, unsafe_allow_html=True) elif chat_theme == "Blue": st.markdown(""" """, unsafe_allow_html=True) elif chat_theme == "Green": st.markdown(""" """, unsafe_allow_html=True) else: st.markdown(""" """, unsafe_allow_html=True) # Initialize session state for maintaining conversation if 'conversation_history' not in st.session_state: st.session_state.conversation_history = [] # Define a list of subjects for which the chatbot will answer subjects = ["Chemistry", "Computer", "English", "Islamiat", "Mathematics", "Physics", "Urdu"] # Function to generate chatbot response based on subject-specific user input def generate_chatbot_response(user_message): # Check if the user's question is related to any subject related_subject = None for subject in subjects: if subject.lower() in user_message.lower(): related_subject = subject break # Custom response for "who created you" type of questions if "kisne banaya" in user_message.lower() or "who created you" in user_message.lower(): return "I Created by Abdul Basit 😊" if related_subject: prompt = f"You are a helpful AI chatbot for studying {related_subject}. The user is asking: {user_message}. Provide a detailed, helpful response related to {related_subject}." else: prompt = f"You are a helpful AI chatbot. The user is asking: {user_message}. If the question is not related to any of the specified subjects (Chemistry, Computer, English, Islamiat, Mathematics, Physics, Urdu), politely let them know." # Generate response using Groq API chat_completion = client.chat.completions.create( messages=[{"role": "user", "content": prompt}], model="llama3-8b-8192", # You can replace with the appropriate model name ) response = chat_completion.choices[0].message.content return response # User input for conversation (now placed at the bottom) st.markdown("### 💬 Chat with me") user_input = st.chat_input("Ask me a subject-related question:") # Handle user input and display conversation if user_input: chatbot_response = generate_chatbot_response(user_input) # Save the conversation history st.session_state.conversation_history.append(("User: " + user_input, "Chatbot: " + chatbot_response)) # Display chat history st.markdown("---") st.markdown("### 🗨️ Chat History") for question, answer in st.session_state.conversation_history: st.write(f"
{question}
", unsafe_allow_html=True) st.write(f"
{answer}
", unsafe_allow_html=True)