NutrifyAI / app.py
ByteBrewer's picture
Update app.py
756ae04 verified
import streamlit as st
import google.generativeai as genai
from PIL import Image
import os
# Loading the environment variables
from dotenv import load_dotenv
load_dotenv()
# Configuring the API key...
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
def get_gemini_response(input_prompt, image):
model = genai.GenerativeModel("gemini-1.5-pro")
response = model.generate_content([input_prompt, image[0]])
return response.text
def input_image_setup(uploaded_file):
# Check if a file has been uploaded
if uploaded_file is not None:
# Read the file into bytes
bytes_data = uploaded_file.getvalue()
image_parts = [
{
"mime_type": uploaded_file.type, # Get the mime type of the uploaded file
"data": bytes_data
}
]
return image_parts
else:
raise FileNotFoundError("No file uploaded")
##initialize our streamlit app
st.set_page_config(page_title="Gemini Health App")
st.header("Gemini Health App")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
image=""
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="Uploaded Image.", use_column_width=True)
submit=st.button("Tell me the total calories")
input_prompt="""
You are an expert in nutritionist where you need to see the food items from the image
and calculate the total calories, also provide the details of every food items with calories intake
in the below format
1. Item 1 - no of calories
2. Item 2 - no of calories
----
----
And if there are variable portions of the food displayed in the image, then you simply can consider a unit portion of the food items in order to tell the total calories of ech food items displayed in the image.
Finally you can also mention whether the food item is healthy or not and also mention the percentage split of the ratio of the carbohydrates, fats, fibers, sugar and other important nutrients that are required in a diet.
"""
## If submit button is clicked
if submit:
image_data=input_image_setup(uploaded_file)
response=get_gemini_response(input_prompt, image_data)
st.header("The Response is")
st.write(response)