IA_API / app.py
Simonc-44's picture
Update app.py
7a6bdbf verified
import uvicorn
from fastapi import FastAPI, HTTPException
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from pydantic import BaseModel
import requests
import os
import uuid
app = FastAPI()
# Token HF récupéré depuis les variables d'environnement (Secrets)
HF_TOKEN = os.environ.get("HF_TOKEN")
# NOUVELLE URL (router.huggingface.co)
API_URL = "https://router.huggingface.co/hf-inference/models/stabilityai/stable-diffusion-xl-base-1.0"
class ImageRequest(BaseModel):
prompt: str
@app.post("/generate")
async def generate_image(request: ImageRequest):
print(f"🎨 Génération (HF API) : {request.prompt}")
if not HF_TOKEN:
raise HTTPException(status_code=500, detail="Token HF manquant. Configurez le secret HF_TOKEN.")
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
payload = {"inputs": request.prompt}
try:
response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code != 200:
# On logue le contenu complet pour debug
print(f"Erreur API: {response.text}")
raise Exception(f"Erreur API HF ({response.status_code}): {response.text}")
# L'API retourne l'image binaire
image_bytes = response.content
# Sauvegarde locale pour servir l'image
filename = f"gen_{uuid.uuid4()}.png"
with open(filename, "wb") as f:
f.write(image_bytes)
# URL absolue pour le frontend
return {"image_url": f"/{filename}"}
except Exception as e:
print(f"❌ Erreur : {str(e)}")
raise HTTPException(status_code=500, detail=str(e))
@app.get("/")
async def read_index():
return FileResponse('index.html')
app.mount("/", StaticFiles(directory=".", html=True), name="static")
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)