很多人把模型下载到本机、用 Ollama 或 vLLM 起好服务,卡在第一个请求上:文档里到处写 API key,本地这套却没人给过一个。这篇不解释模型原理,只解决鉴权这一环——先判断你的部署到底处在哪种鉴权模式,再决定是直接裸调、还是自己在前端加一层令牌;最后给一份能照着做的验证顺序,避免调通之前先把时间花在找「官方 key」上。
很多人把模型下载到本机,用 Ollama 或 vLLM 把服务起好,以为万事俱备,结果卡在第一个请求上:翻遍文档到处都是 API key 的说法,本地这一套却没有任何人给过你一个。这篇不聊模型原理,只解决鉴权这一环——先判断你的部署到底处在哪种鉴权模式,再决定是直接裸调还是自己在前端加一层令牌,最后给一份能照着走的验证顺序,别在找「官方 key」这件事上白白耗掉一个下午。
核心结论先摆出来:本地跑的 DeepSeek 默认没有、也不需要 API key,你在找的那个东西不存在。会看到「要 key」,一定是你在模型前面自己加了一层东西。下面按这个逻辑往下拆。
本地没有「官方 key」,你在找的东西其实不存在
官方 key 本质是云端服务用来识别账号、扣费和限流的凭证。本地跑的时候根本没有这个账号体系,服务发不出也没必要发一个 key 出来。绝大多数本地推理服务的默认状态就是「谁连上谁能用」,这是设计取舍,不是你哪里配错了。
- 云端 key
- 绑定账号、用量与计费的凭证,离开服务商的账号体系就没有意义
- 本地服务
- 通常只监听一个端口,谁能连通这个端口谁就能调,校验的是网络可达性而不是身份
- 多层部署
- 只在你额外加了代理、网关或聚合层之后,才会出现「要凭证」的要求
判断标准很简单:看你的请求最后打到了哪。如果直连本机某个端口,基本不会有校验;如果中间隔了一个带账号或令牌概念的组件,那凭证就是那个组件自己定的,跟 DeepSeek 本身没关系。
先分清鉴权发生在哪一层,别把两件事混一起
本地部署的「连不上」和「连上了被拒绝」,往往发生在完全不同的层。把层分清楚,排查才不会乱改配置。多数人一遇到报错就去动模型参数,其实问题常常在更外层。
| 层 | 做什么 | 是否校验凭证 |
|---|---|---|
| 模型层 | 推理框架本体,只负责算 | 多数不校验,端口通就能调 |
| 应用层 | WebUI、知识库、工作流这类前端 | 可能有自己的登录或访问口令,和模型无关 |
| 网关层 | 反向代理、聚合服务、统一入口 | 真正的 key 校验通常发生在这里 |
| 客户端 | 你发请求的脚本或软件 | 只是把凭证填进某个字段,本身不校验 |
- 先确认是前端连不上,还是模型根本没起来,这两类报错长得像但原因完全不同
- 再确认报错信息来自哪一层,网关的拒绝和模型的报错提示措辞通常不一样
- 如果是容器部署,优先怀疑地址和端口,而不是鉴权
- 改配置时一次只动一层,改完立刻复测,别几处一起改
必须填一个 key 时,通用的填法是什么
很多客户端沿用了 OpenAI 风格的请求格式,配置里那个 key 字段是必填的,但服务端压根不校验。这时候填一个非空的占位字符串就过去了。「必填」和「有效」是两码事,前者是客户端的表单约束,后者才是服务的校验逻辑。
- 填非空、无空格、无特殊符号的普通字符串,部分客户端会做格式预校验,带奇怪字符会被直接拦下
- 别填空字符串,有些库会把空值当成「未配置」再抛一次错
- 如果客户端要求以特定前缀开头,按它的提示加前缀即可,服务端大概率不看内容
- 真正需要确认的是字段名和取值口径,以你所连那套服务的说明为准
- 不确定的时候,去站内的接入说明类页面核对字段写法,别照着别的工具的示例硬套
想让本机服务也有 key,自己加一层怎么做
思路是在模型服务和调用方中间放一个网关,由网关来校验令牌、记录调用方,模型服务只对网关开放,不直接对外。这样加进来的凭证是你自己定的,跟模型厂商无关。需要注意的是,这层是给「多人共用」或「暴露到局域网」准备的,一个人本地玩加它收益很低,运维成本反而更高。
- 先想清楚防谁是防止同事误调、还是服务要暴露给别的机器。目标不同,网关的严格程度差很多;只是自己用就别加
- 绑定监听地址把模型服务限制在内网或回环地址,只让网关能访问,确认从外部机器直接打模型端口打不通
- 给网关配令牌生成一个足够长的随机串,不要用可猜的词。配好后用同一个客户端分别请求网关地址和直连地址,验证只有前者需要带凭证
- 加频率限制给单来源设一个调用上限,防止某一个客户端把资源占满,具体阈值按机器性能来定,量不准就去站内的测速页面跑个基线
调不通时的排查顺序(照这个顺序走一遍)
本地部署的报错信息往往很笼统,乱试只会越改越乱。按下面的顺序从里到外走一遍,大多数问题在第二步之前就能定位。
- 服务是否在监听用本机命令行直接发一次请求,绕开所有客户端和前端。这一步通不了,后面全是白搭
- 地址和端口对不对容器部署时,本机回环地址和宿主地址经常是两回事,确认你请求的地址确实映射到了服务端口
- 再看鉴权确认你填凭证的那个位置是不是真正的校验方,如果服务端不校验,随便一个非空值就能过
- 最后才看参数模型名、上下文长度这类参数,放在最后调。前面没通之前动这些,基本是浪费时间
如果分不清「慢」和「连不上」,先去站内的实测页面量一个基线,把两类问题区分开,再决定往哪个方向查。具体数字以你当时测到的为准,别照搬别人环境里的结论。
下一步把本地部署常见的接入写法、字段口径和各层鉴权的区别整理在一起,照着核对一遍比到处搜关键词快得多。→常见问题
本地部署的 DeepSeek 必须配 API key 才能调用吗?
多数情况下不需要。你在本机起的推理服务默认不做身份校验,能连上端口就能调用。只有当你前面加了网关、代理或带账号体系的应用层时,才会出现需要凭证的环节,这时候要填的也是那一层的口令,而不是模型自带的。
客户端提示缺 API key 填不进去,随便写一个行不行?
大概率可以。不少客户端沿用了通用字段名,只校验非空,不校验内容,填一个不含空格和特殊符号的短串通常就能过。但如果你的请求最终发往的是需要付费的公网接口,占位值一定过不了,必须换成真实凭证,这点要提前分清楚。
本地服务要不要自己加 key 做保护?
看暴露范围。只在本机或纯内网自用,加的收益很小;一旦端口映射到公网或给多人共用,就建议在模型前面放一层网关做校验和限流。加之前先确认绑定的是内网地址,光加 key 而端口对外,保护效果有限。