File size: 3,524 Bytes
78300fa
a48d950
ac877e3
78300fa
 
 
 
 
ecf5f5f
 
78300fa
ecf5f5f
78300fa
 
596e12a
ac877e3
4c0c8ad
9d6b1a8
 
 
4c0c8ad
 
ac877e3
 
ecf5f5f
ac877e3
 
ecf5f5f
 
ac877e3
 
ca9adf5
 
 
ecf5f5f
ca9adf5
 
 
a48d950
 
ac877e3
ecf5f5f
ac877e3
ca9adf5
ecf5f5f
 
 
 
 
ac877e3
 
ecf5f5f
 
 
 
 
 
 
 
 
 
ac877e3
590695e
ecf5f5f
ac877e3
590695e
ecf5f5f
ac877e3
ecf5f5f
9d6b1a8
 
ecf5f5f
9d6b1a8
 
ecf5f5f
9d6b1a8
 
 
 
 
 
ecf5f5f
9d6b1a8
ac877e3
8fcb8ea
ecf5f5f
 
 
 
 
 
a48d950
ecf5f5f
ca9adf5
ecf5f5f
 
ac877e3
ecf5f5f
590695e
9d6b1a8
ecf5f5f
9d6b1a8
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import os
import requests
import streamlit as st
from dotenv import load_dotenv

# Load environment variables from the .env file
load_dotenv()

# Get the Gemini API key from the .env file
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")

if GEMINI_API_KEY is None:
    st.error("API key not found! Please set the GEMINI_API_KEY in your .env file.")
    st.stop()

# Define the 3 questions for mood analysis
questions = [
    "How are you feeling today in one word?",
    "What's currently on your mind?",
    "Do you feel calm or overwhelmed right now?",
]

# Function to query the Gemini API
def query_gemini_api(user_answers):
    url = f'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key={GEMINI_API_KEY}'
    headers = {'Content-Type': 'application/json'}
    
    # Prepare the payload with user answers
    input_text = " ".join(user_answers)  # Combining all answers into one input text
    
    payload = {
        "contents": [
            {
                "parts": [
                    {"text": input_text}
                ]
            }
        ]
    }

    try:
        # Send the request to the Gemini API
        response = requests.post(url, headers=headers, json=payload)
        
        # Log the response for debugging
        print(f"Status Code: {response.status_code}")  # Log the status code
        print(f"Response Text: {response.text}")  # Log the response text
        
        # Check if the API call is successful
        if response.status_code == 200:
            result = response.json()

            # Check if the response contains valid mood and recommendations
            mood = result.get("mood", None)
            recommendations = result.get("recommendations", None)

            if mood and recommendations:
                return mood, recommendations
            else:
                st.error("No mood or recommendations found in the response.")
                return None, None
        else:
            st.error(f"API Error {response.status_code}: {response.text}")
            return None, None
    except requests.exceptions.RequestException as e:
        st.error(f"An error occurred: {e}")
        return None, None

# Streamlit app for collecting answers
def main():
    st.title("Mood Analysis and Suggestions")

    st.write("Answer the following 3 questions to help us understand your mood:")

    # Collect responses from the user
    responses = []
    for i, question in enumerate(questions):
        response = st.text_input(f"{i+1}. {question}")
        if response:
            responses.append(response)

    # If all 3 responses are collected, send them to Gemini for analysis
    if len(responses) == len(questions):
        st.write("Processing your answers...")

        # Get mood and recommendations from Gemini API
        mood, recommendations = query_gemini_api(responses)

        if mood and recommendations:
            # Display the detected mood
            st.write(f"Detected Mood: {mood}")

            # Display the recommendations
            st.write("### Recommendations to Improve Your Mood:")
            for recommendation in recommendations:
                st.write(f"- {recommendation}")
        else:
            # If no valid mood or recommendations are found, show a message
            st.warning("Could not generate mood analysis. Please try again later.")
    else:
        st.write("Please answer all 3 questions to receive suggestions.")

if __name__ == "__main__":
    main()