File size: 5,101 Bytes
8e315dc
c4587cb
8e315dc
c4587cb
e3e8ff9
c4587cb
 
 
8e315dc
7877a46
c4587cb
7877a46
c4587cb
 
 
 
 
 
 
 
 
 
 
8e315dc
9b9214f
b30668d
9b9214f
b30668d
9b9214f
 
 
 
 
 
c718b76
 
 
 
 
 
 
 
 
 
 
 
 
 
9b9214f
 
 
c718b76
 
 
f5c3915
c718b76
 
9b9214f
f5c3915
 
 
 
c718b76
 
9b9214f
f5c3915
 
c718b76
 
 
 
9b9214f
c718b76
9b9214f
 
c718b76
9b9214f
 
c718b76
f5c3915
c718b76
 
9b9214f
c718b76
 
 
 
 
 
 
9b9214f
c718b76
 
 
 
 
 
 
 
b30668d
c718b76
9b9214f
 
b30668d
c718b76
 
b30668d
 
8e315dc
b30668d
9e67cb5
8e315dc
 
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
108
109
110
111
112
113
114
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 user's data: 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']}, provide personalized mental health advice."
    
    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

# Function for chatbot interaction with professional styling
def chatbot_interface():
    st.set_page_config(page_title="πŸŽ“ Student Well-being Chatbot", layout="centered")
    st.title("πŸŽ“ Student Well-being Chatbot")
    st.write("Welcome! I'm here to help you with well-being advice tailored to your current state.")

    # Styling the sidebar for improved UX
    st.sidebar.title("Student Well-being")
    st.sidebar.write("The well-being questionnaire will guide you through assessing your mental health and providing personalized advice.")

    # 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

    # Step 0: Welcome message and initial question
    if st.session_state.step == 0:
        st.write("Bot: Hi there! I'm here to assist you with your well-being. Let's get started! 😊")
        st.markdown("<hr>", unsafe_allow_html=True)
        next_step_button = st.button("Start Chat", key="start_button", help="Click to start the well-being questionnaire.")
        if next_step_button:
            next_step()

    # Step 1: Ask for anxiety level with slider
    elif st.session_state.step == 1:
        st.write("Bot: On a scale of 1 to 10, how would you rate your anxiety level?")
        anxiety_level = st.slider("Your Anxiety Level:", min_value=1, max_value=10, value=5, step=1, help="Rate your anxiety from 1 (low) to 10 (high).")
        st.session_state.user_data['anxiety_level'] = anxiety_level
        next_step()

    # Step 2: Ask for self-esteem with slider
    elif st.session_state.step == 2:
        st.write("Bot: On a scale of 1 to 10, how would you rate your self-esteem?")
        self_esteem = st.slider("Your Self-Esteem Level:", min_value=1, max_value=10, value=5, step=1, help="Rate your self-esteem from 1 (low) to 10 (high).")
        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(
            "Select your mental health history:",
            ["None", "Minor Issues", "Moderate Issues", "Severe Issues"],
            help="Choose an option that best describes your mental health background."
        )
        st.session_state.user_data['mental_health_history'] = mental_health_history
        next_step()

    # Step 4: Ask for stress level with slider
    elif st.session_state.step == 4:
        st.write("Bot: On a scale of 0 to 2, how would you rate your stress level?")
        stress_level = st.slider("Your Stress Level:", min_value=0, max_value=2, value=1, step=1, help="Rate your stress from 0 (low) to 2 (high).")
        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! Here’s your personalized advice:")
        user_data = st.session_state.user_data
        st.write(f"Your Data: {user_data}")

        # Fetch personalized advice from Groq
        st.subheader("πŸ”” Here's Your Personalized Well-being Advice:")
        advice = get_personalized_advice(user_data)
        if advice:
            st.write(advice)
        else:
            st.write("I couldn't retrieve specific advice right now, but please check back later.")

        # Option to restart the chat
        st.markdown("<hr>", unsafe_allow_html=True)
        restart_button = st.button("Start Over", key="restart_button", help="Click to restart the questionnaire.")
        if restart_button:
            st.session_state.step = 0
            st.session_state.user_data = {}

# Main function to run the chatbot
def main():
    chatbot_interface()

if __name__ == "__main__":
    main()