| | import io |
| | import os |
| | from fastapi import FastAPI, File, UploadFile, Request |
| | from fastapi.responses import HTMLResponse, JSONResponse |
| | from fastapi.templating import Jinja2Templates |
| |
|
| | |
| | import google.generativeai as genai |
| |
|
| | |
| | genai.configure(api_key=os.getenv("GEMINI_API_KEY")) |
| |
|
| | gemini_model = genai.GenerativeModel("gemini-1.5-flash") |
| |
|
| | |
| | app = FastAPI() |
| | templates = Jinja2Templates(directory=".") |
| |
|
| | |
| | @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() |
| |
|
| | |
| | response = gemini_model.generate_content([ |
| | {"mime_type": "image/jpeg", "data": image_bytes}, |
| | "just give diasease name in one word" |
| | ]) |
| |
|
| | |
| | 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) |
| |
|
| | |
| | if __name__ == "__main__": |
| | import uvicorn |
| | uvicorn.run(app, host="0.0.0.0", port=7860) |
| |
|