Nutritionist / app.py
DA1212's picture
create app.py
d5d95e3 verified
#to upload images option
#to show the image
#after hitting show the total calories it should interact with google gemini pro vision api to give response according to prompt and give response according to format specified
import streamlit as st
import google.generativeai as genai
import os
from PIL import Image
from dotenv import load_dotenv
load_dotenv() #load all environment varialbles in .env file currently it is having only api key
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
def get_gemini_response(input,image,prompt): #specifying what to give as input and how the model will react according to prompt and the image and data after image input setup function coming out
model=genai.GenerativeModel('gemini-pro-vision')
response=model.generate_content([input,image[0],prompt])
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 mime type is the format of the text and the image which is jpg
"data": bytes_data
}
]
return image_parts
else:
raise FileNotFoundError("No file uploaded")
#the get gemini response will be used after this
st.set_page_config(page_title="Gemini Health App")
st.header("Gemini Health App")
input=st.text_input("Input Prompt: ",key="input")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
image=""
if uploaded_file is not None: #if image is there it will show the image there only
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 below format
1. Item 1 - no of calories
2. Item 2 - no of calories
----
----
"""
if submit:
image_data=input_image_setup(uploaded_file)
response=get_gemini_response(input_prompt,image_data,input)
st.subheader("The Response is")
st.write(response)