Spaces:
Sleeping
Sleeping
File size: 1,939 Bytes
13d012b 52106ca 13d012b 985d87b 13d012b 52106ca 89f7aa3 52106ca 13d012b 985d87b 89f7aa3 13d012b 985d87b 52106ca 985d87b 52106ca 985d87b 89f7aa3 985d87b 52106ca 13d012b 985d87b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | from flask import Flask, request, jsonify, send_from_directory
import requests
import os
app = Flask(__name__, static_folder="static")
# Your Gradio share link (no trailing slash)
GRADIO_SERVER_URL = os.getenv("GRADIO_SERVER_URL", "https://e35e92eb80591306dc.gradio.live").rstrip("/")
@app.route("/")
def index():
return send_from_directory(".", "index.html")
@app.route("/static/<path:filename>")
def static_files(filename):
return send_from_directory(app.static_folder, filename)
@app.route("/generate", methods=["POST"])
def generate():
body = request.get_json(force=True) or {}
prompt = str(body.get("prompt", "")).strip()
if not prompt:
return jsonify({"error": "prompt is required"}), 400
# Optional generation params with sensible defaults
max_new_tokens = int(body.get("max_new_tokens", 200))
temperature = float(body.get("temperature", 0.9))
top_p = float(body.get("top_p", 0.95))
rep_penalty = float(body.get("repetition_penalty", 1.2))
try:
resp = requests.post(
f"{GRADIO_SERVER_URL}/gradio_api/run/predict",
json={
"data": [prompt, max_new_tokens, temperature, top_p, rep_penalty],
"fn_index": 0,
},
timeout=60,
)
resp.raise_for_status()
generated_text = resp.json()["data"][0]
except requests.exceptions.Timeout:
return jsonify({"error": "Inference timed out"}), 504
except requests.exceptions.RequestException as e:
return jsonify({"error": "Inference failed", "details": str(e)}), 502
except (KeyError, IndexError) as e:
return jsonify({"error": "Unexpected response from model server", "details": str(e)}), 502
return jsonify({"generated_text": generated_text, "prompt": prompt})
if __name__ == "__main__":
port = int(os.getenv("PORT", 7890))
app.run(host="0.0.0.0", port=port) |