Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/ankitghosal82_mental-health-chatbot.json
T

1 line
3.6 KiB
JSON

{"repo": "ankitghosal82/mental-health-chatbot", "files": {"app.py": {"da49eced3f9ceb42c25d3227fd6d4fea8ca93f13": {"t": 1785674368.8507223, "n": 3264, "h": "b09273218da7f1da", "c": "\n\nimport streamlit as st \nimport os \nfrom dotenv import load_dotenv \nimport requests \nimport datetime \nimport speech_recognition as sr \nimport pyttsx3 \nimport nltk \nfrom nltk.sentiment import SentimentIntensityAnalyzer \nimport pandas as pd \nimport matplotlib.pyplot as plt\n\n# Load environment variables\nload_dotenv() \nOPENROUTER_API_KEY = os.getenv(\"OPENROUTER_API_KEY\")\n\n# Text-to-speech engine\ntts_engine = pyttsx3.init() \ntts_engine.setProperty('rate', 150)\n\ndef speak(text): \n tts_engine.say(text) \n tts_engine.runAndWait()\n\n# Download sentiment lexicon\nnltk.download('vader_lexicon') \nsia = SentimentIntensityAnalyzer()\n\n# Streamlit app setup\nst.set_page_config(page_title=\"Anonymous Mental Health Chatbot\", layout=\"centered\") \nst.title(\"🧠 Anonymous Mental Health Chatbot\") \nst.markdown(\"Talk about your feelings. I'm here to listen anonymously. ❤️\")\n\n# Mood check-in section\nst.markdown(\"### ☀ Daily Mood Check-in\") \nuser_mood = st.text_input(\"How are you feeling today?\")\n\ndef save_mood_log(mood, sentiment_score): \n log_file = \"mood_log.csv\" \n timestamp = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\") \n entry = pd.DataFrame([[timestamp, mood, sentiment_score]], columns=[\"timestamp\", \"mood\", \"sentiment\"]) \n if os.path.exists(log_file): \n entry.to_csv(log_file, mode='a', header=False, index=False) \n else:\n entry.to_csv(log_file, index=False)\n\nif user_mood: \n sentiment = sia.polarity_scores(user_mood) \n score = sentiment['compound'] \n save_mood_log(user_mood, score)\n\n if score >= 0.05: \n st.success(\"You seem positive today! 😊\") \n elif score <= -0.05: \n st.error(\"You sound a bit down. I'm here for you. ❤\") \n else: \n st.info(\"You're feeling neutral today. Let's talk more!\")\n\n# Voice input\nst.markdown(\"### 🎙 Voice Input (Optional)\") \nif st.button(\"🎧 Speak Now\"): \n r = sr.Recognizer() \n with sr.Microphone() as source: \n st.info(\"Listening...\") \n audio = r.listen(source) \n try: \n user_input = r.recognize_google(audio) \n st.write(\"You said:\", user_input) \n except sr.UnknownValueError: \n st.warning(\"Sorry, I didn't understand that.\") \n user_input = \"\" \nelse: \n user_input = st.text_input(\"💬 Type your message:\")\n\n# OpenRouter integration\ndef chat_with_openrouter(user_input): \n url = \"https://openrouter.ai/api/v1/chat/completions\" \n headers = { \n \"Authorization\": f\"Bearer {OPENROUTER_API_KEY}\", \n \"Content-Type\": \"application/json\" \n } \n payload = { \n \"model\": \"mistralai/mixtral-8x7b\", \n \"messages\": [ {\"role\": \"user\", \"content\": user_input} ] \n } \n response = requests.post(url, headers=headers, json=payload) \n return response.json()['choices'][0]['message']['content']\n\n# Respond to user input\nif user_input: \n with st.spinner(\"Thinking...\"): \n response = chat_with_openrouter(user_input) \n st.markdown(\"🤖 Bot: \" + response) \n speak(response)\n\n# Mood trend graph\nif os.path.exists(\"mood_log.csv\"): \n st.markdown(\"### 📈 Mood Over Time\") \n df = pd.read_csv(\"mood_log.csv\") \n df['timestamp'] = pd.to_datetime(df['timestamp']) \n df = df.sort_values(\"timestamp\") \n st.line_chart(df.set_index(\"timestamp\")[\"sentiment\"])\n"}}}}