Spaces:
Sleeping
Sleeping
File size: 4,948 Bytes
10e4cb6 5878a82 de3564a c207ffc 3a64fb1 be722e2 10e4cb6 34a4f65 a4cce9a 34a4f65 9903fee 72d0e7a 34a4f65 72d0e7a 9903fee 34a4f65 9903fee be8b77d 9903fee 61d9513 72d0e7a 9903fee adf24b1 de3564a 26768c0 cca43a4 26768c0 ab6d6cd 26768c0 3a64fb1 26768c0 10e4cb6 26768c0 3a64fb1 26768c0 1946379 26768c0 1946379 26768c0 1946379 26768c0 87a519d 5878a82 26768c0 3a64fb1 5878a82 26768c0 5878a82 26768c0 3a64fb1 26768c0 5878a82 26768c0 |
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 |
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
#from transformers import AutoTokenizer
#from llama_cpp import Llama
from datasets import load_dataset
import os
import requests
# Replace with the direct image URL
flower_image_url = "https://i.postimg.cc/hG2FG85D/2.png"
# Inject custom CSS for the background with a centered and blurred image
st.markdown(
f"""
<style>
/* Container for background */
html, body {{
margin: 0;
padding: 0;
overflow: hidden;
}}
[data-testid="stAppViewContainer"] {{
position: relative;
z-index: 1; /* Ensure UI elements are above the background */
}}
/* Blurred background image */
.blurred-background {{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1; /* Send background image behind all UI elements */
background-image: url("{flower_image_url}");
background-size: cover;
background-position: center;
filter: blur(10px); /* Adjust blur ratio here */
opacity: 0.8; /* Optional: Add slight transparency for a subtle effect */
}}
</style>
""",
unsafe_allow_html=True
)
# Add the blurred background div
st.markdown('<div class="blurred-background"></div>', unsafe_allow_html=True)
#""""""""""""""""""""""""" Application Code Starts here """""""""""""""""""""""""""""""""""""""""""""
# Load the dataset
@st.cache_resource
def load_counseling_dataset():
return load_dataset("Amod/mental_health_counseling_conversations")
dataset = load_counseling_dataset()
# Fine-tune the model and save it
@st.cache_resource
def fine_tune_model():
from transformers import AutoTokenizer, AutoModelForCausalLM, DataCollatorForLanguageModeling
# Load base model and tokenizer
model_name = "prabureddy/Mental-Health-FineTuned-Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare dataset for training
def preprocess_function(examples):
return tokenizer(examples["context"] + "\n" + examples["response"], truncation=True)
tokenized_datasets = dataset.map(preprocess_function, batched=True)
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
# Training arguments
training_args = TrainingArguments(
output_dir="./fine_tuned_model",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=1,
num_train_epochs=3,
weight_decay=0.01,
save_total_limit=2,
save_strategy="epoch"
)
# Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["validation"],
tokenizer=tokenizer,
data_collator=data_collator,
)
trainer.train()
# Save the fine-tuned model
trainer.save_model("./fine_tuned_model")
tokenizer.save_pretrained("./fine_tuned_model")
return "./fine_tuned_model"
# Load or fine-tune the model
model_dir = fine_tune_model()
# Load the fine-tuned model for inference
@st.cache_resource
def load_pipeline(model_dir):
return pipeline("text-generation", model=model_dir)
pipe = load_pipeline(model_dir)
# Streamlit App
st.title("Mental Health Support Assistant")
st.markdown("""
Welcome to the **Mental Health Support Assistant**.
This tool helps detect potential mental health concerns based on user input and provides **uplifting and positive suggestions** to boost morale.
""")
# User input for mental health concerns
user_input = st.text_area("Please share your concern:", placeholder="Type your question or concern here...")
if st.button("Get Supportive Response"):
if user_input.strip():
with st.spinner("Analyzing your input and generating a response..."):
try:
# Construct the messages for the pipeline
messages = [{"role": "user", "content": user_input}]
# Generate a response
response = pipe(messages)[0]["generated_text"]
st.subheader("Supportive Suggestion:")
st.markdown(f"**{response}**")
except Exception as e:
st.error(f"An error occurred while generating the response: {e}")
else:
st.error("Please enter a concern to receive suggestions.")
# Sidebar for additional resources
st.sidebar.header("Additional Resources")
st.sidebar.markdown("""
- [Mental Health Foundation](https://www.mentalhealth.org)
- [Mind](https://www.mind.org.uk)
- [National Suicide Prevention Lifeline](https://suicidepreventionlifeline.org)
""")
st.sidebar.info("This application is not a replacement for professional counseling. If you're in crisis, seek professional help immediately.")
|