⚙️ NVIDIA NIM 模型接入配置

NVIDIA NIM 的免费推理端点,兼容 OpenAI 协议。免费模型以开源为主,国内 DeepSeek / Kimi / GLM 都有,但 Claude / Grok / Gemini / MiniMax 不在列。agent 都不默认支持,需要手动写 provider 配置。

🔌 接口

认证走 Authorization: Bearer $NVIDIA_API_KEY(nvapi- 开头,控制台 申请)。

协议EndpointbaseURL 填什么
OpenAI Chat CompletionsPOST /v1/chat/completionshttps://integrate.api.nvidia.com/v1,带 /v1
模型列表GET /v1/models同上,带 /v1
EmbeddingsPOST /v1/embeddings同上,带 /v1

默认配置不行的三个原因:

  1. max_tokens:NVIDIA NIM 只认 max_tokens,不认 OpenAI 新版的 max_completion_tokens。harness 的 OpenAI-completions 默认按 OpenAI 规则发 max_completion_tokens,直接 400
  2. developer 角色:harness 的 pi-ai 默认把系统提示词走 role: "developer",但 NVIDIA NIM 只认 system / user / assistant / tool,直接 400
  3. 输入模态:多模态模型不声明 input 就在发送前被拒

和 SenseNova模型接入配置 的区别:模型 ID 带 owner 前缀(如 deepseek-ai/deepseek-v4.1-flash),SenseNova 不带(如 deepseek-v4-flash)。其余坑类似(max_tokens、developer 角色、多模态声明)。

📋 模型清单

GET /v1/models 返回全部模型,模型页 标注了哪些有免费端点。下面只列免费端点中可用于对话 / agent 的。

🌏 国内模型

Model ID定位输入上下文单次输出上限
deepseek-ai/deepseek-v4.1-flash552B MoE, 8B 活跃参数,原生多模态,KV cache 更小成本更低text, image待核实待核实
z-ai/glm-5.3753B 纯文本 MoE,稀疏注意力,原生 FP8,推理 + 工具调用text待核实待核实
z-ai/glm-5.3-flash320B 多模态 MoE(18B 活跃),混合 KDA + 稀疏 MLA 注意力,推理 + 工具调用text, image待核实待核实
moonshotai/kimi-k3~2.8T 混合 KDA+MLA 多模态 MoE,长程 coding、agentic 工具调用、图像理解text, image待核实待核实

🌍 其他免费模型

Model ID定位输入上下文单次输出上限
nvidia/nemotron-3-ultra-550b-a55b550B A55B 混合 Mamba-Transformer MoE,1M 上下文,agentic 推理 / coding / 工具调用text1M待核实
nvidia/nemotron-3-super-120b-a12b120B A12B 混合 MoE,1M 上下文,agentic 推理 / codingtext1M待核实
nvidia/nemotron-3.5-lightning-30b-a3b30B A3B MoE,最快速度,专用 agentic 任务text待核实待核实
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning30B 全模态推理(图像 / 视频 / 语音 / 文本)text, image待核实待核实
meta/muse-glimmer-30b30B 多模态推理,文本 + 图像,原生工具调用,独立推理输出text, image待核实待核实
google/diffusiongemma-26b-a4b-it26B 扩散式 LLM,并行 token 生成,实时文本应用text待核实待核实
google/gemma-4-31b-it31B 密集模型,前沿推理 / coding / agentic / 微调text待核实待核实
poolside/laguna-xs-2.133B MoE,本地长程 agentic coding + 终端任务text待核实待核实
openai/gpt-oss-20b小型 MoE,高效 AI 推理 + 数学text待核实待核实
mistralai/mistral-nemotronagentic 工作流,coding / 指令遵循 / 函数调用text待核实待核实

🖼️ 视觉模型(也可用于 agent 对话)

Model ID定位输入
meta/llama-3.2-11b-vision-instruct11B VLM,高质量图像推理text, image
meta/llama-3.2-90b-vision-instruct90B VLM,高质量图像推理text, image
google/paligemmaVLM,文本 + 视觉理解text, image

