DeepSeek 有自己的来源,选中之后填一个密钥就能用。 适合直连官方端点、主要写中文的人。要准备的只有一个 DeepSeek 开放平台的密钥。 它有一处和别家不同:取模型列表和发生成请求用的不是同一个地址。
怎么配
- 顶部 API 下拉选「聊天补全」。
- 「聊天补全来源」选 DeepSeek。
- 密钥粘进「DeepSeek API 密钥」。
- 点「连接」。
- 在「DeepSeek 模型」下拉里选一个。没连接成功时,这个下拉里只有一条占位项。
两个端点为什么不一样
生成请求发到 https://api.deepseek.com/beta/chat/completions,
而取模型列表时 /beta 会被去掉,变成
https://api.deepseek.com/models。两处都照抄 SillyTavern。
基础地址那个常量是
API_DEEPSEEK,
带 /beta;状态检查那一支
把它替换掉了。
这个差异会影响排错:如果你在抓包里只看到 /models 请求成功,
不代表生成那条路也通。
| 要填什么 | 来源 | 说明 |
|---|---|---|
| 端点 | 代码常量,不用填 | 除非你要走中转,那就填「反向代理」 |
| 密钥 | DeepSeek 开放平台后台 | 服务端存为 api_key_deepseek,以 Bearer 发出 |
| 模型名 | 连接后的下拉列表 | 可用型号会变,本页不列清单 |
「请求思维链」勾上之后请求里多了什么
请求体里固定带一个 thinking 对象:勾上是
{"type": "enabled"},不勾是 {"type": "disabled"}。
这个字段任何时候都在,区别只在取值。
另外还有一条联动:只有在勾上「请求思维链」并且「推理强度」不是空值时,
请求体里才会额外出现 reasoning_effort。只调推理强度而不勾思维链,那一栏是白调的。
消息发出前会被改写
DeepSeek 这条路不会把你的消息数组原样发出去。它先做提示词后处理;
如果这轮没有工具、末尾又正好是一条助手消息,还会给它打上续写标记
prefix。
还有一处针对上游的兼容修补:工具定义里如果出现空的 required 数组,
发出前会被删掉,因为 DeepSeek 不接受空数组。如果你用了 JSON 结构化输出,
服务端会在消息末尾追加一条用户消息,把 schema 以文本形式贴进去,
同时把 response_format 设成 json_object。
连不上时先查什么
| 现象 | 多半是 |
|---|---|
| 点连接没反应 | 密钥为空。服务端在密钥为空时直接回 400,不发请求 |
| 报 400,密钥确实填了 | 上游 401 被改写成了 400,说明密钥被对方拒绝 |
| 模型列表空但发消息能通 | 状态检查走的是去掉 /beta 的地址,那条路被你的网络挡了 |
| 502 | 连不上上游 |
| 发消息返回一段上游原文 | 余额、限流、模型名错误都在那段原文里,展开看 |
常见问题
能接第三方的 DeepSeek 中转吗
能。填「反向代理」,基础地址就换成你填的那个;同时把中转方给的凭据填进「代理密码」, 它会代替官方密钥发出去。两栏要一起填。
为什么官方端点带 /beta
因为 SillyTavern 的常量就是这么写的,我们照抄。同一条路上还会用到助手消息的
prefix 字段,这类续写能力通常挂在 beta 通道下。
思维链内容会显示出来吗
上游返回的推理内容走 reasoning_content 字段,前端按它的规则显示。
服务端只做转发,不裁剪也不合并。
和用 OpenRouter 转 DeepSeek 有什么区别
直连少一跳,而且专用来源会做上面那些针对性的请求体处理。
走 OpenRouter 时用的是通用的 OpenAI 兼容组装,
不带 thinking 字段,也不加 prefix。
换成别的接入方式
要完全不花钱,看手机端侧模型; 家里有能跑模型的电脑,看 Ollama。 全部七条路的对照在枢纽页。