mindbridge-chat / app.py
prats010's picture
Update app.py
f5982de verified
Raw
History Blame Contribute Delete
3.42 kB
import gradio as gr
from transformers import BlenderbotTokenizer, BlenderbotForConditionalGeneration
import torch
print("Loading MindBridge v3 model...")
model_name = "prats010/mindbridge-mental-health-model"
tokenizer = BlenderbotTokenizer.from_pretrained(model_name)
model = BlenderbotForConditionalGeneration.from_pretrained(
model_name,
torch_dtype=torch.float32
)
model.eval()
print("✅ Model loaded!")
def get_max_tokens(user_input):
word_count = len(user_input.split())
if word_count < 10:
return 220
else:
return 180
def get_coping(user_input):
lower = user_input.lower()
if any(w in lower for w in ["anxious", "anxiety", "panic", "worry", "worried"]):
return " Here are some ways to help: try deep breathing exercises, limit caffeine intake, practice grounding techniques like the 5-4-3-2-1 method, and consider speaking with a therapist."
elif any(w in lower for w in ["sad", "depressed", "depression", "hopeless", "empty", "worthless"]):
return " Some things that can help: maintain a daily routine, get sunlight and light exercise, reach out to someone you trust, and consider professional counselling."
elif any(w in lower for w in ["sleep", "insomnia", "tired", "exhausted"]):
return " To improve sleep: avoid screens 1 hour before bed, keep a consistent sleep schedule, try relaxation techniques like body scanning, and limit caffeine after 2pm."
elif any(w in lower for w in ["stress", "overwhelmed", "pressure", "burnout"]):
return " To manage stress: break tasks into smaller steps, take short breaks every 90 minutes, practice mindfulness, and talk to someone about what you are carrying."
elif any(w in lower for w in ["lonely", "alone", "isolated", "nobody"]):
return " To feel more connected: try joining a community or club, reach out to one person today, volunteer, or consider speaking with a counsellor who can offer consistent support."
return ""
def chat(user_input):
if not user_input or not user_input.strip():
return "Hi, I'm MindBridge. How are you feeling today?"
# Crisis detection
crisis_words = ["suicide", "suicidal", "kill myself", "end my life", "want to die", "self harm", "cutting myself"]
if any(w in user_input.lower() for w in crisis_words):
return "I'm really concerned about what you've shared. Please reach out immediately to iCall at 9152987821 or Vandrevala Foundation at 1860-2662-345. You are not alone and help is available 24/7. [CRISIS]"
inputs = tokenizer(
user_input,
return_tensors="pt",
truncation=True,
max_length=64
)
max_tokens = get_max_tokens(user_input)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_tokens,
num_beams=4,
temperature=0.8,
do_sample=True,
top_p=0.9,
repetition_penalty=1.3,
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
response = response + get_coping(user_input)
return response
demo = gr.Interface(
fn=chat,
inputs=gr.Textbox(
label="Your message",
placeholder="How are you feeling today?"
),
outputs=gr.Textbox(label="Response"),
title="MindBridge AI",
description="Your mental health companion"
)
demo.launch()