Spaces:
Sleeping
Sleeping
| 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") | |
| def index(): | |
| return render_template("index.html") | |
| 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) | |