Add models caching and management functionality with corresponding API endpoints and templates
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
+22
-8
@@ -153,8 +153,9 @@ def generate():
|
||||
@login_required
|
||||
def generate_text():
|
||||
result = error = None
|
||||
token = session["access_token"]
|
||||
if request.method == "POST":
|
||||
resp = _api("POST", "/generate/text", token=session["access_token"], json={
|
||||
resp = _api("POST", "/generate/text", token=token, json={
|
||||
"model": request.form.get("model", "").strip(),
|
||||
"prompt": request.form.get("prompt", "").strip(),
|
||||
})
|
||||
@@ -162,28 +163,35 @@ def generate_text():
|
||||
result = resp.json()
|
||||
else:
|
||||
error = resp.json().get("detail", "Generation failed.")
|
||||
return render_template("generate_text.html", result=result, error=error)
|
||||
models_resp = _api("GET", "/models/", token=token,
|
||||
params={"modality": "text"})
|
||||
models = models_resp.json() if models_resp.status_code == 200 else []
|
||||
return render_template("generate_text.html", result=result, error=error, models=models)
|
||||
|
||||
|
||||
@app.route("/generate/image", methods=["GET", "POST"])
|
||||
@login_required
|
||||
def generate_image():
|
||||
result = error = None
|
||||
token = session["access_token"]
|
||||
if request.method == "POST":
|
||||
# Upload reference image if provided
|
||||
ref_file = request.files.get("reference_image")
|
||||
if ref_file and ref_file.filename:
|
||||
up_resp = _api(
|
||||
"POST", "/images/upload",
|
||||
token=session["access_token"],
|
||||
token=token,
|
||||
files={"file": (ref_file.filename,
|
||||
ref_file.stream, ref_file.content_type)},
|
||||
)
|
||||
if up_resp.status_code not in (200, 201):
|
||||
error = up_resp.json().get("detail", "Image upload failed.")
|
||||
return render_template("generate_image.html", result=result, error=error)
|
||||
models_resp = _api("GET", "/models/",
|
||||
token=token, params={"modality": "image"})
|
||||
models = models_resp.json() if models_resp.status_code == 200 else []
|
||||
return render_template("generate_image.html", result=result, error=error, models=models)
|
||||
|
||||
resp = _api("POST", "/generate/image", token=session["access_token"], json={
|
||||
resp = _api("POST", "/generate/image", token=token, json={
|
||||
"model": request.form.get("model", "").strip(),
|
||||
"prompt": request.form.get("prompt", "").strip(),
|
||||
"n": int(request.form.get("n", 1)),
|
||||
@@ -195,16 +203,19 @@ def generate_image():
|
||||
result = resp.json()
|
||||
else:
|
||||
error = resp.json().get("detail", "Generation failed.")
|
||||
return render_template("generate_image.html", result=result, error=error)
|
||||
models_resp = _api("GET", "/models/", token=token,
|
||||
params={"modality": "image"})
|
||||
models = models_resp.json() if models_resp.status_code == 200 else []
|
||||
return render_template("generate_image.html", result=result, error=error, models=models)
|
||||
|
||||
|
||||
@app.route("/generate/video", methods=["GET", "POST"])
|
||||
@login_required
|
||||
def generate_video():
|
||||
result = error = None
|
||||
token = session["access_token"]
|
||||
if request.method == "POST":
|
||||
mode = request.form.get("mode", "text")
|
||||
token = session["access_token"]
|
||||
duration_raw = request.form.get("duration_seconds", "")
|
||||
duration = int(
|
||||
duration_raw) if duration_raw.strip().isdigit() else None
|
||||
@@ -230,7 +241,10 @@ def generate_video():
|
||||
result = resp.json()
|
||||
else:
|
||||
error = resp.json().get("detail", "Generation failed.")
|
||||
return render_template("generate_video.html", result=result, error=error)
|
||||
models_resp = _api("GET", "/models/", token=token,
|
||||
params={"modality": "video"})
|
||||
models = models_resp.json() if models_resp.status_code == 200 else []
|
||||
return render_template("generate_video.html", result=result, error=error, models=models)
|
||||
|
||||
|
||||
@app.get("/generate/video/status")
|
||||
|
||||
Reference in New Issue
Block a user