fix(compute): GLM-5.3 系列在 anthropic 协议按官网用 output_config.effort 控制思考强度 (#120)

智谱官网(国内 coding-plan/latest-model、国际 devpack/latest-model)写明 /api/anthropic
以 thinking.type 与 output_config.effort 控制思考强度,thinking.type=enabled 一律按默认 max
处理,budget_tokens 不是控制项。两个 anthropic-messages 接入面的 GLM-5.3 系列此前只有按
OpenAI 协议文档写的 low/high/max 矩阵,客户端按 budget 形态发送:low/high 在上游都成了 max,
max(也是默认档)在客户端本机被拒绝;经 new-api 的 OpenAI 类渠道转换时 low 变成
reasoning_effort=medium,被智谱标准 API 拒绝。

- zhipu、zhipu-coding 接入面的 GLM-5.3 / 5.3-Flash / 5.3-FlashX 声明 adaptiveThinking
- GLM-5.3 系列规格加 anthropic-messages 协议 profile(V1 副本为 spec.extra.adaptiveThinking),
  覆盖经 ModelSpec 补全的云端条目
- 来源记录补国际 Coding Plan 页;按量 API Key 与 FlashX 按同一端点推定,未列入已核字段
- presetDataVersion 130
This commit is contained in:
2026-10-05 09:17:43 -07:00
committed by GitHub
parent e8122c1d77
commit 73b278df51
19 changed files with 170 additions and 35 deletions

View File

@@ -794,7 +794,11 @@ describe('真实数据全量校验', () => {
// Anthropic Messages 中转只能从 ModelSpec 补全拿到声明,预置 Provider 条目不经补全,
// 两处漏写都会回退成 budget_tokens(desirecore#2940)。Opus 4.6 / Sonnet 4.6 仍接受
// budget_tokens(仅弃用),不在强制范围内。新代际若同样拒绝 budget_tokens,先扩展这里的正则。
const adaptiveGeneration = /^claude-(?:fable|mythos)(?:$|-)|^claude-(?:opus|sonnet)-(?:[5-9]|[1-9]\d)(?:$|-)|^claude-opus-4-[78](?:$|-)|^minimax-m3-1-flash-preview$/
// GLM-5.3 系列不拒绝 budget_tokens,但智谱官网(docs.bigmodel.cn/cn/coding-plan/latest-model、
// docs.z.ai/devpack/latest-model)写明 /api/anthropic 以 thinking.type 与 output_config.effort 控制强度,
// thinking.type=enabled 一律按默认 max 处理,budget_tokens 不是控制项;不声明 adaptive,客户端发出的
// 档位在上游全部变成 max,且 max 档无法发出(desirecore 档位协商回退到 max 后在本机拒绝)。
const adaptiveGeneration = /^claude-(?:fable|mythos)(?:$|-)|^claude-(?:opus|sonnet)-(?:[5-9]|[1-9]\d)(?:$|-)|^claude-opus-4-[78](?:$|-)|^minimax-m3-1-flash-preview$|^glm-5-3(?:-flashx?)?$/
const thinkingOnlyGeneration = /^claude-(?:fable|mythos)(?:$|-)|^claude-opus-5-5(?:$|-)/
// 与客户端匹配器同口径:小写、去 vendor 前缀、统一分隔符
const normalizeId = (id) => id.toLowerCase().trim().split('/').at(-1).replace(/[._:\s]+/g, '-')