big-AGI 中 Anthropic 模型注册表的同步维护指南:模型、定价与能力参数更新工作流
【免费下载链接】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 将 Anthropic(以及经由 AWS Bedrock、OpenRouter 暴露的 Claude 模型)的模型清单、定价、上下文窗口与参数能力硬编码在服务端注册表中,以便在前端展示准确的模型选择、费用预估与参数配置。本指南基于仓库内维护命令 update-models-anthropic.md 展开,说明如何以官方文档与实时 API 为双重证据源,系统性地核对并更新这份注册表,包括新增/退役模型、价格变动、thinking/effort 语义迁移以及跨平台参数白名单的处理。读完本文,你将掌握 big-AGI 模型注册数据从「上游事实」到「仓库代码」的完整更新流程与验证手段。
一、维护对象:anthropic.models.ts 在模型管线中的位置
本次维护的核心文件是 src/modules/llms/server/anthropic/anthropic.models.ts,它承载了三类职责:
- 硬编码模型定义:
hardcodedAnthropicModels(文件内第 280 行起)包含每个 Claude 模型的 id、label、发布日期pubDate、上下文窗口、最大输出 token、接口标记(interfaces)、参数规格(parameterSpecs)、价格(chatPrice)与竞技场基准分(benchmark)。 - Thinking 变体注入:
_hardcodedAnthropicThinkingVariants(第 82 行起)为同一模型 ID 派生「Thinking/Adaptive」变体,通过llmsAntInjectVariants注入。 - Wire 类型与辅助函数:
AnthropicWire_API_Models_List(/v1/models响应 schema)、DEV 校验函数、0-day placeholder 与 API 元数据融合函数。
该文件并不是孤立的数据表,而是模型枚举管线的一环。服务端通过 listModels.dispatch.ts 中case 'anthropic'分支(第 121–166 行)完成「拉取/v1/models→ 解析 → 与硬编码定义融合 → 注入变体 → 输出」的流程:
GET /v1/models?limit=1000 (经由 anthropic.access.ts 构造 headers/url) → AnthropicWire_API_Models_List.Response_schema 解析 → llmsAntValidateModelDefs_DEV(DEV 环境检查 stale/unknown) → 排序(家族版本号 → 型号级别 → 日期) → 对每个模型: 命中 hardcodedAnthropicModels → llmsAntFuseModelKnowledge(融合 API 元数据) 未命中(0-day 新模型) → llmsAntCreatePlaceholderModel(API 能力推断占位) → llmsAntInjectVariants 注入 thinking 变体因此,更新注册表的核心意图是:让硬编码数据(价格、基准、参数规格、编辑性描述)始终跟上官方事实,同时允许 API 在 token 限额、effort 等级等维度上保持权威(见下文「融合规则」)。
二、更新工作流总览:先增量、后全量
维护命令给出的总原则是「从最近的变更开始,再核对完整模型列表」(Start with recent changes, then verify the full model list)。完整流程分为五个阶段:
- 增量扫描:阅读官方 release notes,锁定新增模型、能力上线(如新的 thinking/effort 模式、fast mode、skills)、价格调整与退役公告;
- 全量核对:对完整模型列表逐一确认新增(additions)、移除(removals)与价格变化(price changes),避免只盯着热点模型而遗漏 Haiku 等边缘型号的变动;
- 参数规格评审:对每个新模型判断需要哪些
parameterSpecs(thinking 模式、effort 等级、1M context、skills、web tools),依据是官方功能文档以及既有模型条目的对照; - 语义变更记录:当 thinking/effort 语义在代际间发生变化(例如从手动预算演变为自适应 thinking),必须在注释中写明,供后续维护者与 AIX 适配层参考;
- Diff 质量控制:最小化空白与注释改动、保留既有注释、标记失效链接或意外内容,让 PR 的 diff 易于评审。
三、证据源分级:官方 Markdown、兜底页面、实时 API
命令为「事实收集」设计了一套分层证据源策略,其核心理念是:不以单一来源为准,多个来源交叉印证。
3.1 主证据源(Markdown 优先)
官方文档站支持在任意路径后追加.md直接获取干净 Markdown,便于脚本化阅读与检索:
| 主题 | 路径(追加.md) | 用途 |
|---|---|---|
| 最近变更 | .../docs/en/release-notes/overview | 新模型、新能力的首要信号源 |
| 模型与 ID | .../docs/en/about-claude/models/overview | 模型列表、上下文窗口、token 限制 |
| 定价 | .../docs/en/about-claude/pricing | 基础价、缓存价、批量价、长上下文价 |
| 退役与时间表 | .../docs/en/about-claude/model-deprecations | 弃用与退役日期 |
其中退役日期是最值得利用的交叉校验信号:官方对某个在售模型的「tentative retirement date」恰好等于「发布 + 1 年」,因此它可以直接与注册表中的pubDate互查。命令特别提醒:优先采用退役日期与 release-notes 标题,而不是/v1/models的created_at,因为后者可能比正式公告早数天。
3.2 能力文档的发现路径
release notes 与 models overview 的 Markdown 中包含指向功能页面的内联链接(thinking 模式、effort、上下文窗口、what's-new 页面等)。当提到新能力时,应顺着链接继续追加.md深挖。命令列举了典型可发现的页面模式:
about-claude/models/whats-new-*:代际变更说明(如whats-new-opus-5);build-with-claude/extended-thinking:手动 thinking 预算配置;build-with-claude/effort:effort 等级及各模型可用性;build-with-claude/thinking、build-with-claude/thinking-steering-and-cost:自适应 thinking;build-with-claude/thinking-troubleshooting#supported-models:各模型 thinking/effort 矩阵;agents-and-tools/tool-use/tool-reference:各工具支持的模型与工具版本。
3.3 兜底方案
若.md路径失效或结构变化,可回退到网页版官方文档(models overview、pricing、release notes、claude.com/pricing);若被限制访问,则改用 Anthropic TypeScript SDK 仓库,或直接联网搜索 "anthropic models latest pricing" / "anthropic latest models"。这保证了更新流程在官方站点改版时仍然可执行。
3.4 实时 API 作为 ground truth
如果本机.env.api-keys中存在ANTHROPIC_API_KEY,可用/v1/models作为「哪些模型真实在售」的最终信号,与上述文档交叉验证:
curl https://api.anthropic.com/v1/models \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H 'anthropic-version: 2023-06-01'命令明确要求:绝不可提交或回显该 key。这条实时信号的用法与仓库内 anthropic.access.ts 中的ANTHROPIC_API_PATHS.models = '/v1/models'对应,也是 DEV 校验函数比对硬编码清单与 API 清单的基础。
四、模型定义结构剖析:看懂要改什么
要安全地修改注册表,必须理解 llm.server.types.ts 中定义的ModelDescriptionSchema(第 140–158 行)各字段,以及它们如何被消费。以claude-opus-4-7条目为例(anthropic.models.ts):
{ id: 'claude-opus-4-7', // 模型 ID,须与 /v1/models 一致 label: 'Claude Opus 4.7', pubDate: '20260416', // 官方正式发布日期 'YYYYMMDD' description: 'Previous most capable model for complex reasoning and agentic coding', contextWindow: 1_000_000, // 1M GA at standard pricing(无需 opt-in) maxCompletionTokens: 128000, interfaces: [...IF_47, LLM_IF_ANT_ToolsSearch], parameterSpecs: [ { paramId: 'llmVndAntEffort', enumValues: ['low', 'medium', 'high', 'xhigh', 'max'] }, ...ANT_TOOLS_DYNAMIC, ], chatPrice: { input: 5, output: 25, cache: { read: 0.50, write: 6.25, duration: 300 }, tools: ANT_PRICE_TOOLS }, benchmark: { cbaElo: 1494 }, },各字段在更新时需要注意的要点:
id:必须与 Anthropic/v1/models返回的id完全一致,否则无法被llmsAntFuseModelKnowledge命中融合。pubDate:formatPubDate(models.mappings.ts 中实现)将其规范化为YYYYMMDD;它与官方退役时间表的「发布+1年」规则互查,是编辑性日期字段。contextWindow/maxCompletionTokens:token 限额在融合阶段以 API 为准(llmsAntFuseModelKnowledge会用max_input_tokens、max_tokens覆盖硬编码值),但硬编码值应尽量贴近真实值,避免 DEV 校验告警。interfaces:能力标记(Chat/Vision/Fn/PromptCaching/Reasoning/ToolsSearch 等)。文件中用组合常量表达代际差异,例如IF_4 = [LLM_IF_OAI_Chat, LLM_IF_OAI_Vision, LLM_IF_OAI_Fn, LLM_IF_ANT_PromptCaching](第 32 行),IF_47在IF_4基础上追加LLM_IF_HOTFIX_NoTemperature(第 38 行,因为 4.7+ 对 temperature 直接返回 400,需在客户端剥除)。parameterSpecs:声明该模型暴露给用户的额外参数,下文单独展开。chatPrice:支持扁平价格或阶梯价格。claude-sonnet-4-5-20250929展示了分档写法:input: [{ upTo: 200000, price: 3 }, { upTo: null, price: 6 }](≤200K 与 >200K 两个档位),缓存价同样分档。工具费通过tools: { webSearch: 10 }(ANT_PRICE_TOOLS,$10/1K 次搜索)单独声明。benchmark.cbaElo:Chat Bot Arena ELO 分数。新模型无榜单数据时,仓库采用「基于同族模型推测」的做法并在注释中明确标注假设(如claude-mythos-5-1的1506 + 5旁注明 "(no arena data yet) assuming…"),更新时应沿用此纪律:有数据写数据,无数据明确标注推断。hidden: true/isLegacy: true:退役模型不立即删除。文件头注释解释了原因:这些定义被 Anthropic API、OpenRouter 与 AWS Bedrock共享,而 Bedrock 支持旧模型的时间可能长于 Anthropic API,因此退役模型保留在文件中,只是标记hidden不再面向普通用户展示,移除是人工决定("Removal is manual")。
4.1 Thinking 变体机制
_hardcodedAnthropicThinkingVariants(第 82 行起)是更新时最容易出错的区域。它为每个支持思考模式的模型声明一个idVariant: 'thinking'的派生条目,继承基础模型未重定义的属性。典型例子(claude-sonnet-5,第 89–100 行):
'claude-sonnet-5': { idVariant: 'thinking', label: 'Claude Sonnet 5 (Adaptive)', description: 'Claude Sonnet 5 with adaptive thinking for high-performance coding and agentic workflows', interfaces: [...IF_47_R, LLM_IF_ANT_ToolsSearch], parameterSpecs: [ { paramId: 'llmVndAntThinkingBudget', hidden: true, initialValue: -1 /* FORCE adaptive - Sonnet 5 rejects budget_tokens */ }, { paramId: 'llmVndAntEffort', enumValues: ['low', 'medium', 'high', 'xhigh', 'max'] }, ...ANT_TOOLS_DYNAMIC, ], benchmark: { cbaElo: 1462 + 1 }, // 1 (thinking) + claude-sonnet-5-high },注意变体注入是按模型 ID 查找的:llmsAntInjectVariants调用createVariantInjector(_hardcodedAnthropicThinkingVariants, 'before')(第 266–268 行)将变体条目插到基础模型之前。因此新增模型时,若它需要 thinking 变体,必须在两个地方同步添加:基础条目 + 变体表;若它的 thinking 语义特殊(例如 Opus 5 是单一 always-thinking 条目、无需变体分裂),则需在变体表中显式留空并注释原因(第 86 行注释说明 "no 'claude-opus-5' variant here")。
五、parameterSpecs 与参数注册表:能力差异的表达层
更新模型时最核心的判断是「这个模型暴露哪些参数」。参数 ID 的定义集中在 src/common/stores/llms/llms.parameters.ts 的DModelParameterRegistry中,模型条目通过parameterSpecs声明自己支持参数的子集与取值。Anthropic 相关参数(第 185–287 行)包括:
| paramId | 类型 | 说明与取值范围 |
|---|---|---|
llmVndAntEffort | enum | 推理深度,取值['low','medium','high','xhigh','max'];未设置时默认 high。各模型通过enumValues声明子集(4.6 无xhigh,4.7+ 增加xhigh/max) |
llmVndAntThinkingBudget | integer | 思考预算,范围[1024, 65536];-1为越界哨兵值,表示「强制自适应 thinking」;null表示关闭 thinking |
llmVndAnt1MContext | boolean | 1M 上下文 opt-in(旧 beta 通道,2026-04-30 在 Anthropic API 退役) |
llmVndAntCodeSandbox | enum | 服务端容器沙箱执行代码,取值['auto'] |
llmVndAntInfSpeed | enum | Fast Mode,取值['fast_2x','fast_6x','fast'],enumPriceMultiplier提供价格倍率(2x/6x);每个模型通过enumValues只暴露一个档位 |
llmVndAntSkills | string | 文档技能,逗号分隔(xlsx,pptx,pdf,docx) |
llmVndAntWebFetch/llmVndAntWebSearch | enum | 网页抓取/搜索,取值['auto','off'],隐含LLM_IF_Tools_WebSearch接口 |
llmVndAntWebFetchMaxUses/llmVndAntWebSearchMaxUses | integer | 单次响应最大抓取/搜索次数,范围[1, 50] |
llmVndAntWebDynamic | boolean | 动态过滤(仅 Opus/Sonnet 4.6+) |
文件内用常量对工具参数做组合复用:ANT_TOOLS(第 61–67 行)为通用五项(skills、web fetch/search 及各自 maxUses),ANT_TOOLS_DYNAMIC(第 75–79 行)在其基础上追加 Code Sandbox 与 Web Dynamic,仅适用于 Opus/Sonnet 4.6+。新增模型时,从既有同级模型复制参数组合并按其能力文档增删,是最稳妥的做法。
5.1 Thinking 语义的代际变迁:注释就是文档
命令特别强调:当 thinking/effort 语义在代际间变化时,要在注释中记录。文件顶部第 42–59 行的「Anthropic Parameters Semantics」注释块就是这种纪律的产物,它逐一代记录了语义变迁:
- 4.5 及更早:
llmVndAntThinkingBudget是手动预算(extended thinking); - 4.6:引入自适应 thinking,手动预算被弃用;
llmVndAntThinkingBudget保留为隐藏哨兵(initialValue: -1强制自适应); - 4.7/4.8:彻底移除手动预算(
budget_tokens返回 400),改为 adaptive-only; - Fable/Mythos 5(2026-06-09):自适应 thinking始终开启,无 thinking 变体,
thinking:{type:'disabled'}与budget_tokens均返回 400; - Sonnet 5(2026-06-29):同样是 adaptive-only,但
thinking:{type:'disabled'}被允许(200),因此保留「基础 + thinking 变体」的拆分(同 Opus 4.7/4.8),仅budget_tokens返回 400; - Opus 5(2026-07-24):adaptive-only,thinking 默认开启;
disabled仅在 efforthigh及以下被允许(xhigh/max + disabled → 400);以单一 always-thinking 条目发货(同 Fable 5); - Fable/Mythos 5.1(2026-09-01):同 Fable 5,preserved thinking(回放 thinking 块)在 AIX 适配层处理。
类似地,fast mode 的移除历史也以注释沉淀在条目中:4.6 上是「静默降级」(speed:'fast'不再报错但按标准速度运行,probe 验证于 2026-07-24),4.7 上是「硬移除」(返回错误,2026-07-24),因此 4.7/4.6 条目的 toggle 被删除,避免 UI 展示失效控件。更新注册表时,这类「API 行为变化」必须同步体现在注释中,这是本文件独特的维护规范。
六、更新后的自动校验:DEV 守卫机制
注册表更新后并不依赖人工目检,仓库内置了多层 DEV 校验,运行前提是NODE_ENV=development。
6.1 模型清单比对:llmsAntValidateModelDefs_DEV
anthropic.models.ts 的llmsAntValidateModelDefs_DEV调用 models.mappings.ts 中的llmDevCheckModels_DEV,以/v1/models返回清单为基准:
- Stale:本地有定义但 API 未返回 → 提示 "stale model defs (remove)";
- Unknown:API 返回但本地无定义 → 提示 "unknown models (add)"。
命令的ignoreStale白名单(第 744 行)列明了故意保留的条目:invite-only 的 Mythos 5.1/5(普通 API key 看不到),以及已被 Bedrock/OpenRouter 继续服务的退役 ID(claude-opus-4-1-20250805等)。这意味着更新时若某模型「消失」,先判断它是真退役还是被白名单覆盖的跨平台存活模型。
6.2 能力与数值比对:_llmsAntCheckApiCapabilities_DEV
第 768–801 行 的_llmsAntCheckApiCapabilities_DEV对每个已知模型比对三项硬编码值与 API 返回值的偏差:
maxCompletionTokensvs API 的max_tokens;contextWindowvs API 的max_input_tokens(仅当模型使用旧的llmVndAnt1MContextopt-in 时按ANT_CAP_CONTEXT_WINDOW(默认 200_000,第 24 行)封顶;1M GA 模型按 API 原值报告);llmVndAntEffort的enumValuesvs API 的capabilities.effort.*.supported布尔标志。
另有_llmsAntCheckInfSpeedTiers_DEV(第 752–762 行)强制 Fast Mode 参数在每个模型上恰好暴露一个价格档位(UI 将其渲染为二元开关)。
这套 DEV 校验通过listModelsRunDispatch的case 'anthropic'分支在每次模型列表请求时执行(listModels.dispatch.ts),等于把「注册表与 API 的一致性」变成持续可观察的检查项。
七、0-day 新模型的自动兜底:placeholder 与 fuse
新模型发布当天,官方/v1/models会先于人工更新出现。管线为此内置了两条路径:
llmsAntCreatePlaceholderModel(第 810–870 行):对未知模型生成 API-informed 的占位定义——interfaces 由capabilities.image_input、capabilities.thinking推导;parameterSpecs由capabilities.effort推导 effort 枚举、由thinking.types.adaptive/enabled推导 thinking 参数;contextWindow 用 API 的max_input_tokens(无已知模型时的缺省 200_000);pubDate用formatPubDate(created_at)填充。注意它不会为未知模型添加llmVndAnt1MContextopt-in(注释说明 1M 已 GA,0-day 模型如需 beta 头应走硬编码定义)。llmsAntFuseModelKnowledge(第 877–917 行):对命中硬编码定义的模型,用 API 数据覆盖contextWindow(含 opt-in 封顶逻辑)与maxCompletionTokens;effort 枚举的 API 覆盖目前被显式禁用(注释说明因编辑性偏好而保持硬编码)。
这两条路径意味着:即使注册表短暂滞后,用户体验也不会断裂——placeholder 保证新模型可用,fuse 保证 token 限额准确;而硬编码数据(价格、基准、参数组合)则靠本文所述的人工更新流程补齐。这也解释了为什么更新命令强调「先增量(覆盖 hot 新模型)后全量(覆盖全部价格/参数变动)」——placeholder 只解决可用性,不解决定价准确性。
八、跨平台一致性:Bedrock 与 OpenRouter 的共享与裁剪
文件头注释强调这些定义被「Anthropic API、OpenRouter 和 AWS Bedrock 共享」,因此修改时必须考虑下游平台的差异:
- Bedrock:
llmBedrockFindAnthropicModel(第 922 行)把anthropic.claude-opus-4-6-v1这类 Bedrock ID 还原为claude-opus-4-6查找硬编码定义;llmBedrockStripAnthropicMDS(第 967–980 行)按白名单裁剪 Bedrock 不支持的接口与参数——例如llmVndAntInfSpeed(Bad Request)、llmVndAntSkills、llmVndAntWebFetch/Search,而llmVndAntEffort还要额外过滤 4.5 代模型(_BEDROCK_EFFORT_REJECTING_MODELS正则,第 947 行,基于 2026-08-05 实测)。若新增参数,需同步评估 Bedrock 是否支持并更新这两个白名单。 - OpenRouter:
llmOrtAntLookup_ThinkingVariants(第 998–1030 行)将 OpenRouter 的模型名(如claude-4.6-opus)分词匹配到硬编码模型,并应用更严格的参数白名单(仅llmVndAntEffort与llmVndAntThinkingBudget,llmVndAntInfSpeed明确排除——OpenRouter 无 fast mode)。 - 1M 上下文 opt-in 的去留:
llmVndAnt1MContext在 Anthropic API 上已退役(2026-04-30),但保留在 Bedrock 条目上(Bedrock 可能仍接受该头),这一「平台差异导致不立即删除」的决策贯穿退役模型与参数两个维度。
九、验证与测试:如何确认更新正确
更新完成后,可通过仓库既有的测试与运行时校验确认:
- 冒烟测试:仓库提供了覆盖全部 dialect 的枚举测试 listModels.test.ts,Anthropic 通道使用
ANTHROPIC_API_KEY。命令:
NODE_ENV=development npx tsx --test src/modules/llms/server/listModels.test.ts测试哲学是「要么断言真实行为,要么给出可见的 SKIPPED 原因」,无 key 的 CI 环境下仅断言离线数据(硬编码清单 + 导入冒烟)。通用运行方式为npm test。
- 实时交叉验证:在有 key 的开发环境中请求一次模型列表,观察
[DEV] Anthropic:前缀的 stale/unknown/mismatch 告警,确认无预期外的输出。 - Diff 自检:按命令要求控制改动面——只改模型内容,不做格式化;保留注释;对失效链接或异常内容(如价格突变、ID 变更)显式标注,而不是静默修正。
十、结语:把「上游漂移」变成可管理的工程流程
Anthropic 模型迭代频繁:新模型发布、价格调整、thinking/effort 语义迁移、beta 能力 GA、退役时间表……update-models-anthropic.md 给出的不是一次性的操作步骤,而是一套可持续运行的维护纪律:
- 多源交叉:release notes + models overview + pricing + deprecations 四类官方 Markdown 为主,
/v1/models实时清单为 ground truth; - 全量核对:不止关注头条新模型,还要核对退役与全量价格变动;
- 参数语义留痕:代际语义变化写入注释,让 4.5 手动预算 → 4.6+ 自适应 → 5 代 always-on 的演化可追溯;
- 共享定义、平台裁剪:修改一处定义时同步检查 Bedrock/OpenRouter 白名单;
- DEV 校验兜底:stale/unknown/数值不一致在开发环境自动告警。
围绕这一命令,相关实现可以分别在 anthropic.models.ts(模型注册表本体)、llms.parameters.ts(参数注册表)、llm.server.types.ts(schema)、listModels.dispatch.ts(管线)与 listModels.test.ts(验证)中继续深入。同类更新(Gemini、OpenAI、xAI 等)可参考.claude/commands/llms/下的其他update-models-*.md命令,它们共享同一套「官方文档 + 实时 API + DEV 校验」的维护范式。
【免费下载链接】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),仅供参考