crop / app.py
omgy's picture
Update app.py
a459b5c verified
import io
import os
from fastapi import FastAPI, File, UploadFile, Request
from fastapi.responses import HTMLResponse, JSONResponse
from fastapi.templating import Jinja2Templates
# Gemini import
import google.generativeai as genai
# ---- CONFIG ----
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
gemini_model = genai.GenerativeModel("gemini-1.5-flash")
# ---- FASTAPI ----
app = FastAPI()
templates = Jinja2Templates(directory=".")
# ---- ROUTES ----
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.post("/analyze")
async def analyze(file: UploadFile = File(...)):
try:
image_bytes = await file.read()
# ---- GEMINI API CALL ----
response = gemini_model.generate_content([
{"mime_type": "image/jpeg", "data": image_bytes},
"just give diasease name in one word"
])
# ---- CLEAN GEMINI OUTPUT ----
gemini_text = response.text.strip()
clean_text = gemini_text.replace("\n", ", ").replace('"', '').strip(", ")
return JSONResponse({"result": clean_text})
except Exception as e:
return JSONResponse({"error": str(e)}, status_code=500)
# ---- RUN APP ----
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)