File size: 4,496 Bytes
f630b9e 4750e9c f630b9e 7f792ef bdc7837 8b29d63 f630b9e bdc7837 990ca55 bdc7837 990ca55 bdc7837 990ca55 bdc7837 990ca55 bdc7837 7f792ef f630b9e 8b29d63 ca57036 8b29d63 7f792ef b77d772 8b29d63 f630b9e ca57036 f630b9e ca57036 f630b9e 2df9fd8 bdc7837 2df9fd8 7f792ef ca57036 7f792ef bdc7837 7f792ef 990ca55 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
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("""
<style>
body {background-color: #1e1e1e; color: white;}
.stButton>button {background-color: #4CAF50; color: white;}
.chat-bubble {background-color: #2c2c2c; border-radius: 10px; padding: 10px;}
</style>
""", unsafe_allow_html=True)
elif chat_theme == "Blue":
st.markdown("""
<style>
body {background-color: #e3f2fd; color: black;}
.stButton>button {background-color: #2196F3; color: white;}
.chat-bubble {background-color: #bbdefb; border-radius: 10px; padding: 10px;}
</style>
""", unsafe_allow_html=True)
elif chat_theme == "Green":
st.markdown("""
<style>
body {background-color: #e8f5e9; color: black;}
.stButton>button {background-color: #4CAF50; color: white;}
.chat-bubble {background-color: #c8e6c9; border-radius: 10px; padding: 10px;}
</style>
""", unsafe_allow_html=True)
else:
st.markdown("""
<style>
body {background-color: #ffffff; color: black;}
.stButton>button {background-color: #008CBA; color: white;}
.chat-bubble {background-color: #f1f1f1; border-radius: 10px; padding: 10px;}
</style>
""", 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 "Mujhe Abdel Basit ne banaya hai. π"
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"<div class='chat-bubble'><b>{question}</b></div>", unsafe_allow_html=True)
st.write(f"<div class='chat-bubble'>{answer}</div>", unsafe_allow_html=True)
|