🚫 不在 NVIDIA NIM 的

  • Claude(Anthropic):没有
  • Grok(xAI):没有
  • Gemini(Google 闭源):没有(只有开源 Gemma 系列)
  • MiniMax:没有

⚠️ 首页有但 API 列表里没有的

  • deepseek-ai/deepseek-v4-pro-0813:首页推荐但 GET /v1/models 没返回,可能是新上线模型或仅下载版

📡 接入状态

agent协议配置位置状态
OpenCodeOpenAI~/.config/opencode/opencode.json待接
harnessOpenAI$DSH_HOME/settings.yaml待接

OpenCode

配置文件 ~/.config/opencode/opencode.json。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "nvidia-nim": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "NVIDIA NIM",
      "options": {
        "baseURL": "https://integrate.api.nvidia.com/v1",
        "apiKey": "nvapi-xxx"
      },
      "models": {
        "deepseek-ai/deepseek-v4.1-flash": {
          "name": "DeepSeek V4.1 Flash",
          "modalities": { "input": ["text", "image"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 65536 }
        },
        "z-ai/glm-5.3": {
          "name": "GLM-5.3",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 131072 }
        },
        "z-ai/glm-5.3-flash": {
          "name": "GLM-5.3 Flash",
          "modalities": { "input": ["text", "image"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 131072 }
        },
        "moonshotai/kimi-k3": {
          "name": "Kimi K3",
          "modalities": { "input": ["text", "image"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 131072 }
        },
        "nvidia/nemotron-3-ultra-550b-a55b": {
          "name": "Nemotron 3 Ultra 550B",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 65536 }
        },
        "nvidia/nemotron-3-super-120b-a12b": {
          "name": "Nemotron 3 Super 120B",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 65536 }
        },
        "nvidia/nemotron-3.5-lightning-30b-a3b": {
          "name": "Nemotron 3.5 Lightning 30B",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 65536 }
        },
        "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning": {
          "name": "Nemotron 3 Nano Omni Reasoning",
          "modalities": { "input": ["text", "image"], "output": ["text"] },
          "limit": { "context": 1000000, "output": 65536 }
        },
        "meta/muse-glimmer-30b": {
          "name": "Muse Glimmer 30B",
          "modalities": { "input": ["text", "image"], "output": ["text"] },
          "limit": { "context": 131072, "output": 16384 }
        },
        "google/gemma-4-31b-it": {
          "name": "Gemma 4 31B",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 131072, "output": 16384 }
        },
        "poolside/laguna-xs-2.1": {
          "name": "Laguna XS 2.1",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 131072, "output": 16384 }
        },
        "openai/gpt-oss-20b": {
          "name": "GPT-OSS 20B",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 131072, "output": 16384 }
        },
        "mistralai/mistral-nemotron": {
          "name": "Mistral-Nemotron",
          "modalities": { "input": ["text"], "output": ["text"] },
          "limit": { "context": 131072, "output": 16384 }
        }
      }
    }
  }
}

只需把 nvapi-xxx 换成你的 key。改完必须重启 OpenCode。

上下文和输出上限标注”待核实”的,先填保守值。请求报 400 就调小,报截断就调大。实际值以模型页或实测为准。

Kimi K3 特别注意:SenseNova 平台上 Kimi K3 用 max_completion_tokens 而不是 max_tokens。NVIDIA NIM 可能一样。如果其他模型正常但 Kimi K3 报 400,单独建一个 provider 改 maxTokensField: max_completion_tokens。

harness

DeepSeek 官方的开源 agent harness,CLI 叫 dsh。配置在 $DSH_HOME/settings.yaml。

模型变更下一次请求就生效,不用重启。

1️⃣ 方式一:模型页表单

设置 → 模型 → 添加自定义提供方:

字段值
Provider IDnvidia-nim(小写,永久不可改)
显示名称NVIDIA NIM
API 地址https://integrate.api.nvidia.com/v1
API 协议openai-completions
API 密钥nvapi-xxx

也能在模型目录里点「获取可用模型」探测,它调 GET /v1/models 返回可勾选列表。

