From 4627786873811a3ca2794868d866a04a132f650d Mon Sep 17 00:00:00 2001 From: bap1106 Date: Wed, 2 Sep 2026 05:02:54 +0700 Subject: [PATCH 1/6] provider: add clf-ai-gateway (OpenAI-compatible, 9 models) OpenAI-compatible gateway on Cloudflare Workers AI upstream. Models reference lab entries via base_model; files carry only this surface's deltas: measured limits, promo pricing (matches GET /v1/public/models, no auth), per-model reasoning_effort sets enforced server-side, and text+image modalities where the lab lists more. Co-Authored-By: Claude Fable 5 --- providers/clf-ai-gateway/logo.svg | 8 +++++ .../models/deepseek-v4-flash.toml | 24 ++++++++++++++ .../models/deepseek-v4-pro.toml | 24 ++++++++++++++ .../clf-ai-gateway/models/glm-4.7-flash.toml | 25 ++++++++++++++ providers/clf-ai-gateway/models/glm-5.2.toml | 24 ++++++++++++++ .../clf-ai-gateway/models/glm-5.3-flash.toml | 29 ++++++++++++++++ providers/clf-ai-gateway/models/glm-5.3.toml | 27 +++++++++++++++ .../clf-ai-gateway/models/kimi-k2.6.toml | 29 ++++++++++++++++ .../clf-ai-gateway/models/kimi-k2.7-code.toml | 29 ++++++++++++++++ .../clf-ai-gateway/models/qwen3.8-27b.toml | 33 +++++++++++++++++++ providers/clf-ai-gateway/provider.toml | 10 ++++++ 11 files changed, 262 insertions(+) create mode 100644 providers/clf-ai-gateway/logo.svg create mode 100644 providers/clf-ai-gateway/models/deepseek-v4-flash.toml create mode 100644 providers/clf-ai-gateway/models/deepseek-v4-pro.toml create mode 100644 providers/clf-ai-gateway/models/glm-4.7-flash.toml create mode 100644 providers/clf-ai-gateway/models/glm-5.2.toml create mode 100644 providers/clf-ai-gateway/models/glm-5.3-flash.toml create mode 100644 providers/clf-ai-gateway/models/glm-5.3.toml create mode 100644 providers/clf-ai-gateway/models/kimi-k2.6.toml create mode 100644 providers/clf-ai-gateway/models/kimi-k2.7-code.toml create mode 100644 providers/clf-ai-gateway/models/qwen3.8-27b.toml create mode 100644 providers/clf-ai-gateway/provider.toml diff --git a/providers/clf-ai-gateway/logo.svg b/providers/clf-ai-gateway/logo.svg new file mode 100644 index 00000000000..24629b0df20 --- /dev/null +++ b/providers/clf-ai-gateway/logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml new file mode 100644 index 00000000000..bafaa134fa6 --- /dev/null +++ b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml @@ -0,0 +1,24 @@ +base_model = "deepseek/deepseek-v4-flash" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for deepseek-v4-flash: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.264 +output = 0.792 +cache_read = 0.008 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 1_048_576 +output = 131_072 diff --git a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml new file mode 100644 index 00000000000..ec692b8fd83 --- /dev/null +++ b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml @@ -0,0 +1,24 @@ +base_model = "deepseek/deepseek-v4-pro" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for deepseek-v4-pro: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.792 +output = 2.376 +cache_read = 0.026 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 1_048_576 +output = 131_072 diff --git a/providers/clf-ai-gateway/models/glm-4.7-flash.toml b/providers/clf-ai-gateway/models/glm-4.7-flash.toml new file mode 100644 index 00000000000..e12af55328f --- /dev/null +++ b/providers/clf-ai-gateway/models/glm-4.7-flash.toml @@ -0,0 +1,25 @@ +base_model = "zhipuai/glm-4.7-flash" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for glm-4.7-flash: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +# No cached tier for this model on this surface (public endpoint: cached_input = null); +# cached tokens, if any, bill at the input rate. +[cost] +input = 0.036 +output = 0.24 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 131_072 +output = 131_072 diff --git a/providers/clf-ai-gateway/models/glm-5.2.toml b/providers/clf-ai-gateway/models/glm-5.2.toml new file mode 100644 index 00000000000..2564394bebb --- /dev/null +++ b/providers/clf-ai-gateway/models/glm-5.2.toml @@ -0,0 +1,24 @@ +base_model = "zhipuai/glm-5.2" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for glm-5.2: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.84 +output = 2.64 +cache_read = 0.156 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 262_144 +output = 131_072 diff --git a/providers/clf-ai-gateway/models/glm-5.3-flash.toml b/providers/clf-ai-gateway/models/glm-5.3-flash.toml new file mode 100644 index 00000000000..2766a7f945e --- /dev/null +++ b/providers/clf-ai-gateway/models/glm-5.3-flash.toml @@ -0,0 +1,29 @@ +base_model = "zhipuai/glm-5.3-flash" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for glm-5.3-flash: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.09 +output = 0.3 +cache_read = 0.018 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 1_048_576 +output = 131_072 + +# Gateway accepts text + image_url parts only (no video/pdf on this surface). +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/clf-ai-gateway/models/glm-5.3.toml b/providers/clf-ai-gateway/models/glm-5.3.toml new file mode 100644 index 00000000000..176853fd274 --- /dev/null +++ b/providers/clf-ai-gateway/models/glm-5.3.toml @@ -0,0 +1,27 @@ +base_model = "zhipuai/glm-5.3" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for glm-5.3: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +# "none" is accepted and validated by the API (part of the public set); measured +# 2026-08-28: upstream may still emit some reasoning at "none" — there is no hard +# off switch, so treat "none" as minimize-thinking, not disable. +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "max"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.84 +output = 2.64 +cache_read = 0.156 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 1_048_576 +output = 131_072 diff --git a/providers/clf-ai-gateway/models/kimi-k2.6.toml b/providers/clf-ai-gateway/models/kimi-k2.6.toml new file mode 100644 index 00000000000..184050c99fd --- /dev/null +++ b/providers/clf-ai-gateway/models/kimi-k2.6.toml @@ -0,0 +1,29 @@ +base_model = "moonshotai/kimi-k2.6" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for kimi-k2.6: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.57 +output = 2.4 +cache_read = 0.096 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 262_144 +output = 131_072 + +# Gateway accepts text + image_url parts only (no video/pdf on this surface). +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml new file mode 100644 index 00000000000..3e335519e9f --- /dev/null +++ b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml @@ -0,0 +1,29 @@ +base_model = "moonshotai/kimi-k2.7-code" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for kimi-k2.7-code: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +[cost] +input = 0.57 +output = 2.4 +cache_read = 0.114 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 262_144 +output = 131_072 + +# Gateway accepts text + image_url parts only (no video/pdf on this surface). +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/clf-ai-gateway/models/qwen3.8-27b.toml b/providers/clf-ai-gateway/models/qwen3.8-27b.toml new file mode 100644 index 00000000000..e14c37511b5 --- /dev/null +++ b/providers/clf-ai-gateway/models/qwen3.8-27b.toml @@ -0,0 +1,33 @@ +base_model = "alibaba/qwen3.8-27b" + +# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — +# no alias mapping, no separate thinking-toggle field (omitting the field applies the +# gateway default). The set below is enforced server-side for qwen3.8-27b: any other value +# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns +# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). +# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "xhigh"] + +# Current promotional pricing (40% off list), USD/MTok — what the API bills today. +# Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). +# cache_read = input is intentional, not a typo: this model has no verified cached +# tier on this surface, so cached tokens bill at the input rate. The public endpoint +# shows cached_input == input for both promo and list price (270/270 nano now, +# 450/450 list) — we do not advertise a cache discount we cannot prove. +[cost] +input = 0.27 +output = 1.92 +cache_read = 0.27 + +# This gateway's serving surface, measured (context probed to the boundary; +# output verified via max_completion_tokens probes). +[limit] +context = 262_144 +output = 131_072 + +# Gateway accepts text + image_url parts only (no video/pdf on this surface). +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/clf-ai-gateway/provider.toml b/providers/clf-ai-gateway/provider.toml new file mode 100644 index 00000000000..fe3f9f783dd --- /dev/null +++ b/providers/clf-ai-gateway/provider.toml @@ -0,0 +1,10 @@ +name = "CLF AI Gateway" +env = ["CLF_AI_GATEWAY_API_KEY"] +npm = "@ai-sdk/openai-compatible" +# OpenAI-compatible gateway reselling Cloudflare Workers AI open-weight models +# (GLM, Kimi, DeepSeek, Qwen) with prepaid credits. Runs on Workers AI upstream +# by design and says so publicly: https://clfaigateway.dev/docs +# Model IDs are the gateway's canonical names (glm-5.3, kimi-k2.7-code, ...); +# the upstream @cf/... id is returned per model by GET /v1/public/models. +doc = "https://clfaigateway.dev/docs" +api = "https://api.clfaigateway.dev/v1" From 1ab2a9e0bf76b9a0c22fb0acb5f928f8c50a042e Mon Sep 17 00:00:00 2001 From: bap1106 Date: Wed, 2 Sep 2026 20:30:42 +0700 Subject: [PATCH 2/6] address review: drop 'none' from glm-5.3 advertised efforts The API still accepts 'none' (part of the public accept-set), but measured 2026-08-28 it does not reliably disable thinking upstream - so we stop advertising an off switch that does not switch off. File comment explains. Co-Authored-By: Claude Fable 5 --- providers/clf-ai-gateway/models/glm-5.3.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/providers/clf-ai-gateway/models/glm-5.3.toml b/providers/clf-ai-gateway/models/glm-5.3.toml index 176853fd274..f902388bdc0 100644 --- a/providers/clf-ai-gateway/models/glm-5.3.toml +++ b/providers/clf-ai-gateway/models/glm-5.3.toml @@ -6,12 +6,12 @@ base_model = "zhipuai/glm-5.3" # returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns # "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). # Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. -# "none" is accepted and validated by the API (part of the public set); measured -# 2026-08-28: upstream may still emit some reasoning at "none" — there is no hard -# off switch, so treat "none" as minimize-thinking, not disable. +# "none" is deliberately NOT advertised here even though the API accepts it (it is +# part of the public accept-set): measured 2026-08-28, it does not reliably disable +# thinking upstream — no hard off switch exists, so we won't promise one to clients. [[reasoning_options]] type = "effort" -values = ["none", "low", "medium", "high", "max"] +values = ["low", "medium", "high", "max"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). From 5012d8b05226459e6ac3e55b179fe2f47def8303 Mon Sep 17 00:00:00 2001 From: bap1106 Date: Wed, 2 Sep 2026 22:28:49 +0700 Subject: [PATCH 3/6] address review: advertise only effort levels with a measured distinct effect Measured on the live surface 2026-09-02: same prompt, 3 samples per level, median reasoning_tokens. Levels the API accepts but that do not change behavior are documented as aliases in each file and no longer advertised; models with no measurable graded control get reasoning_options = []. Evidence table in the PR body. Co-Authored-By: Claude Fable 5 --- .../models/deepseek-v4-flash.toml | 16 +++++++--------- .../models/deepseek-v4-pro.toml | 14 +++++++------- .../clf-ai-gateway/models/glm-4.7-flash.toml | 19 ++++++++----------- providers/clf-ai-gateway/models/glm-5.2.toml | 14 +++++++------- .../clf-ai-gateway/models/glm-5.3-flash.toml | 14 +++++++------- providers/clf-ai-gateway/models/glm-5.3.toml | 17 +++++++---------- .../clf-ai-gateway/models/kimi-k2.6.toml | 16 +++++++--------- .../clf-ai-gateway/models/kimi-k2.7-code.toml | 16 +++++++--------- .../clf-ai-gateway/models/qwen3.8-27b.toml | 14 +++++++------- 9 files changed, 64 insertions(+), 76 deletions(-) diff --git a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml index bafaa134fa6..5f27ecf7530 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml @@ -1,14 +1,12 @@ base_model = "deepseek/deepseek-v4-flash" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for deepseek-v4-flash: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high", "xhigh"] +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) → no consistent ordering; low/medium/high/xhigh are accepted but not a reliable control. +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml index ec692b8fd83..538552af4e2 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml @@ -1,14 +1,14 @@ base_model = "deepseek/deepseek-v4-pro" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for deepseek-v4-pro: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 282 / medium 214 / high 746 / xhigh 4124 → three graded behaviors; medium is an accepted alias of low. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "xhigh"] +values = ["low", "high", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-4.7-flash.toml b/providers/clf-ai-gateway/models/glm-4.7-flash.toml index e12af55328f..74b7994a803 100644 --- a/providers/clf-ai-gateway/models/glm-4.7-flash.toml +++ b/providers/clf-ai-gateway/models/glm-4.7-flash.toml @@ -1,19 +1,16 @@ base_model = "zhipuai/glm-4.7-flash" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for glm-4.7-flash: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) → no measurable graded control; low/medium/high are accepted but ignored. +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). -# No cached tier for this model on this surface (public endpoint: cached_input = null); -# cached tokens, if any, bill at the input rate. +# No cached tier for this model on this surface (public endpoint: cached_input = null). [cost] input = 0.036 output = 0.24 diff --git a/providers/clf-ai-gateway/models/glm-5.2.toml b/providers/clf-ai-gateway/models/glm-5.2.toml index 2564394bebb..7605317a6c4 100644 --- a/providers/clf-ai-gateway/models/glm-5.2.toml +++ b/providers/clf-ai-gateway/models/glm-5.2.toml @@ -1,14 +1,14 @@ base_model = "zhipuai/glm-5.2" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for glm-5.2: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 471 / medium 367 / high 356 / xhigh 666 → only xhigh is distinct; low/medium/high overlap and are accepted aliases of the default. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "xhigh"] +values = ["low", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.3-flash.toml b/providers/clf-ai-gateway/models/glm-5.3-flash.toml index 2766a7f945e..bfc2a17c8e8 100644 --- a/providers/clf-ai-gateway/models/glm-5.3-flash.toml +++ b/providers/clf-ai-gateway/models/glm-5.3-flash.toml @@ -1,14 +1,14 @@ base_model = "zhipuai/glm-5.3-flash" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for glm-5.3-flash: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 27 / medium 289 / high 31 / xhigh 295 → two behaviors: {low,high} minimal, {medium,xhigh} full. medium and high are accepted aliases. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "xhigh"] +values = ["low", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.3.toml b/providers/clf-ai-gateway/models/glm-5.3.toml index f902388bdc0..3ed6972e0bf 100644 --- a/providers/clf-ai-gateway/models/glm-5.3.toml +++ b/providers/clf-ai-gateway/models/glm-5.3.toml @@ -1,17 +1,14 @@ base_model = "zhipuai/glm-5.3" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for glm-5.3: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. -# "none" is deliberately NOT advertised here even though the API accepts it (it is -# part of the public accept-set): measured 2026-08-28, it does not reliably disable -# thinking upstream — no hard off switch exists, so we won't promise one to clients. +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 26 / medium 330 / high 32 / max 368 → two behaviors: {low,high} minimal, {medium,max} full. medium and high are accepted aliases; "none" accepted but does not disable thinking. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "max"] +values = ["low", "max"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/kimi-k2.6.toml b/providers/clf-ai-gateway/models/kimi-k2.6.toml index 184050c99fd..e220964cb3c 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.6.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.6.toml @@ -1,14 +1,12 @@ base_model = "moonshotai/kimi-k2.6" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for kimi-k2.6: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 528 / medium 577 / high 456 → flat; thinking is always on, low/medium/high accepted but ignored (matches the lab: toggle-only). +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml index 3e335519e9f..708a2a5d8e4 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml @@ -1,14 +1,12 @@ base_model = "moonshotai/kimi-k2.7-code" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for kimi-k2.7-code: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) → no reliable graded control; accepted but ignored. +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/qwen3.8-27b.toml b/providers/clf-ai-gateway/models/qwen3.8-27b.toml index e14c37511b5..164a8025cc0 100644 --- a/providers/clf-ai-gateway/models/qwen3.8-27b.toml +++ b/providers/clf-ai-gateway/models/qwen3.8-27b.toml @@ -1,14 +1,14 @@ base_model = "alibaba/qwen3.8-27b" -# Reasoning: this surface forwards only OpenAI-style `reasoning_effort`, verbatim — -# no alias mapping, no separate thinking-toggle field (omitting the field applies the -# gateway default). The set below is enforced server-side for qwen3.8-27b: any other value -# returns 400 naming this exact set (e.g. sending "max" to deepseek-v4-flash returns -# "does not accept reasoning_effort 'max'. Supported: low, medium, high, xhigh"). -# Same set is public in GET /v1/public/models -> capabilities.reasoning_efforts. +# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded +# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the +# accepted set per model (400 names it; also in GET /v1/public/models -> +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) → xhigh distinct; medium is an accepted alias of low. [[reasoning_options]] type = "effort" -values = ["low", "medium", "xhigh"] +values = ["low", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). From 36a6961b65a2611d36a7e584f5d08da2b9d3635c Mon Sep 17 00:00:00 2001 From: bap1106 Date: Wed, 2 Sep 2026 23:30:20 +0700 Subject: [PATCH 4/6] address review: values = host accept-set, dated DeepSeek base_models, measured effects documented reasoning_options.values now list exactly what this host accepts (the public capabilities.reasoning_efforts; anything else is a 400) - the client-facing control surface - with the measured per-level effect (3 samples/level medians) documented in each file and in the PR body. DeepSeek entries now reference the dated lab snapshots that match the upstream ids (deepseek-v4-flash-0731, deepseek-v4-pro-0813). Co-Authored-By: Claude Fable 5 --- .../clf-ai-gateway/models/deepseek-v4-flash.toml | 13 ++++++++----- .../clf-ai-gateway/models/deepseek-v4-pro.toml | 11 ++++++----- providers/clf-ai-gateway/models/glm-4.7-flash.toml | 11 +++++++---- providers/clf-ai-gateway/models/glm-5.2.toml | 9 +++++---- providers/clf-ai-gateway/models/glm-5.3-flash.toml | 9 +++++---- providers/clf-ai-gateway/models/glm-5.3.toml | 9 +++++---- providers/clf-ai-gateway/models/kimi-k2.6.toml | 11 +++++++---- providers/clf-ai-gateway/models/kimi-k2.7-code.toml | 11 +++++++---- providers/clf-ai-gateway/models/qwen3.8-27b.toml | 9 +++++---- 9 files changed, 55 insertions(+), 38 deletions(-) diff --git a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml index 5f27ecf7530..b14c41b1bdd 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml @@ -1,12 +1,15 @@ -base_model = "deepseek/deepseek-v4-flash" +base_model = "deepseek/deepseek-v4-flash-0731" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) → no consistent ordering; low/medium/high/xhigh are accepted but not a reliable control. -reasoning_options = [] +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) → no consistent ordering; low/medium/high/xhigh are accepted but not a reliable control. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml index 538552af4e2..ebe0b2ec2af 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml @@ -1,14 +1,15 @@ -base_model = "deepseek/deepseek-v4-pro" +base_model = "deepseek/deepseek-v4-pro-0813" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 282 / medium 214 / high 746 / xhigh 4124 → three graded behaviors; medium is an accepted alias of low. +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 282 / medium 214 / high 746 / xhigh 4124 → three graded behaviors; medium is an accepted alias of low. [[reasoning_options]] type = "effort" -values = ["low", "high", "xhigh"] +values = ["low", "medium", "high", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-4.7-flash.toml b/providers/clf-ai-gateway/models/glm-4.7-flash.toml index 74b7994a803..75132344ce8 100644 --- a/providers/clf-ai-gateway/models/glm-4.7-flash.toml +++ b/providers/clf-ai-gateway/models/glm-4.7-flash.toml @@ -3,10 +3,13 @@ base_model = "zhipuai/glm-4.7-flash" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) → no measurable graded control; low/medium/high are accepted but ignored. -reasoning_options = [] +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) → no measurable graded control; low/medium/high are accepted but ignored. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.2.toml b/providers/clf-ai-gateway/models/glm-5.2.toml index 7605317a6c4..08984385071 100644 --- a/providers/clf-ai-gateway/models/glm-5.2.toml +++ b/providers/clf-ai-gateway/models/glm-5.2.toml @@ -3,12 +3,13 @@ base_model = "zhipuai/glm-5.2" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 471 / medium 367 / high 356 / xhigh 666 → only xhigh is distinct; low/medium/high overlap and are accepted aliases of the default. +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 471 / medium 367 / high 356 / xhigh 666 → only xhigh is distinct; low/medium/high overlap and are accepted aliases of the default. [[reasoning_options]] type = "effort" -values = ["low", "xhigh"] +values = ["low", "medium", "high", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.3-flash.toml b/providers/clf-ai-gateway/models/glm-5.3-flash.toml index bfc2a17c8e8..7baf0af907f 100644 --- a/providers/clf-ai-gateway/models/glm-5.3-flash.toml +++ b/providers/clf-ai-gateway/models/glm-5.3-flash.toml @@ -3,12 +3,13 @@ base_model = "zhipuai/glm-5.3-flash" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 27 / medium 289 / high 31 / xhigh 295 → two behaviors: {low,high} minimal, {medium,xhigh} full. medium and high are accepted aliases. +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 27 / medium 289 / high 31 / xhigh 295 → two behaviors: {low,high} minimal, {medium,xhigh} full. medium and high are accepted aliases. [[reasoning_options]] type = "effort" -values = ["low", "xhigh"] +values = ["low", "medium", "high", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.3.toml b/providers/clf-ai-gateway/models/glm-5.3.toml index 3ed6972e0bf..26be99e59b6 100644 --- a/providers/clf-ai-gateway/models/glm-5.3.toml +++ b/providers/clf-ai-gateway/models/glm-5.3.toml @@ -3,12 +3,13 @@ base_model = "zhipuai/glm-5.3" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 26 / medium 330 / high 32 / max 368 → two behaviors: {low,high} minimal, {medium,max} full. medium and high are accepted aliases; "none" accepted but does not disable thinking. +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 26 / medium 330 / high 32 / max 368 → two behaviors: {low,high} minimal, {medium,max} full. medium and high are accepted aliases; "none" accepted but does not disable thinking. [[reasoning_options]] type = "effort" -values = ["low", "max"] +values = ["low", "medium", "high", "max"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/kimi-k2.6.toml b/providers/clf-ai-gateway/models/kimi-k2.6.toml index e220964cb3c..58214ac55ff 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.6.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.6.toml @@ -3,10 +3,13 @@ base_model = "moonshotai/kimi-k2.6" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 528 / medium 577 / high 456 → flat; thinking is always on, low/medium/high accepted but ignored (matches the lab: toggle-only). -reasoning_options = [] +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 528 / medium 577 / high 456 → flat; thinking is always on, low/medium/high accepted but ignored (matches the lab: toggle-only). +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml index 708a2a5d8e4..e83ebfdea7e 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml @@ -3,10 +3,13 @@ base_model = "moonshotai/kimi-k2.7-code" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) → no reliable graded control; accepted but ignored. -reasoning_options = [] +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) → no reliable graded control; accepted but ignored. +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/qwen3.8-27b.toml b/providers/clf-ai-gateway/models/qwen3.8-27b.toml index 164a8025cc0..05be96d7554 100644 --- a/providers/clf-ai-gateway/models/qwen3.8-27b.toml +++ b/providers/clf-ai-gateway/models/qwen3.8-27b.toml @@ -3,12 +3,13 @@ base_model = "alibaba/qwen3.8-27b" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) → xhigh distinct; medium is an accepted alias of low. +# capabilities.reasoning_efforts). The values below are exactly that host accept-set — +# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, +# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change +# behavior on this host: low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) → xhigh distinct; medium is an accepted alias of low. [[reasoning_options]] type = "effort" -values = ["low", "xhigh"] +values = ["low", "medium", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). From 0fee56ff62e900eef19ef8479781db648d469385 Mon Sep 17 00:00:00 2001 From: bap1106 Date: Wed, 2 Sep 2026 23:38:55 +0700 Subject: [PATCH 5/6] address review: effect-only effort values, [] where accepted levels are inert, no toggle wire field Per the latest review round: reasoning_options lists only levels with a measured distinct effect on this host (3 samples/level medians, 2026-09-02); models whose accepted levels are inert get [] with a leading comment stating that no on/off wire field is forwarded either. Accept-sets stay documented in each file and in the PR body. DeepSeek base_models keep the dated snapshots. Co-Authored-By: Claude Fable 5 --- .../clf-ai-gateway/models/deepseek-v4-flash.toml | 11 ++++------- providers/clf-ai-gateway/models/deepseek-v4-pro.toml | 9 ++++----- providers/clf-ai-gateway/models/glm-4.7-flash.toml | 11 ++++------- providers/clf-ai-gateway/models/glm-5.2.toml | 9 ++++----- providers/clf-ai-gateway/models/glm-5.3-flash.toml | 9 ++++----- providers/clf-ai-gateway/models/glm-5.3.toml | 9 ++++----- providers/clf-ai-gateway/models/kimi-k2.6.toml | 11 ++++------- providers/clf-ai-gateway/models/kimi-k2.7-code.toml | 11 ++++------- providers/clf-ai-gateway/models/qwen3.8-27b.toml | 9 ++++----- 9 files changed, 36 insertions(+), 53 deletions(-) diff --git a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml index b14c41b1bdd..757b4e67cd3 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml @@ -3,13 +3,10 @@ base_model = "deepseek/deepseek-v4-flash-0731" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) → no consistent ordering; low/medium/high/xhigh are accepted but not a reliable control. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high", "xhigh"] +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) → no consistent ordering; low/medium/high/xhigh are accepted but not a reliable control. +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml index ebe0b2ec2af..304b00620c9 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml @@ -3,13 +3,12 @@ base_model = "deepseek/deepseek-v4-pro-0813" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 282 / medium 214 / high 746 / xhigh 4124 → three graded behaviors; medium is an accepted alias of low. +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 282 / medium 214 / high 746 / xhigh 4124 → three graded behaviors; medium is an accepted alias of low. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "xhigh"] +values = ["low", "high", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-4.7-flash.toml b/providers/clf-ai-gateway/models/glm-4.7-flash.toml index 75132344ce8..74b7994a803 100644 --- a/providers/clf-ai-gateway/models/glm-4.7-flash.toml +++ b/providers/clf-ai-gateway/models/glm-4.7-flash.toml @@ -3,13 +3,10 @@ base_model = "zhipuai/glm-4.7-flash" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) → no measurable graded control; low/medium/high are accepted but ignored. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) → no measurable graded control; low/medium/high are accepted but ignored. +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.2.toml b/providers/clf-ai-gateway/models/glm-5.2.toml index 08984385071..7605317a6c4 100644 --- a/providers/clf-ai-gateway/models/glm-5.2.toml +++ b/providers/clf-ai-gateway/models/glm-5.2.toml @@ -3,13 +3,12 @@ base_model = "zhipuai/glm-5.2" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 471 / medium 367 / high 356 / xhigh 666 → only xhigh is distinct; low/medium/high overlap and are accepted aliases of the default. +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 471 / medium 367 / high 356 / xhigh 666 → only xhigh is distinct; low/medium/high overlap and are accepted aliases of the default. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "xhigh"] +values = ["low", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.3-flash.toml b/providers/clf-ai-gateway/models/glm-5.3-flash.toml index 7baf0af907f..bfc2a17c8e8 100644 --- a/providers/clf-ai-gateway/models/glm-5.3-flash.toml +++ b/providers/clf-ai-gateway/models/glm-5.3-flash.toml @@ -3,13 +3,12 @@ base_model = "zhipuai/glm-5.3-flash" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 27 / medium 289 / high 31 / xhigh 295 → two behaviors: {low,high} minimal, {medium,xhigh} full. medium and high are accepted aliases. +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 27 / medium 289 / high 31 / xhigh 295 → two behaviors: {low,high} minimal, {medium,xhigh} full. medium and high are accepted aliases. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "xhigh"] +values = ["low", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/glm-5.3.toml b/providers/clf-ai-gateway/models/glm-5.3.toml index 26be99e59b6..3ed6972e0bf 100644 --- a/providers/clf-ai-gateway/models/glm-5.3.toml +++ b/providers/clf-ai-gateway/models/glm-5.3.toml @@ -3,13 +3,12 @@ base_model = "zhipuai/glm-5.3" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 26 / medium 330 / high 32 / max 368 → two behaviors: {low,high} minimal, {medium,max} full. medium and high are accepted aliases; "none" accepted but does not disable thinking. +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 26 / medium 330 / high 32 / max 368 → two behaviors: {low,high} minimal, {medium,max} full. medium and high are accepted aliases; "none" accepted but does not disable thinking. [[reasoning_options]] type = "effort" -values = ["low", "medium", "high", "max"] +values = ["low", "max"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/kimi-k2.6.toml b/providers/clf-ai-gateway/models/kimi-k2.6.toml index 58214ac55ff..e220964cb3c 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.6.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.6.toml @@ -3,13 +3,10 @@ base_model = "moonshotai/kimi-k2.6" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 528 / medium 577 / high 456 → flat; thinking is always on, low/medium/high accepted but ignored (matches the lab: toggle-only). -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 528 / medium 577 / high 456 → flat; thinking is always on, low/medium/high accepted but ignored (matches the lab: toggle-only). +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml index e83ebfdea7e..708a2a5d8e4 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml @@ -3,13 +3,10 @@ base_model = "moonshotai/kimi-k2.7-code" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) → no reliable graded control; accepted but ignored. -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) → no reliable graded control; accepted but ignored. +reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). diff --git a/providers/clf-ai-gateway/models/qwen3.8-27b.toml b/providers/clf-ai-gateway/models/qwen3.8-27b.toml index 05be96d7554..164a8025cc0 100644 --- a/providers/clf-ai-gateway/models/qwen3.8-27b.toml +++ b/providers/clf-ai-gateway/models/qwen3.8-27b.toml @@ -3,13 +3,12 @@ base_model = "alibaba/qwen3.8-27b" # Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded # (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the # accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values below are exactly that host accept-set — -# what a client can send without a 400. Measured effect per level (same prompt, 3 samples, -# median reasoning_tokens, 2026-09-02) so nobody has to guess which levels actually change -# behavior on this host: low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) → xhigh distinct; medium is an accepted alias of low. +# capabilities.reasoning_efforts). The values advertised below are the subset with a +# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens +# (2026-09-02): low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) → xhigh distinct; medium is an accepted alias of low. [[reasoning_options]] type = "effort" -values = ["low", "medium", "xhigh"] +values = ["low", "xhigh"] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. # Live source: GET /v1/public/models (nano-USD per token; /1000 = USD/MTok). From e09a1a044fd4dbdcf0e6a009872c9fa2d2337746 Mon Sep 17 00:00:00 2001 From: bap1106 Date: Wed, 2 Sep 2026 23:40:31 +0700 Subject: [PATCH 6/6] =?UTF-8?q?review:=20leading=20wire=20comments=20?= =?UTF-8?q?=E2=80=94=20accept-set=20per=20model,=20no=20toggle=20field=20f?= =?UTF-8?q?orwarded,=20measured=20effects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clf-ai-gateway/models/deepseek-v4-flash.toml | 13 +++++++------ .../clf-ai-gateway/models/deepseek-v4-pro.toml | 12 ++++++------ providers/clf-ai-gateway/models/glm-4.7-flash.toml | 13 +++++++------ providers/clf-ai-gateway/models/glm-5.2.toml | 12 ++++++------ providers/clf-ai-gateway/models/glm-5.3-flash.toml | 12 ++++++------ providers/clf-ai-gateway/models/glm-5.3.toml | 12 ++++++------ providers/clf-ai-gateway/models/kimi-k2.6.toml | 13 +++++++------ providers/clf-ai-gateway/models/kimi-k2.7-code.toml | 13 +++++++------ providers/clf-ai-gateway/models/qwen3.8-27b.toml | 12 ++++++------ 9 files changed, 58 insertions(+), 54 deletions(-) diff --git a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml index 757b4e67cd3..1d0376385c4 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-flash.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-flash.toml @@ -1,11 +1,12 @@ base_model = "deepseek/deepseek-v4-flash-0731" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) → no consistent ordering; low/medium/high/xhigh are accepted but not a reliable control. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for deepseek-v4-flash: low, medium, high, xhigh (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 563 / medium 242 / high 199 / xhigh 226 (xhigh samples 1210/226/186) -> no consistent ordering; the accepted levels are not a reliable control. +# Accepted levels are inert and no toggle is forwarded -> no real caller control here. reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. diff --git a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml index 304b00620c9..6406e769496 100644 --- a/providers/clf-ai-gateway/models/deepseek-v4-pro.toml +++ b/providers/clf-ai-gateway/models/deepseek-v4-pro.toml @@ -1,11 +1,11 @@ base_model = "deepseek/deepseek-v4-pro-0813" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 282 / medium 214 / high 746 / xhigh 4124 → three graded behaviors; medium is an accepted alias of low. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for deepseek-v4-pro: low, medium, high, xhigh (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 282 / medium 214 / high 746 / xhigh 4124 -> three graded behaviors; medium is an inert alias of low. [[reasoning_options]] type = "effort" values = ["low", "high", "xhigh"] diff --git a/providers/clf-ai-gateway/models/glm-4.7-flash.toml b/providers/clf-ai-gateway/models/glm-4.7-flash.toml index 74b7994a803..e101460c46e 100644 --- a/providers/clf-ai-gateway/models/glm-4.7-flash.toml +++ b/providers/clf-ai-gateway/models/glm-4.7-flash.toml @@ -1,11 +1,12 @@ base_model = "zhipuai/glm-4.7-flash" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) → no measurable graded control; low/medium/high are accepted but ignored. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for glm-4.7-flash: low, medium, high (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 1294 / medium 1451 / high 567 with overlapping spreads (high samples 1778/567/192) -> no measurable graded control; the accepted levels are inert. +# Accepted levels are inert and no toggle is forwarded -> no real caller control here. reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. diff --git a/providers/clf-ai-gateway/models/glm-5.2.toml b/providers/clf-ai-gateway/models/glm-5.2.toml index 7605317a6c4..621a658f352 100644 --- a/providers/clf-ai-gateway/models/glm-5.2.toml +++ b/providers/clf-ai-gateway/models/glm-5.2.toml @@ -1,11 +1,11 @@ base_model = "zhipuai/glm-5.2" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 471 / medium 367 / high 356 / xhigh 666 → only xhigh is distinct; low/medium/high overlap and are accepted aliases of the default. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for glm-5.2: low, medium, high, xhigh (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 471 / medium 367 / high 356 / xhigh 666 -> only xhigh is distinct; low/medium/high overlap (medium/high are inert aliases of low). [[reasoning_options]] type = "effort" values = ["low", "xhigh"] diff --git a/providers/clf-ai-gateway/models/glm-5.3-flash.toml b/providers/clf-ai-gateway/models/glm-5.3-flash.toml index bfc2a17c8e8..768e3379a8e 100644 --- a/providers/clf-ai-gateway/models/glm-5.3-flash.toml +++ b/providers/clf-ai-gateway/models/glm-5.3-flash.toml @@ -1,11 +1,11 @@ base_model = "zhipuai/glm-5.3-flash" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 27 / medium 289 / high 31 / xhigh 295 → two behaviors: {low,high} minimal, {medium,xhigh} full. medium and high are accepted aliases. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for glm-5.3-flash: low, medium, high, xhigh (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 27 / medium 289 / high 31 / xhigh 295 -> two behaviors: {low,high} minimal, {medium,xhigh} full; medium and high are inert aliases. [[reasoning_options]] type = "effort" values = ["low", "xhigh"] diff --git a/providers/clf-ai-gateway/models/glm-5.3.toml b/providers/clf-ai-gateway/models/glm-5.3.toml index 3ed6972e0bf..df4e8416e1f 100644 --- a/providers/clf-ai-gateway/models/glm-5.3.toml +++ b/providers/clf-ai-gateway/models/glm-5.3.toml @@ -1,11 +1,11 @@ base_model = "zhipuai/glm-5.3" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 26 / medium 330 / high 32 / max 368 → two behaviors: {low,high} minimal, {medium,max} full. medium and high are accepted aliases; "none" accepted but does not disable thinking. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for glm-5.3: none, low, medium, high, max (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 26 / medium 330 / high 32 / max 368 -> two behaviors: {low,high} minimal, {medium,max} full; medium and high are inert aliases; "none" is accepted but does not disable thinking, so it is not advertised. [[reasoning_options]] type = "effort" values = ["low", "max"] diff --git a/providers/clf-ai-gateway/models/kimi-k2.6.toml b/providers/clf-ai-gateway/models/kimi-k2.6.toml index e220964cb3c..4851397b997 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.6.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.6.toml @@ -1,11 +1,12 @@ base_model = "moonshotai/kimi-k2.6" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 528 / medium 577 / high 456 → flat; thinking is always on, low/medium/high accepted but ignored (matches the lab: toggle-only). +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for kimi-k2.6: low, medium, high (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 528 / medium 577 / high 456 -> flat; thinking is always on and the accepted levels are inert (matches the lab: toggle-only, and no toggle is forwarded here). +# Accepted levels are inert and no toggle is forwarded -> no real caller control here. reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. diff --git a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml index 708a2a5d8e4..40e7351919c 100644 --- a/providers/clf-ai-gateway/models/kimi-k2.7-code.toml +++ b/providers/clf-ai-gateway/models/kimi-k2.7-code.toml @@ -1,11 +1,12 @@ base_model = "moonshotai/kimi-k2.7-code" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) → no reliable graded control; accepted but ignored. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for kimi-k2.7-code: low, medium, high (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 141 / medium 155 / high 283 with overlapping spreads (high 207/283/426 vs medium 210/155/136) -> no reliable graded control; accepted levels are inert. +# Accepted levels are inert and no toggle is forwarded -> no real caller control here. reasoning_options = [] # Current promotional pricing (40% off list), USD/MTok — what the API bills today. diff --git a/providers/clf-ai-gateway/models/qwen3.8-27b.toml b/providers/clf-ai-gateway/models/qwen3.8-27b.toml index 164a8025cc0..49f96284d3d 100644 --- a/providers/clf-ai-gateway/models/qwen3.8-27b.toml +++ b/providers/clf-ai-gateway/models/qwen3.8-27b.toml @@ -1,11 +1,11 @@ base_model = "alibaba/qwen3.8-27b" -# Reasoning control on this surface: only OpenAI-style `reasoning_effort` is forwarded -# (verbatim, no alias mapping, no separate thinking toggle). The gateway validates the -# accepted set per model (400 names it; also in GET /v1/public/models -> -# capabilities.reasoning_efforts). The values advertised below are the subset with a -# MEASURED distinct effect — same prompt, 3 samples per level, median reasoning_tokens -# (2026-09-02): low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) → xhigh distinct; medium is an accepted alias of low. +# Wire: only OpenAI-style `reasoning_effort` is forwarded, verbatim. No on/off toggle +# field is forwarded on this surface, so there is no "toggle" option to expose. +# Host accept-set for qwen3.8-27b: low, medium, xhigh (anything else -> 400 naming this set; public +# in GET /v1/public/models -> capabilities.reasoning_efforts). Only the levels with a +# MEASURED distinct effect are advertised — same prompt, 3 samples per level, median +# reasoning_tokens, 2026-09-02: low 138 / medium 166 / xhigh 245 (every xhigh sample above every low sample) -> xhigh distinct; medium is an inert alias of low. [[reasoning_options]] type = "effort" values = ["low", "xhigh"]