
big-AGI NVIDIA NIM 模型目录刷新实战从 harvest 采集到 nvidianim 模型表同步的完整指南【免费下载链接】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 仓库中 NVIDIA NIM 托管端点integrate.api.nvidia.com/build.nvidia.com的模型目录维护工作流展开系统讲解如何通过tools/develop/nvidianim-catalog-sync/的 harvest 工具合并四路数据源、生成可提交的目录快照并将增量结果移植进 curated 模型表 nvidianim.models.ts。读完本文你将掌握如何运行采集工具含探测阶段的限流节奏与 API Key 管理、如何读懂harvest-latest.json的 diff 并执行 ADD / REMOVE / 拒绝列表再生成三类编辑、如何守住contextWindow实测优先等字段级规范以及如何用tsc、lint和带 Key 的测试闭环验证更新、捕捉目录漂移。本文对应仓库中的命令规范文档 .claude/commands/llms/update-models-nvidia.md并以其为骨架展开。一、背景NVIDIA NIM 托管端点的三层模型解析模型在 big-AGI 中NVIDIA NIM 供应商vendor id 为nvidianim指向 NVIDIA 的免费托管端点integrate.api.nvidia.com所有模型免费提供约 40 RPM/账户的限流。这个端点的特殊性在于GET /v1/models返回的 ID 列表是一个**过期的超集**约半数已下线模型仍在列表中并直接硬 404列表中的created字段是一个恒定哨兵值735790403owned_by基本镜像 ID 前缀都没有实际参考价值采集工具在 sources.ts 中显式忽略前者NVIDIA 频繁成为新开源模型的首个托管方0 天新模型价值很高需要被自动发现。因此nvidianim.models.ts 的头部注释定义了模型 ID 的三层解析策略curated已精选_knownNvidiaNIMModels表中带完整元数据的模型denied已拒绝_retiredNvidiaNIMIds拒绝列表中经 harvest 验证已死 / 非聊天 / 已达 EOL 的模型直接过滤掉unknown未知既不在精选表也不在拒绝列表的 ID即0 天新到货自动以[?]标签的隐藏条目形式浮现直到下一次 harvest 将其收录或拒绝。这套三层结构决定了维护工作的核心目标让 curated denied 恰好覆盖/v1/models全量列表这样任何同时落在两个集合之外的 ID 都是真正意义上的 0 天新模型。该解析逻辑由 nvidiaNIMModelsToModelDescriptions 实现。二、环境准备与命令入口2.1 API Key 获取与安全约定完整 harvest含探测阶段需要NVIDIANIM_API_KEY。工具按如下顺序查找见 access.tsprocess.env .env.api-keys .env.local .envKey永不提交、永不回显工具只会打印 Key 的来源进程环境还是某个文件名不会打印值本身保证运行可审计官方要求将 Key 放在仓库根目录的.env.api-keys中探测阶段发送的Authorization头在 probes.ts 内部构建同样从不落日志。2.2 运行命令与参数# 完整运行合并 4 个数据源 有认证的活性/上下文窗口探测需要 Key npx tsx tools/develop/nvidianim-catalog-sync/harvest.ts # 元数据刷新只用前 3 个源无需 Key约 2 分钟 npx tsx tools/develop/nvidianim-catalog-sync/harvest.ts --skip-probes # 定向探测只处理 ID 包含指定子串的模型逗号分隔多个 npx tsx tools/develop/nvidianim-catalog-sync/harvest.ts --only glm-5.2,minimax-m3 # 额外探测探测不在 /v1/models 中的 ID下线模型往往还能服务数天 npx tsx tools/develop/nvidianim-catalog-sync/harvest.ts --extra id,id # 帮助 npx tsx tools/develop/nvidianim-catalog-sync/harvest.ts --helpharvest.ts的 CLI 解析支持--skip-probes、--only substring及--only形式、--extra id,id和--help未知参数会直接报错。文档标注完整带探测的运行约需30-45 分钟探测阶段为适配 40 RPM 账户限制而做了严格节流harvest.ts启动探测阶段时会基于模型数量 × 每模型约 2.2 次请求的动态公式打印预估耗时以实际输出为准。三、四路数据源一张合并事实表的由来harvest 的核心思路是把四个来源合并成每个托管模型的一行事实表HarvestedModel见 types.ts字段包括alive活性分类、ctxMeasured/ctxAdvertised实测 / 宣传上下文窗口、capabilities工具调用、结构化输出、推理、modalitiesIn/Out输入输出模态、pubDate、deprecationDate弃用日期、lastMonthInvocations上月调用量以及原始证据notes[]。3.1 源 1实时 ID无需认证GET https://integrate.api.nvidia.com/v1/models无认证即可访问。注意其created是恒定哨兵、被忽略返回的 ID 列表按字典序排序后作为探测的起点fetchLiveModelIds。工具还会做超出列表的探测从上一次账本harvest-latest.json中把已从列表消失但仍属 alive 类alive/throttled/slow-or-dead/probe-error的 ID 自动携带过来继续探测——因为从列表下架不等于死亡如mistral-large-3在下架后仍服务多天只有探测能记录 410 及其 EOL 日期。3.2 源 2build.nvidia.com 目录卡片无需认证从https://build.nvidia.com/models.md分页到多页解析索引再逐模型拉取.md卡片提取 label、description、publisher、capabilities、Context Length广告值、参数量、输入输出模态等。两个值得注意的工程细节见 sources.ts软 200 陷阱缺失的.md页面可能以 HTTP 200 返回 SPA 外壳所以一张卡片只有以 YAML frontmatter 开头才算数_looksLikeCardcreatedDate 只在页面 HTML 的 flight payload 里需要一组完整的浏览器导航头含Sec-Fetch-*系列才能拿到水合后的 HTML否则边缘网关会返回剥掉 payload 的 SPA 壳createdDate静默消失。解析时取所有 payload 副本中最小的日期两份副本仅相差毫秒级目录索引的链接路径中会重新学习 NVIDIA 的 org alias防止 NVIDIA 轮换该 ID 时工具失效模型 ID 与目录 slug 之间的前缀容忍匹配被刻意做得狭窄仅允许 ID 侧多出最多 3 个字符、词干不小于 10 字符防止裸 ID 抢走其-v1.1同门条目的条目、或让兄弟模型如qwen-image与qwen-image-edit互相塌缩。3.3 源 3NGC 端点搜索无需认证GET https://api.ngc.nvidia.com/v2/search/catalog/resources/ENDPOINT提供两项关键数据DEPRECATION日期目录中唯一的前瞻性移除信号。NVIDIA 目录大约每两周退役一批模型NGC 先发布弃用日期ID 继续服务到该日期届时才从/v1/models彻底消失lastMonthApiInvocationCount上月 API 调用量流行度信号用于控制台表格的人类可读排序。模糊 join 会被记录但从不强制matchedKey会写进notes[]保证不会出现错误的硬关联。3.4 源 4有认证的实时探测这是唯一需要 Key 的源也是整个工作流最精密的部分详见下一节。四、活性探测与上下文窗口测量探测阶段内部原理probes.ts 对每个模型做两类探测均 POST 到/v1/chat/completions4.1 活性探测probe a发送一个 4-token 的hi最小补全请求按状态码与响应体分类为AliveClass见 types.ts分类判定依据含义aliveHTTP 200正常服务dead-entitlement404 Not found for account功能已从该账户移除no-chat-route404 404 page not found嵌入/重排等非聊天类无/chat路由retired410 Gone正文带 ISO 日期已退役throttled429 / 503限流非死亡信号重试一次slow-or-dead两次尝试均超时需结合上下文判断probe-error其他 4xx/5xx 或传输失败无法归类unprobed--skip-probes或缺少 Key未探测重试策略throttled/probe-error会重试一次dead-entitlement/no-chat-route/retired是决定性结果立即返回超时重试仅在首次确实超时时升级超时上限。4.2 上下文窗口探测probe b对存活模型发送一个刻意超大的提示x 重复 120 万次 ≈ 240 万字符远超所有已发布窗口然后从 400 错误正文中解析真实的上下文长度。解析器按序匹配多组正则CTX_LIMIT_REGEXES覆盖各供应商不同措辞context length is N、max_model_len...、vLLM 风格、网关风格等。三种非平凡结果路径HTTP 200 静默截断或超大窗口记为silent-truncation-or-large这正是为什么不能相信 build.nvidia.com 的广告值——约 25% 的模型两者不一致最大相差 8 倍gemma-4-31b就存在静默截断短差估算estimatedgpt-oss、mistral-nemotron 等堆栈从不直接说上限只报max_tokens must be at least 1, got -1068994即got ctx − promptTokens。工具据此还原ctx ≈ 探测提示 token 数 got误差约 0.01%再吸附到 canonical 窗口集合4096…1048576容忍度 1.5%中最近的值并在notes[]中明确标记estimated无法解析原始正文保留在notes[]中绝不猜测。4.3 节流纪律不要随便改账户限制约 40 请求/分钟所有请求含重试经过单一全局门控严格串行请求起始间隔 ≥ 1600ms40 RPM 折算 1500ms 时钟抖动余量默认超时 45s仅在首次真正超时后的唯一一次重试中升级到 120s。README 明确指出这是承重设计固定 45s 时冷启动模型和大窗口模型会被误判为死而一个假的dead对 curated 表的破坏远大于一次慢运行。先例minimax-m3、llama-4-maverick都曾需要升级超时。五、输出产物与 diff 审查完整运行未带--skip-probes/--only写入harvest-latest.json工具目录下与 harvest.ts 同级这是有意提交进 git 的快照部分运行--skip-probes/--only只写被 gitignore 的harvest-preview.json永远不可能覆盖已提交的账本harvest.ts。两个关键设计ID 字典序排序、diff 稳定JSON 只按 ID 排序控制台表格才按流行度排序因此git diff tools/develop/nvidianim-catalog-sync/harvest-latest.json呈现的就是真实的目录变化——新增/退役模型、上下文与能力翻转、弃用日期变化——而不是流行度重排噪声。这正是命令文档所说的diff 即变更审查。git log -p则构成历史档案良性噪声harvestedAt采集时间戳和lastMonthInvocations流行度每次运行都会变审查时直接忽略。每次运行还会在控制台输出对齐的 harvest 表格按活性 上月调用量排序、各分类计数、实测 vs 广告上下文不一致清单、以及 NGC 中无对应实时 ID 的条目多为视觉/ASR/生物等非聊天 NIM。六、把结果移植进 curated 表三类编辑拿到 diff 之后将其中的真实变化移植进src/modules/llms/server/openai/models/nvidianim.models.ts的_knownNvidiaNIMModels并同步提交刷新后的快照。命令文档规定的编辑规则如下。6.1 ADD新增值得上架的存活聊天模型新增刚存活newly-alive的聊天模型且值得向用户呈现跳过embeddings / rerankers / parsers / guards 等非聊天类除非作为隐藏条目保留0 天新模型在上架前会以[?]标签的隐藏条目自动浮现见第一节三层解析因此上架节奏可以由 harvest 驱动而非紧急。6.2 REMOVE删除死亡或临期模型活性分类为dead-entitlement功能移除、retired410、no-chat-route非聊天类的模型带deprecationDate且日期已过或近在数日内的模型——通常直接标记// EOL date而不急于删除因为日期一到 ID 会自动从/v1/models消失nvidiaNIMModelsToModelDescriptions只处理 API 实际返回的 ID。表中实际注释记录的先例2026-08-31 一次刷新删除了 12 个到期条目而nemotron-3-nano-30b-a3b因 NGC 将日期从 08-25 顺延到 08-31 且仍有 1200 万次/月调用而被保留。6.3 REGENERATE再生成_retiredNvidiaNIMIds拒绝列表拒绝列表的不变量是全量覆盖curated denied /v1/models 全量列表因此每轮刷新后凡是被 harvest 记录、既不在 curated 表、又不是存活聊天模型的 ID都必须按分类dead-entitlement/no-chat-route/probe-error归入拒绝列表从列表中消失的 ID 也同步离开拒绝列表没有可过滤的对象了。这样落在两集合之外的任何 ID 都必然是真正的 0 天新到货。6.4 关键警示dead-for-our-key ≠ dead-for-everyoneNVIDIA按账户隔离功能可见性因此dead-entitlement和probe-error只反映我们这把 Key的视角。在把此类模型加入拒绝列表前必须交叉核对生产分析数据PostHog主机为integrate.api.nvidia.com近约 14 天内成功的aix_chat_generate_completed事件确认没有其他账户在正常使用它。仓库记录的明确先例qwen/qwen3.5-397b-a17b在 2026-07-25 对我们这把 Key 探测为 dead但近 14 天内有 4 个用户的 17 次成功调用——因此它不进入拒绝列表作为隐藏的 0 天条目保留。而所有账户零成功调用的模型则可以安全拒绝。七、字段级编辑规范命令文档逐字段给出了必须遵守的规则这些与表中注释和底层实现一一对应7.1contextWindow必须用实测值唯一合法来源是探测得到的ctxMeasured绝不采用 build.nvidia.com 的广告值——两者在约 25% 的模型上不一致、最高差 8 倍且gemma-4-31b会静默截断广告值无法揭示。表中每条contextWindow后都有// measured date注释记录测量时间与变化轨迹例如nemotron-3-ultra-550b-a55b从 1000000 升到 1048576。7.2pubDate上游模型发布日期优先取同一模型在其他供应商*.models.ts中的pubDate并加交叉引用注释// file id回退到 harvest 的pubDatebuild.nvidia.com 目录createdDate当 WAF 拦截 HTML 时回退到 NGCdateCreated源码注释说明已在采样模型上验证两者一致并非猜测pubDate是每个条目的必填字段类型定义_NvidiaNIMModelDef中强制。7.3 借用的benchmark: { cbaElo }- 2让步惯用法当 ELO 值借用自同一权重的其他宿主时统一减 2配合免费试用目录要让位于付费宿主的选型策略让原生供应商在自动选型auto-picks中胜出。表中注释可见1352 - 2、1360 - 2等写法并标注 lmarena 来源。7.4 价格与推理参数所有模型保持chatPrice: _freePrice端点没有付费档位{ input: free, output: free }推理参数两条路线共享参数规格定义于表头gpt-oss 系列用_PS_OaiEffortllmVndOaiEffort枚举low|medium|high——严格校验实测none/max会 400其他 thinking 模型用_PS_ThinkingllmVndMiscEffort枚举none|high它通过适配器里的chat_template_kwargs接线到服务端表中注释验证了thinking:false会把reasoning_content清零。7.5 版式纪律保留所有注释与表格顺序旗舰在前、隐藏尾部在后、0 天条目自动排最后最小化空白改动nvidiaNIMModelsToModelDescriptions排序时以表内序号优先未知 ID 排最后。八、验证与漂移告警闭环收尾编辑完成后按顺序执行tsc --noEmit --pretty npm run lint NVIDIANIM_API_KEY... npm test测试环节的特殊之处nvidianim的测试会做实时列表src/modules/llms/server/listModels.test.ts中的openai-compat/nvidianim: live listing端点公开但测试仍以 Key 门控并断言所有 curated 模型都带非空contextWindow此外还覆盖了经openai方言 integrate.api.nvidia.com主机走启发式路由的用例。这里与代码中的 DEV 漂移检查联动开发构建Release.IsNodeDevBuild下nvidiaNIMModelsToModelDescriptions会调用 llmDevCheckModels_DEV对比 API 实时 ID 与 curated 表 ID一旦出现表里还留着但 API 已不再返回的过期条目控制台出现[DEV] stale model defs (remove)类警告而测试中该警告会被判定为失败——这就是命令文档所说的漂移告警目录刷新滞后会直接红掉测试迫使维护者及时跟进为让告警只表示真正的新退役表中专门用_delistedNvidiaNIMIds集合减去为保持编辑 pin 类型有效而刻意让定义比 listing 多活一阵的旧 ID注释显示 2026-08-31 该集合已为空即没有定义再比 listing 多活。九、运行时行为补充vendor 层的配套约束从源码可以补充 harvest 工作流之外的运行时细节它们共同构成 NVIDIA NIM 接入的完整图景客户端限流nvidianim.vendor.ts 对默认主机实现了rateLimitChatGenerate把请求间隔压在 1600ms与探测门控同源的 40 RPM 约束避免 Beam 散射等并发场景立刻撞 429自定义如本地 NIM/vLLM主机不受限CSF 不可用默认主机只对*.nvidia.com开放 CORS浏览器直连不可能因此客户端侧抓取CSF仅在用户覆盖主机时可用csfAvailable仅在自定义 host 时为真Key 校验托管端点要求nvapi-前缀的 Key自定义主机可免 KeyvalidateSetup逻辑启发式路由nvidiaNIMHeuristic 通过 URL 包含integrate.api.nvidia.com将通用openai方言的既有自定义服务路由到本解析器。十、工作流速查准备 KeyNVIDIANIM_API_KEY写入.env.api-keys永不提交、永不回显完整采集npx tsx tools/develop/nvidianim-catalog-sync/harvest.ts30-45 分钟探测串行节流元数据刷新用--skip-probes定向用--only审查git diff tools/develop/nvidianim-catalog-sync/harvest-latest.json忽略harvestedAt与lastMonthInvocations噪声不要使用网络搜索harvest 输出即 ground truth移植按 ADD / REMOVE /_retiredNvidiaNIMIds再生成三类编辑修改 nvidianim.models.ts遵守实测contextWindow、pubDate交叉引用、- 2让步、_freePrice、_PS_OaiEffort/_PS_Thinking等字段规范拒绝前用 PostHog 交叉验证对我们的 Key 死 ≠ 对所有人死提交模型表变更与刷新后的快照一并提交快照是提交的账本git log -p是历史档案验证tsc --noEmit --pretty npm run lint再NVIDIANIM_API_KEY... npm test——[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),仅供参考