DeepSeek API 中转接入:Base URL、模型名与调用示例
DeepSeek 官方 OpenAI 格式 Base URL 是 https://api.deepseek.com;经 GPTZZZ 这类 DeepSeek API 中转站调用时,填 https://gptzzz.ai/v1。官方模型名是 deepseek-flash 和 deepseek-v4-pro,GPTZZZ 对应 deepseek-v4.1-flash 和 deepseek-v4-pro。
先用 DeepSeek 官方 Key 跑通一次请求,再只换 Base URL、Key 和模型 ID 走中转。这样出问题时,能分清是客户端配置、模型名还是网关。
DeepSeek 兼容 OpenAI 和 Anthropic 两种请求格式,但不是所有 OpenAI 参数都支持。本文的 GPTZZZ 示例只用 OpenAI 兼容的 Chat Completions。
直接复制:经 GPTZZZ 调用 DeepSeek
Base URL 填 https://gptzzz.ai/v1;model 填 deepseek-v4.1-flash 或 deepseek-v4-pro;Key 在控制台 /keys 页面创建,创建时选择 DeepSeek官key 分组。
macOS / Linux(bash、zsh):
export GPTZZZ_BASE_URL="https://gptzzz.ai/v1"
export GPTZZZ_API_KEY="YOUR_GPTZZZ_API_KEY"
curl --fail-with-body -sS "$GPTZZZ_BASE_URL/chat/completions" \
-H "Authorization: Bearer $GPTZZZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"只回复 DEEPSEEK_OK"}],"stream":false}'
Windows PowerShell:
$env:GPTZZZ_BASE_URL = "https://gptzzz.ai/v1"
$env:GPTZZZ_API_KEY = "YOUR_GPTZZZ_API_KEY"
$body = @{
model = "deepseek-v4.1-flash"
messages = @(@{ role = "user"; content = "只回复 DEEPSEEK_OK" })
stream = $false
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method Post -Uri "$env:GPTZZZ_BASE_URL/chat/completions" `
-Headers @{ Authorization = "Bearer $env:GPTZZZ_API_KEY" } `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body)) |
ConvertTo-Json -Depth 10
成功的标志:HTTP 200,object 为 chat.completion,正文非空,finish_reason 为 stop,usage 里有 prompt_tokens、completion_tokens 和 total_tokens。再用官方 Key 发同一请求做对照。
官方 Key 和 GPTZZZ Key 分开保存、分开命名,不要互换。
DeepSeek 的 Base URL 是什么
DeepSeek 官方 OpenAI 格式的 Base URL 是 https://api.deepseek.com,Anthropic 格式是 https://api.deepseek.com/anthropic。经 GPTZZZ 中转时,OpenAI 兼容 Base URL 填 https://gptzzz.ai/v1。
| 填在哪里 | DeepSeek 官方 | GPTZZZ |
|---|---|---|
OpenAI SDK 的 base_url、客户端的 Base URL 字段 | https://api.deepseek.com | https://gptzzz.ai/v1 |
| curl 的完整请求地址 | https://api.deepseek.com/chat/completions | https://gptzzz.ai/v1/chat/completions |
| Anthropic 格式 Base URL | https://api.deepseek.com/anthropic | 本文示例不使用 |
关于 /v1:DeepSeek 官方快速开始里的 Base URL 不带 /v1,官方 WorkBuddy 接入文档填的完整地址则是 https://api.deepseek.com/v1/chat/completions,两种写法官方文档里都有。GPTZZZ 的 /v1 是 Base URL 的一部分,必须保留;客户端会自动追加 /chat/completions 时只填到 /v1,不要写成 /v1/v1,也不要把 /chat/completions 填进 Base URL。
官方模型名与 GPTZZZ 模型 ID 对照
DeepSeek 官方文档当前列出两个模型名:deepseek-flash 和 deepseek-v4-pro。GPTZZZ 对应的模型 ID 是 deepseek-v4.1-flash 和 deepseek-v4-pro。
| 档位 | 官方 model | 官方模型版本 | GPTZZZ model |
|---|---|---|---|
| Flash | deepseek-flash | DeepSeek-V4.1-Flash | deepseek-v4.1-flash |
| Pro | deepseek-v4-pro | DeepSeek-V4-Pro-0813 | deepseek-v4-pro |
GPTZZZ 模型价格页对 deepseek-v4.1-flash 的说明是:官方 API 模型名为 deepseek-flash(版本 DeepSeek-V4.1-Flash)。所以直连官方填 deepseek-flash,经 GPTZZZ 填 deepseek-v4.1-flash;Pro 两边同名。
旧模型名:deepseek-v4-flash、deepseek-v4-flash-vision-exp 对应的模型已下线。官方出于兼容,把这两个名字暂时路由到 V4.1 Flash,目前仍可调用,按 Flash 价格计费;请尽快改为 deepseek-flash。deepseek-chat、deepseek-reasoner 按官方公告已于 2026-07-24 停止使用。这些旧名都不在 GPTZZZ 模型价格页上,从旧教程复制配置时要一起改掉。
GPTZZZ 上的 DeepSeek 价格
| GPTZZZ 模型 | 分组 · 倍率 | 输入 ¥/百万 Token | 输出 ¥/百万 Token | 缓存读 ¥/百万 Token | 官方价(空闲时段,输入 / 输出) | 官方价占比 |
|---|---|---|---|---|---|---|
| deepseek-v4.1-flash 价格 | DeepSeek官key · 0.77x | ¥0.35 | ¥1.41 | ¥0.0070 | ¥1.00 / ¥4.00 | 官方价的 35% |
| deepseek-v4-pro 价格 | DeepSeek官key · 0.77x | ¥5.32 | ¥15.95 | ¥0.18 | ¥4.50 / ¥13.50 | 官方价的 118% |
两个模型都在 DeepSeek官key 分组。表中 GPTZZZ 价已乘 0.77x 计费倍率,单位是元 / 百万 Token;充值 ¥1 = 余额 $1。倍率乘在分组自己的价卡上,不是官方价的折扣:按模型价格页的对比,deepseek-v4.1-flash 是官方空闲价的 35%,deepseek-v4-pro 是 118%。一个 API Key 只属于一个分组;调用 DeepSeek 要在控制台 /keys 页面创建 Key 时选择 DeepSeek官key 分组,余额与其他分组共用。官方价分空闲和高峰:北京时间周一至周五(不含法定节假日)9:00–12:00、14:00–18:00 为高峰,价格是空闲时段的两倍。价格以 GPTZZZ 模型价格页和控制台为准。
官方直连 curl 基线
先用官方 Key 跑通并记下结果,再换成 GPTZZZ 的地址、Key 和模型 ID。官方 Chat Completions 文档列出的 model 取值是 deepseek-flash 和 deepseek-v4-pro。
macOS / Linux(bash、zsh):
export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"
curl --fail-with-body -sS https://api.deepseek.com/chat/completions \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-flash","messages":[{"role":"user","content":"只回复 DEEPSEEK_OK"}],"thinking":{"type":"enabled"},"reasoning_effort":"high","stream":false}'
Windows PowerShell:
$env:DEEPSEEK_API_KEY = "YOUR_DEEPSEEK_API_KEY"
$body = @{
model = "deepseek-flash"
messages = @(@{ role = "user"; content = "只回复 DEEPSEEK_OK" })
thinking = @{ type = "enabled" }
reasoning_effort = "high"
stream = $false
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method Post -Uri "https://api.deepseek.com/chat/completions" `
-Headers @{ Authorization = "Bearer $env:DEEPSEEK_API_KEY" } `
-ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body)) |
ConvertTo-Json -Depth 10
OpenAI Python SDK 与 thinking 验证
python -m pip install -U openai
官方直连:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com",
)
MODEL = "deepseek-v4-pro" # 或 deepseek-flash
经 GPTZZZ,只换 Key、Base URL 和模型 ID:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["GPTZZZ_API_KEY"],
base_url=os.environ.get("GPTZZZ_BASE_URL", "https://gptzzz.ai/v1"),
)
MODEL = "deepseek-v4-pro" # 或 deepseek-v4.1-flash
两边共用的请求和检查:
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "只回复 DEEPSEEK_OK"}],
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}},
)
choice = response.choices[0]
if response.object != "chat.completion" or not choice.message.content:
raise RuntimeError(response.model_dump_json())
print(getattr(choice.message, "reasoning_content", None))
print(choice.message.content)
print(response.model, choice.finish_reason, response.usage.total_tokens)
print(getattr(response.usage, "completion_tokens_details", None))
按官方说明,用 OpenAI SDK 时 thinking 要放进 extra_body。官方思考模式默认开启,强度默认 high,上面的请求发的正是默认值:就算网关丢掉了 thinking 和 reasoning_effort,上游照样会思考。所以只看有没有 reasoning_content,判断不了参数是否传到了上游。
要验证,改用非默认值:只传 thinking disabled,不带 reasoning_effort,分别发给官方和 GPTZZZ。
check = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "只回复 DEEPSEEK_OK"}],
extra_body={"thinking": {"type": "disabled"}},
)
print(getattr(check.choices[0].message, "reasoning_content", None))
print(getattr(check.usage, "completion_tokens_details", None))
官方文档写明 reasoning_content 仅适用于思考模式,官方这边应不再返回思考内容。如果 GPTZZZ 仍返回 reasoning_content,或 reasoning_tokens 大于 0,说明 thinking 参数没有传到上游。
思考模式下 temperature 不生效;top_p 只在思考模式下生效,有效范围 0.95–1.0。presence_penalty、frequency_penalty 已被官方弃用,任何模式下传入都不报错也不生效。带 tools 的多轮请求必须完整回传之前每轮的 reasoning_content,否则返回 400。
DeepSeek 流式输出、reasoning 与 usage
stream = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "逐字输出一句问候"}],
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}},
stream=True,
stream_options={"include_usage": True},
)
finished = False
total_tokens = None
for chunk in stream:
if chunk.usage is not None:
total_tokens = chunk.usage.total_tokens
if not chunk.choices:
continue
choice = chunk.choices[0]
delta = choice.delta
reasoning = getattr(delta, "reasoning_content", None)
if reasoning:
print(reasoning, end="", flush=True)
if delta.content:
print(delta.content, end="", flush=True)
if choice.finish_reason is not None:
finished = True
if not finished or total_tokens is None:
raise RuntimeError("stream ended without finish_reason or usage")
print(f"\nusage.total_tokens={total_tokens}")
Chat Completions 流是 data-only SSE,以 data: [DONE] 结束。按官方协议,[DONE] 前的最后一个 chunk 带整次请求的 usage;这个 chunk 的 choices 恰好有一个元素,没有新文本,finish_reason 非空,官方不单独发 usage-only chunk。上面的循环先读 usage 再读 choices,遇到 usage 单独成块的实现也能处理。stream_options 只能和 stream: true 一起传,否则返回 400。
DeepSeek Responses API 的流以 response.completed、response.incomplete 或 response.failed 结束,没有 [DONE],不要和 Chat Completions 共用结束判断。
OpenAI 兼容参数与 Responses 注意点
下表是 DeepSeek 官方文档写明的行为。经 GPTZZZ 调用时,用同一请求对照官方结果确认。
| 项目 | 官方行为 |
|---|---|
| 思考开关 | thinking.type 取 enabled / disabled,默认开启;OpenAI SDK 放进 extra_body |
| 思考强度 | reasoning_effort 取 none / low / high / max,默认 high,none 关闭思考;minimal 映射为 low,medium、xhigh 映射为 high |
| 采样参数 | 思考模式下 temperature 不生效;top_p 只在思考模式下生效,有效范围 0.95–1.0;presence_penalty、frequency_penalty 已弃用,任何模式下传入都不报错也不生效 |
| 输出上限 | 用 max_tokens,取值 1–393216;不传时非思考 8K、思考 64K(reasoning_effort 为 max 时 128K) |
| 上下文长度 | deepseek-flash 与 deepseek-v4-pro 均为 1M |
| tool_choice | 思考模式不支持 required 和指定工具,返回 400,需先关闭思考 |
| developer role | Chat Completions 的 messages 只列出 system、user、assistant、tool;Responses API 接受 developer 并按 user 处理 |
| 图像输入 | deepseek-flash 支持,deepseek-v4-pro 不支持 |
| Responses API | Base URL 同为 https://api.deepseek.com;无状态,不支持 previous_response_id |
401、402、422、429 与 5xx 排查
按“改请求、查账户、等容量”三类处理,不要把所有非 2xx 都交给同一个重试器。下表是 DeepSeek 官方错误码。
| HTTP | 官方含义 | 处理 |
|---|---|---|
| 400 | 格式错误:请求体格式错误 | 按报错修改请求体;带 tools 的思考模式多轮,检查是否回传了 reasoning_content |
| 401 | 认证失败:API key 错误 | 检查 Key;官方 Key 与 GPTZZZ Key 不能互换 |
| 402 | 余额不足 | 检查对应平台的账户余额 |
| 422 | 参数错误 | 核对 model 名和参数取值 |
| 429 | 请求速率(TPM 或 RPM)达到上限 | 降低并发,有限次退避重试 |
| 500 / 503 | 服务器故障 / 服务器繁忙 | 等待后限次重试,加随机抖动 |
经 GPTZZZ 调用时,报错也可能来自网关这一层。先排除三项:Key 是否属于 DeepSeek官key 分组,model 是否与模型价格页上的 ID 一致,账户余额是否充足。再对照 GPTZZZ 错误码速查手册;5xx 或超时结合 GPTZZZ 服务状态页判断。
协议差异先按 OpenAI 兼容迁移清单核对;状态码分层见 中转站错误码指南;模型别名核验参考 模型真实性核验;切换前运行 稳定性基准测试。
切换验证与回滚
固定普通、thinking、流式和工具四组请求,记录 HTTP 状态、model、finish_reason、reasoning 与正文 Token、TTFT、总耗时、[DONE] 完成率、usage 到达率和错误码。切换通过率 = 同时满足协议断言和业务断言的请求数 ÷ 总请求数。
- 停止在途流和工具调用,保存最后一个 chunk、请求 ID 与当前配置差异。
- 恢复旧 Base URL、旧模型 ID、thinking 配置和 Key 来源。
- 重启客户端,先跑官方直连 curl,再跑旧路由回归。
- 流式结束、用量和业务结果都恢复后,再撤销测试 Key。
官方资料
- DeepSeek 首次调用 API
- DeepSeek 模型与价格
- DeepSeek Chat Completions API
- DeepSeek 思考模式
- DeepSeek 使用 Responses API
- DeepSeek 使用 Anthropic API
- DeepSeek 接入 WorkBuddy/CodeBuddy(含带 /v1 的完整地址)
- DeepSeek 错误码
- DeepSeek 更新日志
常见问题
DeepSeek 的 Base URL 是什么?
官方 OpenAI 格式 Base URL 是 https://api.deepseek.com,完整对话地址是 https://api.deepseek.com/chat/completions;Anthropic 格式是 https://api.deepseek.com/anthropic。经 GPTZZZ 中转时,OpenAI 兼容 Base URL 填 https://gptzzz.ai/v1。
DeepSeek Base URL 要不要带 /v1?
官方快速开始的 Base URL 不带 /v1,官方 WorkBuddy 接入文档用的完整地址是 https://api.deepseek.com/v1/chat/completions,两种写法官方文档里都有。GPTZZZ 的 Base URL 必须带 /v1;客户端会自动追加 /chat/completions 时只填到 /v1,不要重复 /v1,也不要把 /chat/completions 填进 SDK 的 base_url。
DeepSeek 当前官方模型名是什么?
官方文档列出 deepseek-flash(版本 DeepSeek-V4.1-Flash)和 deepseek-v4-pro。旧名 deepseek-v4-flash、deepseek-v4-flash-vision-exp 对应的模型已下线,官方暂时把这两个名字路由到 V4.1 Flash,目前仍可调用,按 Flash 价格计费;请尽快改为 deepseek-flash。
在 GPTZZZ 上调用 DeepSeek,model 填什么?
填 GPTZZZ 模型价格页上的 ID:deepseek-v4.1-flash(对应官方 deepseek-flash)或 deepseek-v4-pro。两者都在 DeepSeek官key 分组,计费倍率 0.77x,要用这个分组的 API Key 调用。
deepseek-chat 和 deepseek-reasoner 还能用吗?
不要再用。DeepSeek 官方公告这两个旧模型名于 2026-07-24 停止使用。直连官方改用 deepseek-flash 或 deepseek-v4-pro,经 GPTZZZ 改用 deepseek-v4.1-flash 或 deepseek-v4-pro,切换前跑一遍回归。
DeepSeek thinking 参数怎样用 OpenAI SDK 发送?
把 thinking 放进 extra_body,例如 extra_body={"thinking": {"type": "enabled"}};强度用 reasoning_effort,可选 low、high、max,none 表示关闭思考。官方思考模式默认开启;带 tools 的多轮请求必须完整回传之前的 reasoning_content,否则返回 400。
DeepSeek 流式输出怎样识别 [DONE] 与 usage?
Chat Completions 是 data-only SSE,以 data: [DONE] 结束。官方协议在 [DONE] 前的最后一个 chunk 给出整次请求的 usage,这个 chunk 的 choices 恰好有一个无新文本、finish_reason 非空的元素,不另发 usage-only chunk。消费器先保存 chunk.usage,再处理 choices。Responses API 以 response.completed 等事件结束,没有 [DONE]。
DeepSeek API 返回 401、402、422 或 429 怎么处理?
401 检查 API Key,官方 Key 与中转 Key 不能互换;402 检查对应平台余额;422 核对 model 名与参数取值;429 表示 TPM 或 RPM 达到上限,降低并发并有限退避;500/503 等待后限次重试。经 GPTZZZ 调用时,先确认 Key 属于 DeepSeek官key 分组。
本文 DeepSeek 技术参数与官方文档复核于 2026-10-09;GPTZZZ 模型 ID、分组与价格取自 2026-10-09 的模型价格页。模型、价格、限额与客户端界面会变化,使用前请再次核对官方文档和 GPTZZZ 控制台。

