tarrasyed19472007's picture
Update app.py
ecf5f5f verified
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()