CoolFace
Apppublic

tejani/TextureAPI

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py63 linesDownload Raw Back to root
1from fastapi import FastAPI, HTTPException2from pydantic import BaseModel3import requests4import random5import os6from fastapi.responses import Response7 8app = FastAPI()9 10API_URL = f'https://api-inference.huggingface.co/models/{os.getenv("HF_MODEL")}'11headers = {'Authorization': f'Bearer {os.getenv("HF_TOKEN")}'}12timeout = 10013 14class ImageRequest(BaseModel):15    prompt: str16    negative_prompt: str = "(deformed, distorted, disfigured), poorly drawn, bad anatomy"17    steps: int = 418    cfg_scale: float = 7.019    sampler: str = "DPM++ 2M Karras"20    seed: int = -121    strength: float = 0.722 23def query(prompt: str, negative_prompt: str, steps: int, cfg_scale: float, 24          sampler: str, seed: int, strength: float):25    if not prompt:26        raise HTTPException(status_code=400, detail="Prompt is required")27 28    payload = {29        "inputs": prompt,30        "is_negative": bool(negative_prompt),31        "steps": steps,32        "cfg_scale": cfg_scale,33        "seed": seed if seed != -1 else random.randint(1, 1000000000),34        "strength": strength35    }36 37    if negative_prompt:38        payload["negative_prompt"] = negative_prompt39 40    response = requests.post(API_URL, headers=headers, json=payload, timeout=timeout)41    42    if response.status_code != 200:43        raise HTTPException(status_code=response.status_code, detail=response.text)44    45    return response.content46 47@app.post("/generate")48async def generate_image(request: ImageRequest):49    try:50        raw_data = query(51            prompt=request.prompt,52            negative_prompt=request.negative_prompt,53            steps=request.steps,54            cfg_scale=request.cfg_scale,55            sampler=request.sampler,56            seed=request.seed,57            strength=request.strength58        )59        return Response(content=raw_data, media_type="application/octet-stream")60    except HTTPException as e:61        raise e62    except Exception as e:63        raise HTTPException(status_code=500, detail=str(e))