Spaces:
Sleeping
Sleeping
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()
|