feat(llm): Z.AI GLM-5.3 and GLM-5.3-Flash
Nightly Build / build (push) Successful in 10s

Both are added to the Z.AI static model list with their 1M-token context
and 128K max output. GLM-5.3-Flash is natively multimodal, so it gets the
vision and video capabilities — through an `override` rule, because the
provider's `defaults: { vision: false }` already set the flag and a fill
rule would have skipped it silently.

Neither model can stop thinking (`thinking.type` only accepts "enabled"),
so they get their own reasoning rule with low/high/max and no `disabled`,
placed before the `glm-5*` family rule that would otherwise swallow them.
This commit is contained in:
Daniele
2026-09-01 21:07:13 +01:00
parent 65e0f24326
commit 4ea932ef54
3 changed files with 27 additions and 1 deletions
+13 -1
View File
@@ -145,11 +145,17 @@ providers:
- { key: api_key, label: "API Key", required: true, secret: true }
models:
# Z.AI exposes no GET /models endpoint; this mirrors the console menu.
static: [glm-5.2, glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.6, glm-4.5, glm-4-32b-0414-128k]
static: [glm-5.3, glm-5.3-flash, glm-5.2, glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.6, glm-4.5, glm-4-32b-0414-128k]
defaults: { vision: false }
base_capabilities: [function_calling]
enrich:
- { match: "*128k*", context_length: 131072 }
# GLM-5.3-Flash is the first natively multimodal GLM (image + video in).
# `mode: override` is load-bearing: `defaults.vision` already stamped
# every static model with `Some(false)`, and a fill rule skips a field
# that is already set — the flag would silently stay off.
- { match: "glm-5.3-flash*", mode: override, context_length: 1048576, max_completion_tokens: 131072, vision: true, add_capabilities: [video] }
- { match: "glm-5.3*", context_length: 1048576, max_completion_tokens: 131072 }
- { match: "glm-5*", context_length: 1048576 }
- { match: "glm-4.7*", context_length: 200000 }
- { match: "glm-4.6*", context_length: 200000 }
@@ -157,6 +163,12 @@ providers:
reasoning:
request: { kind: thinking }
modes:
# GLM-5.3 (and -Flash) cannot stop thinking: `thinking.type` only
# accepts "enabled", so the budget is picked with reasoning_effort
# alone and `disabled` is deliberately absent from the values.
- when: { models: ["glm-5.3*"] }
values: [low, high, max]
default: max
# GLM-5.2+ adds a graded effort on top of the thinking toggle.
- when: { models: ["glm-5.2*"] }
values: [disabled, minimal, low, medium, high, xhigh, max]