big-AGI 通义千问模型目录维护指南:基于官方定价与实时探测的 Alibaba 模型定义更新工作流
【免费下载链接】big-AGIAI suite powered by state-of-the-art models and providing advanced AI/AGI functions. Includes AI personas, AGI functions, world-class Beam multi-model chats, text-to-image, voice, response streaming, code highlighting and execution, PDF import, presets for developers, much more. Deploy on-prem or in the cloud.项目地址: https://gitcode.com/GitHub_Trending/bi/big-AGI
导读
big-AGI 通过 src/modules/llms/server/openai/models/alibaba.models.ts 维护阿里云 Model Studio(DashScope 国际版)全量聊天模型的手工目录:每个模型的上下文窗口、输出上限、思考(thinking)控制、能力接口与分层定价都沉淀在该文件中,供服务端模型列表接口与客户端模型选择器共用。本文基于仓库中的维护命令文档,完整还原"从官方文档取证 → 交叉校验 → 实时端点探测 → 落库为源码定义"的更新工作流,并深入剖析alibaba.models.ts的代码骨架,使读者既能照单执行一次完整的模型目录巡检,也能理解每一条价格、每一个开关背后的证据链与源码语义。
一、任务定位:这条维护命令在做什么
在.claude/commands/llms/命令家族中,update-models-alibaba.md对应阿里云(通义千问 / Qwen)厂商的模型目录更新。命令的核心动作非常聚焦:
- 唯一写入目标:
src/modules/llms/server/openai/models/alibaba.models.ts(模型定义文件); - 只读上下文:
src/modules/llms/server/llm.server.types.ts(模型描述 Schema)与src/modules/llms/server/models.mappings.ts(手工映射工具函数),仅用于理解字段含义与映射语义,不允许擅自修改; - 纪律约束:不在模型文件之外做无关改动,最小化空白与注释变动,保留注释便于 diff 评审,并对坏链或异常内容打标记。
从仓库现状看,该文件是 660 行的手工策展(curated)清单,注释里逐次记录了 2026-08-06 至 2026-09-02 的多轮巡检结论,是"官方文档 + OpenRouter 端点 + 实时探测"三方交叉验证的产物,本文即以此证据链为纲展开。
二、数据来源体系:五层官方证据
命令文档要求以阿里云 Model Studio 官方文档为第一证据源,共五个页面,各自承担不同角色:
| 数据源 | 提供的信息 | 局限 |
|---|---|---|
| 模型列表页 | 在售模型全集、推荐模型 | 滞后新发布数周,新模型可能已在 API 上线但列表缺席 |
| 国际/新加坡价格表(USD / 百万 token) | 各地区、各模型的输入/输出单价与分层价格 | 不含 max input / max output / 最大 CoT 与按模型缓存命中价 |
单模型详情页(模型 id 中的.换为-) | 唯一的 max input / max output / 最大 CoT 来源,以及该模型专属的缓存命中价 | 可能整体缺失某些地区章节 |
| 上下文缓存计费规则页 | 缓存命中(cache-hit)计费规则 | 是规则而非单模型数字 |
| 计费指南页 | 计费总体框架、区域差异 | 与价格表互为补充 |
命令文档特别提醒两个容易误判的坑:
- 文档永远滞后于 API:一个新模型可以已经在 API 上真实可用,却同时缺席"模型列表"与"价格表"两张页面;
- 地区缺失 ≠ 不可用:例如 qwen3.7-max / qwen3.7-flash 的模型页没有新加坡章节,但价格表在新加坡区给出了定价,因此"某模型页缺某地区"不能当作该地区不提供该模型的证据。
alibaba.models.ts的头部注释印证了这一证据体系——"Sources (verified 2026-09-02 against the live /v1/models list + docs)",并明确说明每个模型页是 caps(容量上限)与缓存命中价的唯一权威来源,而价格表会遗漏这两项。
三、抓取官方文档:curl 命令行实操
命令文档给出了无浏览器抓取方法:使用curl -L -A "Mozilla/5.0 ..."即可拿到完整的服务端渲染 HTML(表格直接内嵌在 HTML 中),随后剥离<script>标签并把<tr>/<td>转换为纯文本即可得到可比较的表格数据。
实操要点(命令示意,具体 URL 从官方文档入口获取,此处以占位符表示):
# 抓取模型列表 / 价格表等官方文档页,伪造 UA 以获得完整服务端渲染内容 curl -L -A "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" -o models.html "<MODEL_STUDIO_MODELS_URL>" curl -L -A "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" -o pricing.html "<MODEL_STUDIO_PRICING_URL>" # 剥离 <script> 块,并将表格行转换为纯文本,便于 diff 与对照 sed -E 's/<script[^>]*>[^<]*<\/script>//g' models.html \ | sed -E 's/<\/tr>/\n/g; s/<\/t[dh]>/\t/g; s/<[^>]+>//g'这套流程的价值在于可重复、可 diff:把每一次巡检的解析结果留存下来,就能用diff精确看出价格表/模型列表在两周窗口内的新增行、下架行与调价行,与源码注释中"row added by 2026-09-02""no price drift"这类结论一一对应。
四、OpenRouter 作为决胜手段:无需密钥的交叉验证
当官方文档滞后或缺失时,命令文档指定 OpenRouter 的 Alibaba 端点作为决胜证据源——不需要任何 API Key:
curl -s "https://openrouter.ai/api/v1/models/qwen/<id>/endpoints"该响应中的Alibaba端点正是阿里云自营的 passthrough 通道,携带的信息包括:
- 精确的国际版分层边界:
pricing.overrides[].min_prompt_tokens即各输入 token 层级的边界值; input_cache_read(缓存命中输入价);max_completion_tokens、max_prompt_tokens;- 模态(modality)字符串。
它往往是刚发布模型唯一公开的国际版价格。源码中大量模型正是先由 OpenRouter 端点确认价格与容量、后续再由官方模型页反向确认的——例如 qwen3.8-2.4t-a95b 的注释写道:"its model page (published 2026-08-13), the Intl price table (row added by 2026-09-02) and Alibaba's OpenRouter endpoint agree: $2/$6..."。
使用 OpenRouter 时有一个必须警惕的差异:pricing.discount/ promo 折扣可能导致 OpenRouter 展示促销价,而alibaba.models.ts记录的是列表价(官方价格表会用 "List price $X Limited-time N% off" 标注此类促销)。因此当两者不一致时,以官方价格表标记的列表价为准。
回退方案:若上述渠道均被拦截,命令文档允许退而求其次——搜索 "alibaba model studio latest pricing"、"alibaba latest models"、"qwen models pricing",或在 GitHub 上搜索最新模型价格与上下文窗口数据,但这类二手证据应标记为低置信度,待官方页面更新后复核。
五、实时端点探测:以 DashScope 线上 API 为准绳
除了文档与 OpenRouter,命令文档还定义了一条"活体证据"链路:本地.env.api-keys文件中的ALIBABA_API_KEY(DashScope 密钥),用于直连国际版 DashScope 的 OpenAI 兼容端点,扫描模型列表作为"什么新上线/什么可用"的地面真相:
curl "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/models" \ -H "Authorization: Bearer $ALIBABA_API_KEY"⚠️ 密钥纪律:
ALIBABA_API_KEY只允许在本地 shell 变量中使用,绝不提交、不回显。
该列表只携带id / created / owned_by,没有定价与容量,因此两个关键上限需要低成本探测/chat/completions:
- 输出上限探测:发送
max_tokens: 999999,服务端会返回形如Range of max_tokens should be [1, N]的错误,N即为该参数接受的上界;注意enable_thinking开/关时N可能不同; - 输入上限探测:发送一个超长 prompt,服务端返回
Range of input length should be [1, N]。
命令文档对探测结果给出了一条重要方法论警告:探测到的N是被接受的参数范围,不是真实输出上限,它是"宽松"的。典型例子是 qwen3.7-flash——探测接受 131072(128K),但模型页与 OpenRouter 都将其真实上限标为 65536(64K)。因此决策规则是:当文档/OpenRouter 与探测结果不一致时,优先采纳相互一致的文档/OpenRouter 值,探测仅作为新模型的廉价初筛信号。
探测还有两个实操陷阱:
- 免费额度(free-tier quota)按模型逐项消耗,耗尽后会掩盖探测结果(返回配额错误而非范围错误),需要甄别错误类型;
- 某些模型对
enable_thinking有限制,如 qwen3.8-2.4t-a95b 拒绝enable_thinking: false(源码注释记录:"the value of the enable_thinking parameter is restricted to True"),此时必须按"思考常开"建模。
六、源码骨架:alibaba.models.ts的结构与字段语义
6.1 三个导出函数与一个常量清单
该文件的核心资产是_knownAlibabaChatModels——一个由llmsDefineManualMappings()定义的编译期类型追踪的手工映射数组(models.mappings.ts 中llmsDefineManualMappings = llmsDefineModels<ManualMappings[number]>(),其const推断使typeof _knownAlibabaChatModels[number]['idPrefix']可以直接派生模型 id 联合类型LlmsAlibabaModelId)。三个导出函数各自承担职责:
alibabaModelFilter(modelId):列表入口过滤器,决定哪些线上 id 可以进入目录;alibabaModelToModelDescription(id, created?):把线上 id 转换为完整模型描述,优先命中手工映射,否则走 fallback;alibabaModelSort(a, b):列表排序,保证策展模型在前、同族快照按日期倒序。
6.2 模型描述 Schema 的字段语义
手工映射的每个条目最终都会落入 llm.server.types.ts 中ModelDescription_schema的字段体系,alibaba.models.ts实际用到的主要字段:
| 字段 | 类型 | 语义(结合源码注释) |
|---|---|---|
idPrefix | string | 模型 id 前缀,fromManualMapping会做精确匹配 → 最长前缀匹配 → fallback 三级解析 |
label | string | 展示名 |
description | string | 模型能力简介(模态、上下文、思考、定位) |
contextWindow | int | 上下文窗口(token),来自模型页/探测 |
maxCompletionTokens | int | 输出上限,亦是客户端llmResponseTokens的初始值 |
interfaces | enum[] | LLM_IF_OAI_Chat(对话)/_Fn(工具)/_Vision(视觉)/_Reasoning(思考)等能力位 |
parameterSpecs | array | 厂商参数规格,见下节"思考控制" |
chatPrice | object | 定价结构:常量价或[{upTo, price}]分层价 +cache.read缓存命中价 |
pubDate | 'YYYYMMDD' | 官方公开发布日期(编辑字段) |
benchmark.cbaElo | int | LMArena 竞技场 ELO(编辑字段,来源为公开榜单) |
hidden | boolean | 默认隐藏(不入选推荐/快速选择,仍可在管理列表中勾选) |
6.3 分层定价:输入 token 数驱动
源码注释明确:阿里云采用按请求输入 token 数分层定价,输入价与输出价都会随层上浮("Alibaba uses tiered pricing keyed on the request's INPUT token count (both input and output prices step up)")。典型如 qwen3.7-plus:
chatPrice: { input: [{ upTo: 256000, price: 0.40 }, { upTo: null, price: 1.20 }], output: [{ upTo: 256000, price: 1.60 }, { upTo: null, price: 4.80 }], },qwen3.7-flash 则是三层的例子(32K / 256K / 无上限),且其分层边界(min_prompt_tokens)与 OpenRouter 端点的pricing.overrides逐一对齐。而 qwen3.8-flash 是扁平定价、无分层的代表——注释特意强调 "Flat pricing - no input-length tiers, unlike qwen3.7-flash"。
6.4 缓存命中价:不可套用统一比例的例外处理
命令文档给出的通用规则是:缓存命中率是"每模型族"对输入价的固定比例,跨地区稳定——Qwen/Kimi 为 20%、GLM 为 25%、deepseek-v4-pro 约 8%。实操方法:从任意地区的模型页读取命中价,套用到新加坡输入价上。
但源码注释显示规则存在大量例外,必须在模型页逐项确认而非机械套用:
- qwen3.8-max 的缓存命中价是模型页专属值
cache.read: 0.25("cache-hit input per the model page (not the 20% rule)"); - glm-5.2 的隐式命中率在 2026-09-02 巡检中被修正为 20%(原 25%),且 Global 区仍打印 25%(基于旧价 1.10);
- kimi-k3 的新加坡命中价为 0.30,是输入价 3.00 的 10%——"not the usual Kimi 20%";
- deepseek-v4-pro-0813 走"高峰/低谷"(peak/off-peak)计费,源码携带高峰卡(峰值 1.32/3.96、命中 0.132;低谷减半),这是 2026-08-17 起与 DeepSeek 直连一致的新计费模式。
6.5 转售模型:清晰标注"经 Model Studio 提供"
文件末尾专门划分"Alibaba 转售的第三方模型"区块(DeepSeek V4 Pro/Flash、GLM-5.2/5.2-Fast/5.1、Kimi K3/K2.7 Code、DeepSeek V3.2),label 统一带(Alibaba)后缀与官方原生厂商(deepseek.models.ts、zai.models.ts、moonshot.models.ts)区分,并注明"Alibaba 自己的定价"。此类模型还承载了一个阿里云特有的语义差异:DashScope 上带日期的快照与无日期 id 并列存在,而无日期 id 实际服务哪个 checkpoint 并无文档可查(Alibaba 不像对 Qwen 那样打印 "Currently equivalent to" 备注),因此 deepseek-v4-pro-0813 作为唯一可固定的 GA 路由被策展为可见。
七、思考(Thinking)控制:parameterSpecs与 Alibaba 方言
这是本文件最具技术含量的部分。big-AGI 通过parameterSpecs的llmVndMiscEffort枚举把"思考强度"抽象为统一 UI,再在alibaba方言层翻译为 DashScope 的实际请求参数(enable_thinking与reasoning_effort,实现于 OpenAI 方言的 chatCompletions 转换层,源码注释可证)。
文件中共有 6 组参数规格,每一组都经过实机消融(live-ablated)验证:
| 规格常量 | 枚举值 | 适用对象与依据 |
|---|---|---|
_PS_Thinking | ['none', 'high'] | 二进制enable_thinking开关:Off(none)/ On(high)/ 默认不传;用于 qwen3.7/3.6 系、DeepSeek V3.2、GLM-5.2-fast 等 |
_PS_DeepSeekEffort | ['none', 'low', 'high', 'max'] | DashScope 托管的 DeepSeek V4:reasoning_effort有与 DeepSeek 直连相同的 3 档模板(隐藏前导指纹验证),flash 档把 max 折叠到 high |
_PS_GlmEffort | ['none', 'low', 'max'] | GLM-5.2:native 映射 low=medium=high(约 550-660 token 缩减档)、xhigh=max=默认(约 1.0-1.1K),“high”会退化为纯enable_thinking:true,故剔除 |
_PS_Qwen38Effort | ['none', 'low', 'max'] | Qwen3.8 系首个真reasoning_effort阶梯(默认 xhigh):hidden-preamble 指纹分组为 off{none} / {medium} / reduced{low,minimal} / top{high,xhigh,max,unset};'medium' 无法表达、'high' 重复默认,故只留三值 |
_PS_Qwen38EffortAlwaysOn | ['low', 'max'] | qwen3.8-2.4t-a95b:开放权重 id 拒绝enable_thinking:false,提供 Off 会直接 400 |
_PS_KimiEffort | ['none', 'low', 'max'] | DashScope 托管的 Kimi K3:指纹分组 off{none,minimal} / reduced{low,medium,high} / top{xhigh,max,unset} |
与之对应的模型接口位LLM_IF_OAI_Reasoning只在模型支持思考时出现;Kimi K2.7 Code 则是"思考常开"的特例——只有 Reasoning 标志、无思考开关。
八、过滤、隐藏与排序:目录的守门策略
8.1 拒绝列表:退役老线直接清除
_ALIBABA_DENY_LIST把 2025 时代的退役聊天线(qwq-plus、qvq-max、qwen-coder-plus、qwen2.5 时代 VL 线、2025 开放权重密集/MoE 模型、qwen3-next-80b-a3b 预览对等)整体剔除,匹配规则为"完全相等或deny + '-'前缀",被拒 id 永远不会进入列表。
8.2 过滤器:只留聊天/文本生成
alibabaModelFilter在拒绝列表之后,用一组子串模式排除非聊天服务:text-embedding(嵌入)、image/wan(图像生成/编辑)、omni/qwen3-tts/asr/s2s(音视频)、livetranslate/qwen-mt-(翻译)、ocr/captioner、character(角色扮演变体)、cosyvoice/-vc-/-vd-/-slp(语音)、ccai/tingwu(客服/转写服务)、以及qwen2-7b等遗留小模型。
8.3 隐藏策略:未策展模型一律隐藏
alibabaModelToModelDescription的 fallback 分支对未入册 id 生成 "Alibaba model (not yet curated)" 的占位描述,并默认hidden: true;随后用正则二次拦截日期快照(-\d{4}-\d{2}-\d{2}或-\d{4}结尾)与-preview/-latest别名。唯一例外是逐字策展的快照(如deepseek-v4-pro-0813、qwen3.8-max-0902)——它们是显式的编辑选择,保留自己的hidden位。隐藏模型的 label 也会被_alibabaFormatNewLabel统一转成 Title Case(如qwen3-coder-flash→Qwen3 Coder Flash),保证即便未来某处误显示也保持整洁。
8.4 排序:策展优先、族内基模型优先
alibabaModelSort的四级排序逻辑:先保证策展模型排在未知模型前;同族按文件内的编辑顺序;同一家族内精确基 id 排最前,其后是带日期的快照按日期倒序(id 内嵌日期);双方都未知时按pubDate倒序再按 id 倒序——因为阿里云列表 API 的created字段不可靠。
九、供应商接入面:alibaba.vendor.ts与配置要点
模型目录最终由 src/modules/llms/vendors/alibaba/alibaba.vendor.ts 接入运行时。该厂商定义为ModelVendorAlibaba,关键属性:
id: 'alibaba',展示分组cloud,instanceLimit: 1(每实例一个配置);dialect: 'alibaba'——OpenAI 兼容传输之上的定制方言,负责enable_thinking/reasoning_effort的翻译(源码注释指向 openai.chatCompletions.ts);- 服务设置项:
alibabaOaiKey(DashScope 密钥,validateSetup要求长度 ≥ 32)、alibabaOaiHost(自定义端点,默认走官方国际版)、csf(是否启用客户端直连); - 模型列表刷新复用
ModelVendorOpenAI.rpcUpdateModelsOrThrow,即"拉取 → 过滤 → 手工映射 → 排序"的整条流水线。
因此本次更新工作流结束后,不需要改动 vendor 层:只要alibaba.models.ts中的映射、过滤与排序正确,模型选择器、价格展示与请求构造会自动获得新目录。
十、维护纪律与交付自检清单
综合命令文档的 "Important" 部分与源码中可见的策展规范,一次合格的更新应满足:
- 全量审查:完整比对模型列表,覆盖新增(additions)、下架(removals)与调价(price changes)三类变化,不只看"最近火的模型";
- 最小 diff:聚焦内容本身,避免无谓的空白与注释重排,让评审者能一眼看到事实变化;
- 保留注释:每条价格/容量变化都应留下"来源 + 验证日期 + 方法"的注释(如 "live-probed 2026-08-31"、"model page + OR's Alibaba endpoint agree"),这是整个文件的信任根基;
- 多源一致优先:文档与 OpenRouter 一致时优先生效,探测值只作初筛,且明确区分"参数接受范围"与"真实上限";
- 标记异常:坏链(如 404 的模型页)、配额耗尽导致的探测失败、文档区域缺失等,都应显式写入注释而非静默忽略;
- 密钥纪律:
ALIBABA_API_KEY只存在于本地环境变量,任何步骤不得将其写入文件或回显。
对照源码注释中 "verified 2026-09-02 against the live /v1/models list + docs""lmarena unreachable (301), ELOs left as-is" 这类记录,可以清晰地看到上述纪律在真实巡检中的执行痕迹——这也是本项目模型目录能够长期保持高可信度的根本原因。
结语
update-models-alibaba.md所定义的并不是一次性的"改文件"任务,而是一套以官方文档为骨架、OpenRouter 端点与实时探测为裁判、源码注释为审计日志的可重复证据链。理解这条链路,就等于同时掌握了阿里云 Model Studio 的定价/容量信号体系、big-AGI 模型目录的数据模型(ModelDescriptionSchema)与手工映射机制(fromManualMapping),以及"多层过滤 + 默认隐藏 + 编辑策展"的目录治理哲学。当你在模型选择器中看到一个带(Alibaba)后缀的 DeepSeek 或 GLM 条目时,其背后正是这样一条完整的取证与维护流水线。
【免费下载链接】big-AGIAI suite powered by state-of-the-art models and providing advanced AI/AGI functions. Includes AI personas, AGI functions, world-class Beam multi-model chats, text-to-image, voice, response streaming, code highlighting and execution, PDF import, presets for developers, much more. Deploy on-prem or in the cloud.项目地址: https://gitcode.com/GitHub_Trending/bi/big-AGI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考