dsh: add GLM-5v to model picker; image-attach routes to selected vision model (direct, no ffmpeg)

This commit is contained in:
2026-08-28 14:37:08 +10:00
parent 0853139f5f
commit 273e173359

View File

@@ -272,17 +272,20 @@ async def chat(message: Annotated[str, Form()],
session["model"] = model
hist = session["messages"]
hist.append({"role": "user", "content": message})
if use_vision:
sel = session.get("model") or ""
use_multimodal = use_vision or (sel in VISION_OVERRIDE_MODELS)
if use_multimodal:
base = VISION_BASE
key = VISION_KEY
mm_model = sel if (sel in VISION_OVERRIDE_MODELS) else VISION_MODEL
content = [{"type": "text", "text": message or ("Describe this image." if use_vision else "")}]
if use_vision:
content.append({"type": "image_url", "image_url": {"url": image}})
payload = {
"model": VISION_MODEL,
"model": mm_model,
"messages": [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": [
{"type": "text", "text": message or "Describe this image."},
{"type": "image_url", "image_url": {"url": image}},
]},
{"role": "user", "content": content},
],
"stream": True,
"temperature": 0.4,
@@ -290,7 +293,7 @@ async def chat(message: Annotated[str, Form()],
else:
base = LLM_BASE
key = LLM_KEY
active_model = session.get("model") or LLM_MODEL
active_model = sel or LLM_MODEL
if active_model not in MODEL_CHOICES:
active_model = LLM_MODEL
payload = {
@@ -404,12 +407,15 @@ async def generate_image(prompt: Annotated[str, Form()]) -> dict:
MODEL_CHOICES = ["opencode-go/deepseek-v4-flash",
"deepseek/deepseek-v4-flash",
"deepseek/deepseek-v4-pro"]
"deepseek/deepseek-v4-pro",
"z-ai/glm-5v-turbo"]
MODEL_LABELS = {
"opencode-go/deepseek-v4-flash": "Chat · opencode-go flash",
"deepseek/deepseek-v4-flash": "Reasoning · deepseek flash",
"deepseek/deepseek-v4-pro": "Coding · deepseek pro",
"z-ai/glm-5v-turbo": "Multimodal · GLM vision",
}
VISION_OVERRIDE_MODELS = {"z-ai/glm-5v-turbo"}
@app.get("/api/models")