Phoenix21's picture
Update app.py
21934c8 verified
raw
history blame
4.45 kB
# app.py
import gradio as gr
from pipeline import process_answers_pipeline # Import the centralized pipeline function
from questions import questions # Import questions list
def process_answers(
sleep,
exercise,
mood,
stress_level,
wellness_goals,
dietary_restrictions,
relaxation_time,
health_issues,
water_intake,
gratitude_feelings,
connection_rating,
energy_rating
):
# Map the selected responses to their corresponding questions
responses = {
questions[0]: sleep, # How many hours of sleep do you get each night?
questions[1]: exercise, # How often do you exercise in a week?
questions[2]: mood, # On a scale of 1 to 10, how would you rate your mood today?
questions[3]: stress_level, # What is your current stress level on a scale from 1 to 10?
questions[4]: wellness_goals, # What are your primary wellness goals?
questions[5]: dietary_restrictions, # Do you follow any specific diet or have any dietary restrictions?
questions[7]: relaxation_time, # How much time do you spend on relaxation or mindfulness activities daily?
questions[8]: health_issues, # Do you experience any recurring health issues or pain?
questions[12]: water_intake, # How much water do you drink on average per day?
questions[23]: gratitude_feelings, # How often do you experience feelings of gratitude or happiness?
questions[24]: connection_rating, # On a scale from 1 to 10, how connected do you feel to your friends and family?
questions[27]: energy_rating # On a scale from 1 to 10, how would you rate your energy levels throughout the day?
}
# Process responses using the centralized pipeline
results = process_answers_pipeline(responses)
# Format outputs using results from the pipeline
wellness_report = f"**Wellness Report**\n------------------\n{results['report'].strip()}"
identified_problems = (
"**Identified Problems**\n"
"-----------------------\n"
f"Stress Management: {results['problems'].get('stress_management', 'N/A')}%\n"
f"Low Therapy: {results['problems'].get('low_therapy', 'N/A')}%\n"
f"Balanced Weight: {results['problems'].get('balanced_weight', 'N/A')}%\n"
f"Restless Night: {results['problems'].get('restless_night', 'N/A')}%\n"
f"Lack of Motivation: {results['problems'].get('lack_of_motivation', 'N/A')}%\n"
f"Gut Health: {results['problems'].get('gut_health', 'N/A')}%\n"
f"Anxiety: {results['problems'].get('anxiety', 'N/A')}%\n"
f"Burnout: {results['problems'].get('burnout', 'N/A')}%"
)
recommendations = (
"**Recommendations**\n"
"--------------------\n"
f"{results['recommendation'].strip()}"
)
summary_shown = (
"**Summary (SHOWN TO USER)**\n"
"-----------------\n"
f"{results['final_summary'].strip()}"
)
final_summary_video = (
"**Final Summary (FOR VIDEO CREATION)**\n"
"-----------------\n"
f"{results['shortened_summary'].strip()}"
)
return wellness_report, identified_problems, recommendations, summary_shown, final_summary_video
# Define the Gradio interface using only the 12 selected questions
iface = gr.Interface(
fn=process_answers,
inputs=[
gr.Textbox(label=questions[0]),
gr.Textbox(label=questions[1]),
gr.Textbox(label=questions[2]),
gr.Textbox(label=questions[3]),
gr.Textbox(label=questions[4]),
gr.Textbox(label=questions[5]),
gr.Textbox(label=questions[7]),
gr.Textbox(label=questions[8]),
gr.Textbox(label=questions[12]),
gr.Textbox(label=questions[23]),
gr.Textbox(label=questions[24]),
gr.Textbox(label=questions[27])
],
outputs=[
gr.Markdown(label="Wellness Report"),
gr.Markdown(label="Identified Problems"),
gr.Markdown(label="Recommendations"),
gr.Markdown(label="Summary (SHOWN TO USER)"),
gr.Markdown(label="Final Summary (FOR VIDEO CREATION)")
],
title="Wellness Report Generator",
description="Answer the questions to generate a wellness report, problem analysis, recommendations, and a final summary."
)
iface.launch()