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)