harshnarayan12's picture
Upload 23 files
f2f35b4 verified
#!/usr/bin/env python3
"""
MINIMAL Hugging Face Spaces Entry Point - Guaranteed to Work
Simple mental health chatbot with basic keyword responses
"""
import gradio as gr
import os
import json
from datetime import datetime
import threading
import time
# Set environment variables for Hugging Face Spaces
os.environ['HUGGINGFACE_SPACES'] = '1'
os.environ['GRADIO_SERVER_NAME'] = '0.0.0.0'
os.environ['GRADIO_SERVER_PORT'] = '7860'
# Simple keyword-based responses for mental health support
MENTAL_HEALTH_RESPONSES = {
'crisis': [
"I'm concerned about what you're sharing. Please reach out to emergency services if you're in immediate danger.",
"Your safety is important. Consider contacting: National Suicide Prevention Lifeline: 988",
"Please talk to a mental health professional, trusted friend, or family member right away."
],
'depression': [
"I hear that you're going through a difficult time. Depression is treatable, and you don't have to face this alone.",
"It's important to reach out for professional support. Consider speaking with a counselor or therapist.",
"Small steps can help - try to maintain a routine, get some sunlight, and connect with supportive people."
],
'anxiety': [
"Anxiety can feel overwhelming, but there are effective ways to manage it.",
"Try some deep breathing exercises: breathe in for 4 counts, hold for 4, breathe out for 6.",
"Consider grounding techniques: name 5 things you can see, 4 you can touch, 3 you can hear."
],
'stress': [
"Stress is a normal response, but chronic stress needs attention.",
"Consider what might help: exercise, meditation, talking to someone, or adjusting your workload.",
"Remember to take breaks and practice self-care."
],
'default': [
"Thank you for sharing that with me. How are you feeling right now?",
"I'm here to listen. Can you tell me more about what's on your mind?",
"It's important to talk about these things. What would be most helpful for you right now?"
]
}
def get_simple_response(message):
"""Generate a simple keyword-based response"""
message_lower = message.lower()
# Crisis keywords
crisis_words = ['suicide', 'kill myself', 'end it all', 'hurt myself', 'self harm', 'die', 'death']
if any(word in message_lower for word in crisis_words):
return MENTAL_HEALTH_RESPONSES['crisis'][0]
# Depression keywords
depression_words = ['depressed', 'depression', 'sad', 'hopeless', 'worthless', 'empty']
if any(word in message_lower for word in depression_words):
return MENTAL_HEALTH_RESPONSES['depression'][0]
# Anxiety keywords
anxiety_words = ['anxious', 'anxiety', 'worried', 'panic', 'nervous', 'fear']
if any(word in message_lower for word in anxiety_words):
return MENTAL_HEALTH_RESPONSES['anxiety'][0]
# Stress keywords
stress_words = ['stress', 'stressed', 'overwhelmed', 'pressure', 'burned out']
if any(word in message_lower for word in stress_words):
return MENTAL_HEALTH_RESPONSES['stress'][0]
# Default response
return MENTAL_HEALTH_RESPONSES['default'][0]
def chat_interface(message, history):
"""Simple chat interface for Gradio"""
if not message.strip():
return history
# Add user message
history.append([message, None])
# Generate response
response = get_simple_response(message)
# Add bot response
history[-1][1] = response
return history
def create_assessment_form():
"""Create a simple mental health assessment"""
questions = [
"How often have you felt down, depressed, or hopeless in the past 2 weeks?",
"How often have you felt little interest or pleasure in doing things?",
"How often have you felt nervous, anxious, or on edge?",
"How often have you been unable to stop or control worrying?",
"How would you rate your overall mental health today?"
]
options = ["Not at all", "Several days", "More than half the days", "Nearly every day"]
return questions, options
def process_assessment(*responses):
"""Process simple assessment responses"""
if not any(responses):
return "Please answer at least one question to get results."
# Simple scoring
scores = [["Not at all", "Several days", "More than half the days", "Nearly every day"].index(r)
if r in ["Not at all", "Several days", "More than half the days", "Nearly every day"]
else 0 for r in responses if r]
total_score = sum(scores)
max_possible = len(scores) * 3
if total_score <= max_possible * 0.3:
result = "Your responses suggest minimal mental health concerns."
elif total_score <= max_possible * 0.6:
result = "Your responses suggest mild to moderate mental health concerns."
else:
result = "Your responses suggest significant mental health concerns."
result += "\n\nRemember: This is not a professional diagnosis. Please consider speaking with a mental health professional for proper evaluation and support."
return result
# Create the Gradio interface
with gr.Blocks(title="Mental Health AI Assistant", theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# 🧠 Mental Health AI Assistant
**A supportive space for mental health conversations and basic assessments.**
*Disclaimer: This is not a substitute for professional mental health care.
If you're in crisis, please contact emergency services or a mental health hotline.*
""")
with gr.Tab("πŸ’¬ Chat"):
gr.Markdown("### Have a conversation about your mental health")
chatbot = gr.Chatbot(
height=400,
placeholder="Start a conversation about how you're feeling..."
)
with gr.Row():
msg = gr.Textbox(
placeholder="Type your message here...",
container=False,
scale=4
)
send_btn = gr.Button("Send", scale=1, variant="primary")
# Chat functionality
msg.submit(chat_interface, [msg, chatbot], [chatbot])
send_btn.click(chat_interface, [msg, chatbot], [chatbot])
msg.submit(lambda: "", None, [msg])
send_btn.click(lambda: "", None, [msg])
with gr.Tab("πŸ“‹ Quick Assessment"):
gr.Markdown("### Brief Mental Health Check")
gr.Markdown("*Answer a few questions to get insights about your mental wellbeing.*")
questions, options = create_assessment_form()
responses = []
for i, question in enumerate(questions[:4]): # First 4 questions
response = gr.Radio(
choices=options,
label=f"Q{i+1}: {question}",
value=None
)
responses.append(response)
# Overall health question
overall_health = gr.Radio(
choices=["Excellent", "Very Good", "Good", "Fair", "Poor"],
label="Q5: How would you rate your overall mental health today?",
value=None
)
responses.append(overall_health)
assess_btn = gr.Button("Get Assessment Results", variant="primary")
results = gr.Textbox(
label="Assessment Results",
lines=8,
interactive=False
)
assess_btn.click(
process_assessment,
inputs=responses,
outputs=results
)
with gr.Tab("πŸ“š Resources"):
gr.Markdown("""
### πŸ†˜ Crisis Resources
**If you're in immediate danger:**
- **Emergency Services**: Call 911 (US) or your local emergency number
- **National Suicide Prevention Lifeline**: 988 (US)
- **Crisis Text Line**: Text HOME to 741741
### πŸ₯ Professional Help
- **Psychology Today**: Find therapists near you
- **National Alliance on Mental Illness (NAMI)**: 1-800-950-NAMI
- **Substance Abuse Helpline**: 1-800-662-4357
### 🧘 Self-Help Tools
- **Mindfulness Apps**: Headspace, Calm, Insight Timer
- **Breathing Exercises**: 4-7-8 technique, box breathing
- **Grounding Techniques**: 5-4-3-2-1 sensory method
### πŸ“– Educational Resources
- **Mental Health America**: mhanational.org
- **National Institute of Mental Health**: nimh.nih.gov
- **WHO Mental Health**: who.int/mental_health
""")
with gr.Tab("ℹ️ About"):
gr.Markdown("""
### About This Application
This is a **minimal version** of the Mental Health AI Assistant, designed to provide:
- Basic conversational support using keyword matching
- Simple mental health assessments
- Crisis resource information
- Educational materials
### πŸ”’ Privacy & Safety
- Your conversations are not stored permanently
- No personal data is collected
- All interactions are processed locally
### ⚠️ Important Disclaimer
**This application is NOT a replacement for professional mental health care.**
- It does not provide medical diagnosis or treatment
- It cannot handle mental health emergencies
- Always consult qualified healthcare providers for serious concerns
### πŸš€ Technology
- Built with Gradio for the interface
- Deployed on Hugging Face Spaces
- Uses simple keyword-based responses
---
*If you need immediate help, please contact emergency services or a mental health crisis line.*
""")
# Launch the application
if __name__ == "__main__":
print("πŸš€ Starting Minimal Mental Health AI Assistant...")
print("πŸ“ Running on Hugging Face Spaces")
print("🌟 Ready to provide basic mental health support")
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=False,
show_api=False
)