sunbal7's picture
Update app.py
bd3a27a verified
raw
history blame
3.36 kB
import streamlit as st
from textblob import TextBlob
# The transformers import is here in case you want to integrate a pre-trained model later.
# from transformers import pipeline
def get_roast(user_text):
"""
Generates a roast based on the user's input.
(You can replace or extend this logic by integrating a model like Mixtral-8x7B.)
"""
if "procrastinate" in user_text.lower():
return "Ah, the art of doing nothing! Do you charge Netflix for your couch imprint? πŸ›‹οΈ"
elif "always" in user_text.lower() or "never" in user_text.lower():
return "Wow, painting your world in extremes? Maybe it's time to add some shades of gray!"
else:
return "Is that a problem or a lifestyle choice? Time to get serious... or maybe not."
def analyze_text(user_text):
"""
Analyzes the input text for sentiment and detects basic cognitive distortions.
For now, it counts occurrences of words like 'always' or 'never'.
"""
blob = TextBlob(user_text)
sentiment = blob.sentiment.polarity # Ranges from -1 (negative) to 1 (positive)
distortions = sum(word in user_text.lower() for word in ["always", "never"])
return sentiment, distortions
def calculate_resilience_score(sentiment, distortions):
"""
Calculates a resilience score based on sentiment and the number of detected distortions.
The score is capped between 0 and 100.
"""
score = 100
# Adjust score by sentiment (scaled)
score += int(sentiment * 20)
# Penalize for cognitive distortions
score -= distortions * 10
# Ensure score stays within bounds
score = max(0, min(score, 100))
return score
def get_reframe_tips(score):
"""
Provides reframe tips based on the resilience score.
"""
if score < 50:
return "Remember: small steps lead to big changes. Try breaking tasks into manageable chunks and celebrate every little victory!"
elif score < 75:
return "You're on your way! Consider setting specific goals and challenge those negative thoughts with evidence."
else:
return "Keep up the great work! Your resilience is inspiring – maybe share some of that energy with someone who needs it!"
def main():
st.title("πŸ€– Roast Master Therapist Bot")
st.write("Share your problem, and let the roast and resilience tips begin!")
# User input
user_input = st.text_area("What's troubling you?", placeholder="e.g., I procrastinate on everything...")
if st.button("Get Roast and Tips"):
if user_input.strip():
# Generate roast response
roast = get_roast(user_input)
st.markdown("### Roast:")
st.write(roast)
# Analyze user input
sentiment, distortions = analyze_text(user_input)
resilience_score = calculate_resilience_score(sentiment, distortions)
tips = get_reframe_tips(resilience_score)
# Display analysis and tips
st.markdown("### Resilience Analysis:")
st.write(f"**Resilience Score:** {resilience_score}/100")
st.write(tips)
# Fun Streamlit animation!
st.balloons()
else:
st.warning("Please share something so we can get roasting!")
if __name__ == '__main__':
main()