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)})