medgemma / app.py
keval-fst's picture
Update app.py
56f01e9 verified
import os
import requests
from fastapi import FastAPI, File, UploadFile, Form
from fastapi.responses import JSONResponse
from PIL import Image
from io import BytesIO
import base64
app = FastAPI()
HF_API_URL = "https://api-inference.huggingface.co/models/google/medgemma-27b-it"
HF_TOKEN = os.getenv("HF_TOKEN")
headers = {
"Authorization": f"Bearer {HF_TOKEN}",
"Content-Type": "application/json"
}
@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")
buffered = BytesIO()
image.save(buffered, format="JPEG")
img_str = base64.b64encode(buffered.getvalue()).decode()
payload = {
"inputs": [
{
"role": "user",
"content": [
{"type": "image", "image": img_str},
{"type": "text", "text": prompt}
]
}
]
}
response = requests.post(HF_API_URL, headers=headers, json=payload)
if response.status_code != 200:
return JSONResponse(status_code=response.status_code, content=response.json())
return {"result": response.json()[0]['generated_text']}
except Exception as e:
return JSONResponse(status_code=500, content={"error": str(e)})