From a2b6730b88545974f9630d46fddd25fd0604cb1f Mon Sep 17 00:00:00 2001 From: kar Date: Mon, 21 Apr 2025 17:34:08 +0530 Subject: [PATCH] request_id --- app (2).py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ app.py | 4 ++-- 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 app (2).py diff --git a/app (2).py b/app (2).py new file mode 100644 index 0000000..9936cd2 --- /dev/null +++ b/app (2).py @@ -0,0 +1,57 @@ +import os +import io +from dotenv import load_dotenv +from fastapi import FastAPI, File, UploadFile, Form, Query +from fastapi.responses import JSONResponse, StreamingResponse +from PIL import Image +import moondream as md + +# Load environment variables +load_dotenv() +api_key = os.getenv("MOON_DREAM_KEY") + +# Initialize Moondream model +model = md.vl(api_key=api_key) + +# FastAPI app +app = FastAPI() + +@app.post("/caption") +async def generate_caption( + image: UploadFile = File(...), + length: str = Form("short") +): + try: + image_bytes = await image.read() + img = Image.open(io.BytesIO(image_bytes)) + response = model.caption(img, length=length) + return JSONResponse(content={"caption": response["caption"]}) + except Exception as e: + return JSONResponse(status_code=500, content={"error": str(e)}) + +@app.post("/query") +async def query_image( + image: UploadFile = File(...), + question: str = Form(...), + stream: bool = Form(False) +): + try: + image_bytes = await image.read() + img = Image.open(io.BytesIO(image_bytes)) + + if stream: + def generate(): + result = model.query(img, question, stream=True) + for chunk in result["chunk"]: + yield chunk + + return StreamingResponse(generate(), media_type="text/plain") + else: + result = model.query(img, question) + return JSONResponse(content={ + "answer": result["answer"], + "request_id": result["request_id"] + }) + + except Exception as e: + return JSONResponse(status_code=500, content={"error": str(e)}) diff --git a/app.py b/app.py index 9936cd2..5bbf00a 100644 --- a/app.py +++ b/app.py @@ -49,8 +49,8 @@ async def query_image( else: result = model.query(img, question) return JSONResponse(content={ - "answer": result["answer"], - "request_id": result["request_id"] + "answer": result["answer"] + # "request_id": result["request_id"] }) except Exception as e: