import os import requests from flask import Flask, request, send_file, jsonify, render_template from io import BytesIO app = Flask(__name__, static_folder=".", template_folder=".") HF_API_KEY = os.environ.get("HF_API_KEY") if not HF_API_KEY: raise ValueError("HF_API_KEY not set in environment variables") @app.route("/") def index(): return render_template("index.html") @app.route("/generate", methods=["POST"]) def generate(): data = request.json prompt = data.get("prompt", "") model = data.get("model", "stabilityai/stable-diffusion-xl-base-1.0") if not prompt.strip(): return jsonify({"error": "Prompt cannot be empty"}), 400 headers = {"Authorization": f"Bearer {HF_API_KEY}"} payload = {"inputs": prompt} try: response = requests.post( f"https://api-inference.huggingface.co/models/{model}", headers=headers, json=payload, timeout=120 ) except requests.exceptions.RequestException as e: return jsonify({"error": str(e)}), 500 if response.status_code != 200: return jsonify({"error": response.text}), response.status_code return send_file(BytesIO(response.content), mimetype="image/png") if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)