diet_calculator / main.py
Lalitr's picture
Upload 3 files
b50a24b verified
raw
history blame
1.56 kB
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import JSONResponse
from typing import Any
import google.generativeai as genai
from dotenv import load_dotenv
import io
from PIL import Image
app = FastAPI()
def get_gemini_response(image: bytes) -> Any:
image_stream = io.BytesIO(image)
image = Image.open(image_stream)
model = genai.GenerativeModel('gemini-1.5-flash',
generation_config={"response_mime_type": "application/json"})
inputtext = '''System: You are a dietitian, Please check below image and share calorific value of each dish in metric system. Also explain how
much you should eat at one time for healthy diet. Response should be as per below json format for each dish separately.
{"Dish_Name": ,
"calorific_value": ,
"Healthy serving_size": }.
If unable to identify the dish then respond with {"Dish_Name": Unable to identify the dish}.'''
response = model.generate_content([inputtext, image])
return response.text
@app.post("/analyze-dish")
async def analyze_dish(image: UploadFile = File(...)):
try:
image_bytes = await image.read()
result = get_gemini_response(image_bytes)
return JSONResponse(content=result)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)