File size: 2,780 Bytes
78300fa
a48d950
ac877e3
78300fa
 
 
 
 
ca9adf5
 
78300fa
ca9adf5
78300fa
 
596e12a
ac877e3
4c0c8ad
9d6b1a8
 
 
4c0c8ad
 
ac877e3
 
ca9adf5
 
590695e
ac877e3
 
ca9adf5
590695e
ac877e3
ca9adf5
ac877e3
ca9adf5
 
 
 
 
 
 
a48d950
 
ac877e3
ca9adf5
ac877e3
ca9adf5
ac877e3
 
590695e
ca9adf5
 
 
ac877e3
ca9adf5
590695e
 
ac877e3
590695e
 
ac877e3
ca9adf5
9d6b1a8
 
 
 
ca9adf5
9d6b1a8
 
 
 
 
 
ca9adf5
9d6b1a8
ac877e3
8fcb8ea
590695e
ca9adf5
a48d950
ca9adf5
 
 
ac877e3
590695e
9d6b1a8
590695e
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
import os
import requests
import streamlit as st
from dotenv import load_dotenv

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

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

if 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):
    # Correct API URL
    url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key={API_KEY}"
    
    headers = {'Content-Type': 'application/json'}
    
    # Combine user responses into a single input
    input_text = " ".join(user_answers)
    
    # Payload for the API request
    payload = {
        "contents": [
            {
                "parts": [
                    {"text": f"Analyze the mood based on these inputs: {input_text}. Provide recommendations."}
                ]
            }
        ]
    }

    try:
        # Send POST request
        response = requests.post(url, headers=headers, json=payload)
        
        if response.status_code == 200:
            result = response.json()
            
            # Extract recommendations from the response
            recommendations = result.get("contents", [{}])[0].get("parts", [{}])[0].get("text", "")
            return recommendations
        else:
            # Handle API error
            st.error(f"API Error {response.status_code}: {response.text}")
            return None
    except requests.exceptions.RequestException as e:
        st.error(f"An error occurred: {e}")
        return None

# Streamlit app
def main():
    st.title("Mood Analysis and Suggestions")
    st.write("Answer the following 3 questions to help us understand your mood:")

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

    # Query the API if all questions are answered
    if len(responses) == len(questions):
        st.write("Processing your answers...")

        # Query the Gemini API
        recommendations = query_gemini_api(responses)

        if recommendations:
            st.write("### Recommendations to Improve Your Mood:")
            st.write(recommendations)
        else:
            st.warning("Could not generate mood analysis. Please try again later.")
    else:
        st.info("Please answer all 3 questions to receive suggestions.")

if __name__ == "__main__":
    main()