2️⃣ 方式二:settings.yaml

llm-pi-ai:
  providers:
    nvidia-nim:
      apiKeyEnv: NVIDIA_API_KEY
      api: openai-completions
      baseURL: https://integrate.api.nvidia.com/v1
      compat:
        supportsDeveloperRole: false
        maxTokensField: max_tokens
      models:
        - id: deepseek-ai/deepseek-v4.1-flash
          input: [text, image]
          reasoningEfforts:
            off: none
            high: high
        - id: z-ai/glm-5.3
          reasoningEfforts:
            off: none
            high: high
        - id: z-ai/glm-5.3-flash
          input: [text, image]
          reasoningEfforts:
            off: none
            high: high
        - id: moonshotai/kimi-k3
          input: [text, image]
          reasoningEfforts:
            off: none
            high: high
        - id: nvidia/nemotron-3-ultra-550b-a55b
          reasoningEfforts:
            off: none
            high: high
        - id: nvidia/nemotron-3-super-120b-a12b
          reasoningEfforts:
            off: none
            high: high
        - id: nvidia/nemotron-3.5-lightning-30b-a3b
          reasoningEfforts:
            off: none
            high: high
        - id: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning
          input: [text, image]
          reasoningEfforts:
            off: none
            high: high
        - id: meta/muse-glimmer-30b
          input: [text, image]
          reasoningEfforts:
            off: none
            high: high
        - id: google/gemma-4-31b-it
        - id: poolside/laguna-xs-2.1
        - id: openai/gpt-oss-20b
        - id: mistralai/mistral-nemotron
          reasoningEfforts:
            off: none
            high: high

用表单填的话密钥进 .credentials.yaml;手写这份 YAML 就用 apiKeyEnv 指向环境变量。

❓ 四个字段为什么必须写

  • input: [text, image]:手动录入的模型一律按纯文本对待,不声明的话附图片在发送前就被拒
  • compat.supportsDeveloperRole: false:pi-ai 不认识 NVIDIA 的地址,会按 OpenAI 的规矩发请求——推理模型的系统提示词走 role: "developer",而 NVIDIA NIM 只认 system / user / assistant / tool
  • compat.maxTokensField: max_tokens:OpenAI 默认写 max_completion_tokens,NVIDIA NIM 认 max_tokens
  • reasoningEfforts:手动录入的模型不声明等级就出不来推理菜单。NVIDIA NIM 关闭思考是 reasoning_effort: "none",不是省略参数

🩹 排错

  • MISSING_CREDENTIAL:用模型页存密钥,或提供被引用的环境变量
  • UNKNOWN_MODEL:选了没配的模型,或自定义提供方里漏了这个模型
  • 「获取可用模型」401:密钥错
  • 密钥和地址都对,但每个请求都被拒:请求形状跟 OpenAI 不一样。先在路由上设 compat.supportsDeveloperRole: false 和 compat.maxTokensField: max_tokens
  • 只有推理模型失败:系统提示词走 developer 角色被拒。设 compat.supportsDeveloperRole: false
  • 手动录入的模型没有推理等级菜单:没声明等级。加 reasoningEfforts
  • 图片发送前被拒:该模型没声明图片模态。加 input: [text, image]
  • 网关拒绝带图片的请求:声明了它实际不提供的能力。从 input 去掉 image,然后开新会话

🎛️ 推荐参数

  • max_tokens:标准任务 2048–4096;reasoning 模式 ≥4096。reasoning 内容和正式输出共享 max_tokens 配额
  • stream: true:长文本生成推荐开,防超时
  • temperature:默认 1;创作 1.3–1.5;代码生成 0.2–0.5
  • 多轮对话:历史只回传 content,不要回传 reasoning,省 token
  • reasoning_effort:low / medium / high,none 等于关闭
  • reasoning 模式和 JSON mode 不建议同时开

🕘 状态记录

  • 2026-09-26:首次记录。通过 GET /v1/models 核对免费端点模型清单,梳理国内 DeepSeek / Kimi / GLM 及主流开源模型的接入配置。

🔗 相关