Spaces:
Sleeping
Sleeping
File size: 6,297 Bytes
48ad81c aeb7752 868289f 2745b9c 48ad81c 5733740 48ad81c b382f24 5524c97 48ad81c 5524c97 868289f 0bb182a 868289f dac5058 0bb182a dac5058 43471b3 dac5058 b382f24 dac5058 b382f24 5524c97 b382f24 e1e605f 868289f 9ea96c4 240a1f8 9ea96c4 240a1f8 0bb182a 868289f 240a1f8 868289f 0bb182a 868289f 240a1f8 0bb182a 868289f 240a1f8 868289f 240a1f8 5117e78 b382f24 e1e605f 0bb182a |
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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
import os
import streamlit as st
import pandas as pd
from groq import Groq
from dotenv import load_dotenv
# Load environment variables from .env file (optional)
load_dotenv()
# Get the API key from environment variable or set directly
groq_api_key = os.getenv("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") # First try from environment variable
if not groq_api_key:
# Optionally, set the API key directly for testing
groq_api_key = "your_actual_groq_api_key_here"
if not groq_api_key:
st.error("GROQ_API_KEY is not set. Please provide a valid API key.")
st.stop()
# Initialize the GROQ client
groq_client = Groq(api_key=groq_api_key)
if not groq_client:
st.error("Failed to initialize the GROQ client. Please check your API key.")
st.stop()
# Function to load and preprocess data
@st.cache_data
def load_data(file):
df = pd.read_csv(file)
return df
# Function to provide detailed health advice based on user data
def provide_observed_advice(data):
advice = []
# High depression and anxiety with low stress-relief activities
if data['depression'] > 7 and data['anxiety'] > 7:
advice.append("You seem to be experiencing high levels of both depression and anxiety. It's important to consider professional mental health support. You might also benefit from engaging in calming activities like deep breathing, mindfulness, or yoga.")
# Moderate depression or anxiety
elif data['depression'] > 5 or data['anxiety'] > 5:
advice.append("You are showing moderate levels of depression or anxiety. It would be helpful to develop healthy coping strategies like maintaining a regular sleep schedule, engaging in physical activity, and reaching out to friends or family for support.")
# High isolation and low stress-relief activities
if data['isolation'] > 7 and data['stress_relief_activities'] < 5:
advice.append("It seems you are feeling isolated, and your engagement in stress-relief activities is low. It's important to connect with friends or join community groups. Incorporate activities that help alleviate stress, such as walking, journaling, or meditation.")
# High future insecurity
if data['future_insecurity'] > 7:
advice.append("You are feeling a significant amount of insecurity about the future. It can be helpful to break down your larger goals into smaller, manageable tasks. Seeking career counseling or mentorship could provide valuable guidance and reduce anxiety about the future.")
# Overall low engagement in stress-relief activities
if data['stress_relief_activities'] < 5:
advice.append("Your engagement in stress-relief activities is quite low. It's essential to engage in activities that reduce stress and promote mental wellness, such as hobbies, physical exercise, and relaxation techniques like deep breathing or yoga.")
return advice
# Function to use the GROQ API for health queries (e.g., for symptoms or wellness queries)
def get_health_advice_from_groq(query):
try:
# Sending request to GROQ API
chat_completion = groq_client.chat.completions.create(
messages=[{
"role": "user",
"content": query
}],
model="llama-3.3-70b-versatile",
)
# Extracting and returning the response from GROQ API
response_content = chat_completion.choices[0].message.content
return response_content
except Exception as e:
st.error(f"Error with GROQ API: {str(e)}")
return "Could not fetch advice from GROQ API."
# Streamlit app layout
def main():
# Set a background color and style
st.markdown(
"""
<style>
.stApp {
background-color: #F4F4F9;
}
.stButton>button {
background-color: #6200EE;
color: white;
font-size: 18px;
}
.stSlider>div>div>span {
color: #6200EE;
}
.stTextInput>div>div>input {
background-color: #E0E0E0;
}
</style>
""",
unsafe_allow_html=True
)
# Title and header
st.title("π **Student Health Advisory Assistant** π")
st.markdown("### **Analyze your well-being and get personalized advice**")
# File upload
uploaded_file = st.file_uploader("Upload your dataset (CSV)", type=["csv"])
if uploaded_file:
df = load_data(uploaded_file)
st.write("### Dataset Preview:")
st.dataframe(df.head())
# User input for analysis
st.markdown("### **Input Your Details**")
gender = st.selectbox("πΉ Gender", ["Male", "Female"], help="Select your gender.")
age = st.slider("πΉ Age", 18, 35, step=1)
depression = st.slider("πΉ Depression Level (1-10)", 1, 10)
anxiety = st.slider("πΉ Anxiety Level (1-10)", 1, 10)
isolation = st.slider("πΉ Isolation Level (1-10)", 1, 10)
future_insecurity = st.slider("πΉ Future Insecurity Level (1-10)", 1, 10)
stress_relief_activities = st.slider("πΉ Stress Relief Activities Level (1-10)", 1, 10)
# Data dictionary for advice
user_data = {
"gender": gender,
"age": age,
"depression": depression,
"anxiety": anxiety,
"isolation": isolation,
"future_insecurity": future_insecurity,
"stress_relief_activities": stress_relief_activities,
}
# Provide advice based on user inputs
if st.button("π Get Observed Advice", key="advice_btn"):
st.subheader("π **Health Advice Based on Observations** π")
advice = provide_observed_advice(user_data)
if advice:
for i, tip in enumerate(advice, 1):
st.write(f"π {i}. {tip}")
else:
st.warning("No advice available based on your inputs.")
# Fetch additional health advice from GROQ API
st.subheader("π¬ **Additional Health Advice from GROQ** π¬")
groq_advice = get_health_advice_from_groq("Provide wellness tips for managing anxiety and stress.")
st.write(f"π‘ {groq_advice}")
if __name__ == "__main__":
main()
|