dsh: add GLM-5v to model picker; image-attach routes to selected vision model (direct, no ffmpeg)
This commit is contained in:
22
dsh/app.py
22
dsh/app.py
@@ -272,17 +272,20 @@ async def chat(message: Annotated[str, Form()],
|
|||||||
session["model"] = model
|
session["model"] = model
|
||||||
hist = session["messages"]
|
hist = session["messages"]
|
||||||
hist.append({"role": "user", "content": message})
|
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
|
base = VISION_BASE
|
||||||
key = VISION_KEY
|
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 = {
|
payload = {
|
||||||
"model": VISION_MODEL,
|
"model": mm_model,
|
||||||
"messages": [
|
"messages": [
|
||||||
{"role": "system", "content": SYSTEM_PROMPT},
|
{"role": "system", "content": SYSTEM_PROMPT},
|
||||||
{"role": "user", "content": [
|
{"role": "user", "content": content},
|
||||||
{"type": "text", "text": message or "Describe this image."},
|
|
||||||
{"type": "image_url", "image_url": {"url": image}},
|
|
||||||
]},
|
|
||||||
],
|
],
|
||||||
"stream": True,
|
"stream": True,
|
||||||
"temperature": 0.4,
|
"temperature": 0.4,
|
||||||
@@ -290,7 +293,7 @@ async def chat(message: Annotated[str, Form()],
|
|||||||
else:
|
else:
|
||||||
base = LLM_BASE
|
base = LLM_BASE
|
||||||
key = LLM_KEY
|
key = LLM_KEY
|
||||||
active_model = session.get("model") or LLM_MODEL
|
active_model = sel or LLM_MODEL
|
||||||
if active_model not in MODEL_CHOICES:
|
if active_model not in MODEL_CHOICES:
|
||||||
active_model = LLM_MODEL
|
active_model = LLM_MODEL
|
||||||
payload = {
|
payload = {
|
||||||
@@ -404,12 +407,15 @@ async def generate_image(prompt: Annotated[str, Form()]) -> dict:
|
|||||||
|
|
||||||
MODEL_CHOICES = ["opencode-go/deepseek-v4-flash",
|
MODEL_CHOICES = ["opencode-go/deepseek-v4-flash",
|
||||||
"deepseek/deepseek-v4-flash",
|
"deepseek/deepseek-v4-flash",
|
||||||
"deepseek/deepseek-v4-pro"]
|
"deepseek/deepseek-v4-pro",
|
||||||
|
"z-ai/glm-5v-turbo"]
|
||||||
MODEL_LABELS = {
|
MODEL_LABELS = {
|
||||||
"opencode-go/deepseek-v4-flash": "Chat · opencode-go flash",
|
"opencode-go/deepseek-v4-flash": "Chat · opencode-go flash",
|
||||||
"deepseek/deepseek-v4-flash": "Reasoning · deepseek flash",
|
"deepseek/deepseek-v4-flash": "Reasoning · deepseek flash",
|
||||||
"deepseek/deepseek-v4-pro": "Coding · deepseek pro",
|
"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")
|
@app.get("/api/models")
|
||||||
|
|||||||
Reference in New Issue
Block a user