接入教程

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.comhttps://gptzzz.ai/v1
curl 的完整请求地址https://api.deepseek.com/chat/completionshttps://gptzzz.ai/v1/chat/completions
Anthropic 格式 Base URLhttps://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
Flashdeepseek-flashDeepSeek-V4.1-Flashdeepseek-v4.1-flash
Prodeepseek-v4-proDeepSeek-V4-Pro-0813deepseek-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%
在 GPTZZZ 上用 DeepSeek

两个模型都在 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 roleChat Completions 的 messages 只列出 system、user、assistant、tool;Responses API 接受 developer 并按 user 处理
图像输入deepseek-flash 支持,deepseek-v4-pro 不支持
Responses APIBase 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 到达率和错误码。切换通过率 = 同时满足协议断言和业务断言的请求数 ÷ 总请求数。

  1. 停止在途流和工具调用,保存最后一个 chunk、请求 ID 与当前配置差异。
  2. 恢复旧 Base URL、旧模型 ID、thinking 配置和 Key 来源。
  3. 重启客户端,先跑官方直连 curl,再跑旧路由回归。
  4. 流式结束、用量和业务结果都恢复后,再撤销测试 Key。

官方资料

常见问题

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 控制台。