File size: 997 Bytes
3afe1f0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
from fastapi import FastAPI, File, UploadFile, Form
from fastapi.responses import JSONResponse
from transformers import pipeline
from io import BytesIO
from PIL import Image
app = FastAPI()
# Load pipeline once
pipe = pipeline("image-text-to-text", model="google/medgemma-27b-it")
@app.get("/")
def root():
return {"message": "MedGemma Image-to-Text API running"}
@app.post("/analyze/")
async def analyze_image(prompt: str = Form(...), file: UploadFile = File(...)):
try:
image_data = await file.read()
image = Image.open(BytesIO(image_data)).convert("RGB")
response = pipe([
{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": prompt}
]
}
])
return {"result": response[0]['generated_text']}
except Exception as e:
return JSONResponse(status_code=500, content={"error": str(e)})
|