import streamlit as st from groq import Groq # Groq API Key (replace with your actual API key) groq_api_key = "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" # Initialize Groq client client = Groq(api_key=groq_api_key) # Function to fetch personalized advice using Groq API def get_personalized_advice(user_data): """Fetch personalized advice using the Groq API based on user data.""" query = f""" Based on the following user's responses: - Anxiety level: {user_data['anxiety_level']} - Self-esteem: {user_data['self_esteem']} - Mental health history: {user_data['mental_health_history']} - Stress level: {user_data['stress_level']} Please provide professional, personalized mental health advice tailored to these responses. """ try: response = client.chat.completions.create( messages=[{"role": "user", "content": query}], model="llama-3.3-70b-versatile", ) return response.choices[0].message.content except Exception as e: st.error(f"Error fetching advice from Groq: {str(e)}") return None def stress_level_to_string(stress_level): """Convert numerical stress level (0, 1, 2) to a string representation.""" if stress_level == 0: return "Low" elif stress_level == 1: return "Moderate" else: return "High" # Chatbot interface for professional user experience def chatbot_interface(): st.title("šŸŽ“ Professional Student Well-being Chatbot") st.write("Welcome to the Student Well-being Chatbot. I’m here to assist you in improving your mental well-being based on your responses. Please answer the following questions.") # Initialize session state if 'step' not in st.session_state: st.session_state.step = 0 st.session_state.user_data = {} def next_step(): st.session_state.step += 1 def show_input_error(message="Please provide a valid input."): st.error(message) return False def clear_data(): """Clear session data and reset to initial step.""" st.session_state.step = 0 st.session_state.user_data = {} # Step 0: Welcome message and initial question if st.session_state.step == 0: st.write("Bot: Thank you for choosing to take this well-being assessment. We will gather some insights to provide personalized advice.") st.write("Bot: Please answer the following questions as accurately as possible.") next_step_button = st.button("Start Assessment") clear_button = st.button("Clear All") if next_step_button: next_step() if clear_button: clear_data() # Step 1: Ask for anxiety level elif st.session_state.step == 1: st.write("Bot: On a scale from 1 to 10, how would you rate your current anxiety level?") anxiety_level = st.slider("Anxiety Level", 1, 10, 5) if anxiety_level: st.session_state.user_data['anxiety_level'] = anxiety_level next_step() # Step 2: Ask for self-esteem elif st.session_state.step == 2: st.write("Bot: On a scale from 1 to 10, how would you rate your current self-esteem?") self_esteem = st.slider("Self-esteem Level", 1, 10, 5) if self_esteem: st.session_state.user_data['self_esteem'] = self_esteem next_step() # Step 3: Ask for mental health history elif st.session_state.step == 3: st.write("Bot: How would you describe your mental health history?") mental_health_history = st.selectbox( "Please select the option that best represents your mental health history:", ["None", "Minor Issues", "Moderate Issues", "Severe Issues"] ) st.session_state.user_data['mental_health_history'] = mental_health_history next_step() # Step 4: Ask for stress level elif st.session_state.step == 4: st.write("Bot: On a scale from 0 to 2, how would you rate your current stress level?") stress_level = st.radio("Stress Level (0 = Low, 1 = Moderate, 2 = High)", [0, 1, 2]) st.session_state.user_data['stress_level'] = stress_level next_step() # Step 5: Show advice based on user input elif st.session_state.step == 5: st.write("Bot: Thank you for providing the information.") user_data = st.session_state.user_data st.write(f"Bot: Based on your inputs, here is a summary of your responses: {user_data}") # Show professional, personalized advice st.subheader("šŸ”” Professional Well-being Advice:") advice = get_personalized_advice(user_data) if advice: st.write(f"Bot: {advice}") else: st.write("Bot: Unfortunately, I couldn't retrieve specific advice at this moment, but feel free to try again later.") # Option to restart the chat restart_button = st.button("Start Over") clear_button = st.button("Clear All") if restart_button: clear_data() if clear_button: clear_data() # Main function to run the chatbot def main(): chatbot_interface() if __name__ == "__main__": main()