Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from openai import OpenAI | |
| from langchain_community.document_loaders import TextLoader | |
| from langchain_text_splitters import CharacterTextSplitter | |
| from langchain_community.vectorstores import FAISS | |
| from langchain_community.embeddings import FakeEmbeddings | |
| import os | |
| # Load and split the text | |
| loader = TextLoader("mindmate.txt") | |
| documents = loader.load() | |
| text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) | |
| split_docs = text_splitter.split_documents(documents) | |
| vector_db = FAISS.from_documents(split_docs, FakeEmbeddings(size=100)) | |
| # Set up OpenRouter with DeepSeek R1 | |
| client = OpenAI( | |
| base_url="https://openrouter.ai/api/v1", | |
| api_key="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" | |
| ) | |
| # Define system prompt | |
| SYSTEM_PROMPT = ( | |
| "You are a warm and emotionally intelligent mental health companion π§ π. " | |
| "You deeply understand the user's problems and respond with empathy and clarity. " | |
| "Provide comforting, short fixes as bullet points (β’). " | |
| "Keep responses clean β do not use markdown like ** or * anywhere. " | |
| "Add emojis (ππͺππ«Ά) to make it emotionally expressive. " | |
| "Be soothing, friendly, and non-judgmental. Be on the user's side always. " | |
| "Make sure the advice is helpful, practical, and to the point." | |
| ) | |
| def chatbot(name, issue): | |
| full_prompt = f"{name} is feeling emotionally low. Reason: {issue}. Please help." | |
| docs = vector_db.similarity_search(issue, k=2) | |
| context = "\n\n".join([doc.page_content for doc in docs]) | |
| response = client.chat.completions.create( | |
| model="deepseek/deepseek-r1:free", | |
| messages=[ | |
| {"role": "system", "content": SYSTEM_PROMPT}, | |
| {"role": "user", "content": f"Context:\n{context}\n\nUser: {full_prompt}"} | |
| ] | |
| ) | |
| return response.choices[0].message.content | |
| # Gradio UI | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("## π§ MindMate β Your Mental Health Companion π\nShare your feelings and get comforting support π") | |
| with gr.Row(): | |
| with gr.Column(): | |
| name_input = gr.Textbox(label="Your Name", placeholder="e.g., Dhruvil") | |
| issue_input = gr.Textbox(lines=3, placeholder="What's troubling you today?", label="Whatβs bothering you?") | |
| send_button = gr.Button("πͺ Get Support") | |
| with gr.Column(): | |
| chatbot_output = gr.Textbox(lines=12, label="MindMate's Response") | |
| send_button.click(fn=chatbot, inputs=[name_input, issue_input], outputs=chatbot_output) | |
| demo.launch() |