首页 / DeepSeek Harness 入门教程 / 模型 Provider 配置

DeepSeek Harness 入门教程

模型 Provider 配置

本教程共 32 篇 · 第 13 篇 · 更新于 2026-08-15 · 约 7 分钟阅读

dshProvider模型配置API Keysettings.yamlLLM

本节目标:学会在 dsh 里接上模型——配好 DeepSeek 官方密钥,理解目录提供方与自定义提供方的区别,会写 settings.yaml 声明模型能力,并看懂常见的模型报错。

Provider 是什么

dsh 自己不带模型。它只负责把「对话、工具、记忆」组织好,真正生成文字的活儿交给大模型厂商。这个「接谁家的模型」的环节,官方叫 Provider(提供方)

你可以把 Provider 想成电源插座:

  • 插头是 LLM 适配器(adapter),它负责把 dsh 的请求翻译成某家厂商的 API 格式;
  • 插座孔是 provider route,一个带名字的注册路由,比如 deepseekanthropic
  • 每个请求都带着 provider + model 两个字段,dsh 按 provider 找到适配器,再把 model 交给它。

这套机制由 ctx.llm 服务统一管理。dsh 内置了两个参考适配器:DeepSeek 官方适配器 llm-deepseek(OpenAI 兼容格式)和 llm-pi-ai(封装 pi-ai LLM 库,API 格式与目录语义都不同)。第三方模型怎么接,本质都是「注册一个 provider 路由 + 填凭据 + 声明模型」;适配器怎么写,第 25 章展开。

Note

版本基线 @deepseek-ai/dsh 0.1.0-rc.6 处于快速迭代期,界面文字和字段可能微调,以你本机实测为准。

配置 DeepSeek 官方模型

DeepSeek 是默认最快上手的路线。前提是你先有 API 密钥,到 platform.deepseek.com 申请。

接入步骤:

  1. 启动 dsh:npx @deepseek-ai/dsh web,浏览器打开 http://127.0.0.1:3080。
  2. 打开 设置 → 模型
  3. 在 DeepSeek 卡片上找到 API 密钥输入框,粘贴密钥并保存。

模型变更会在下一次请求时生效,不需要重启服务器。

密钥是只写的。保存后页面只会收到脱敏描述符,永远看不到明文。密钥实际存在 $DSH_HOME/.credentials.yaml 里,settings 只保留一个凭据引用(credential reference),不碰密钥本身。这个设计的细节,第 17 章讲凭据管理时再展开。

Tip

想知道 $DSH_HOME 在哪?默认是 ~/.dsh。你可以用 echo $DSH_HOME 查看当前值,没设置就是默认目录。

目录提供方:已收录的厂商

如果你用的是 Anthropic、OpenAI 这类主流厂商,不需要手填端点。

操作:选择添加提供方,从列表里挑一家,输入它的 API 密钥并保存。

已安装目录会自动带来端点、协议和模型列表,你只管填密钥。但要注意:使用原生认证的提供方,只填 API 密钥字段是配不完的。官方文档点名了几家:

提供方需要的原生凭据
BedrockAWS 凭据与区域
VertexADC 项目
Azureapi-version
CodexOAuth

自定义提供方:接入任意网关

公司网关、自建服务器,或者目录里没有的厂商,走添加自定义提供方。表单要填这些字段:

字段说明必填
Provider ID小写字母,永久标识
显示名称界面里显示的名字
基础 URL端点地址,如 https://gateway.example/v1
API 协议openai-completions
凭据API 密钥,或环境变量引用
模型至少一个模型 id

Provider ID 是永久的。请求、已保存会话、模型默认值和凭据引用都会用到它。想重命名?没有改名入口——正确做法是新建一个提供方,再删掉旧的。显示名称、基础 URL、协议、凭据和模型则随时可编辑。

填完表单,可以在模型目录里点获取可用模型,让 dsh 查询表单当前的基础 URL 和凭据。这个查询只更新草稿,保存前不会真的存储提供方。

Warning

模型发现走的是 OpenAI 兼容的 GET /models 端点。如果你的网关不提供这个端点,会返回 401 或失败,此时手动输入模型即可,不必强求自动发现。

用 settings.yaml 直接配置

表单背后是 $DSH_HOME/settings.yaml。它是用户设置文档,按 namespace 分节;模型路由归 llm-pi-ai 这个 namespace 管。下面是一份完整可复制的自定义提供方配置:

# 文件路径:$DSH_HOME/settings.yaml
llm-pi-ai:
  providers:
    my-gateway:
      apiKeyEnv: GATEWAY_API_KEY   # 凭据引用:从环境变量 GATEWAY_API_KEY 读取
      api: openai-completions      # API 协议
      baseURL: https://gateway.example/v1
      models:
        - id: legacy-chat          # 纯文本模型,不写 input 即按纯文本对待
        - id: vision-preview       # 视觉模型
          input: [text, image]     # 声明同时接受文本与图片

input 只接受 textimage 两个值,且只作用于它所在的模型,所以一条路由可以同时服务文本和视觉两类模型。

还有两个容易混淆的字段:

  • defaultInput:路由级回退值,默认为 [text]。只对目录未描述的模型生效,绝不会去掉目录中本就支持图片的模型的能力。
  • modelOverrides:目录提供方没有 models 列表可填,收窄某个模型的能力要写在它下面,以模型 id 为键:
llm-pi-ai:
  providers:
    anthropic:
      modelOverrides:
        claude-sonnet-4-5:
          input: [text]    # 把该模型的图片能力去掉
Warning

inputdefaultInput 都是对你端点的断言,不是检查。声明了端点实际不提供的图片能力,不会在这里被拦下,改由提供方拒绝请求。

选择模型与默认模型

配好提供方后,模型选择器里就能看到它们。两个行为值得记住:

  • 选择某个模型,会同时把它设为新会话的默认值
  • 已发送过请求的会话,会保留自身日志中记录的模型,不受后续切换影响。

有个坑:如果已保存的默认值指向了被删除的提供方,输入框会显示选择模型,并且在选中新模型前阻止输入。遇到这种情况,重新选一个模型即可。

常见排错

官方文档给了五条高频错误,直接对表查:

错误含义解决
MISSING_CREDENTIAL缺少提供方密钥在模型页存储密钥,或提供被引用的环境变量
UNKNOWN_MODEL请求的模型没配置选已配置的模型,或给自定义提供方补上缺失的模型
获取可用模型返回 401密钥无效,或端点不支持发现检查密钥;不支持 GET /models 的端点请手动输入模型
图片在发送前被拒绝模型未声明图片模态给自定义提供方的模型加 input: [text, image];DeepSeek 官方路由是纯文本的,无法通过配置改变
提供方拒绝带图片的请求模型声明了端点没有的能力从授予图片能力的列表移除 image,然后开启新会话

最后一条要解释一下:附带的图片会留在会话日志里,不换新会话的话,同一个请求会反复失败。

Tip

同期的 DeepSeek V4 Pro / V4 Flash 定价与能力属于媒体口径,配置时以 platform.deepseek.com 实时价格和官方 providers 文档为准,别被旧截图误导。

小结

  • Provider 是「插座」,适配器是「插头」,请求按 provider 路由。
  • DeepSeek 官方:设置 → 模型 → 填密钥,密钥只写、存 $DSH_HOME/.credentials.yaml
  • 目录提供方免填端点;原生认证的厂商要各自的原生凭据。
  • 自定义提供方:Provider ID 永久,模型至少一个,视觉模型要声明 input
  • 排错先看错误码:MISSING_CREDENTIALUNKNOWN_MODEL、401。