先说结论:DeepSeek、通义千问、GLM、Kimi 和豆包 Seed 可以用同一个 OpenAI 兼容的 API Key 调用,这个 Key 还能同时覆盖 Claude 和 GPT。在 HopBase 上,把 OpenAI SDK 的 Base URL 设为 https://api.hop-base.com/v1,在控制台给 Key 挂上各家模型的分组(每个 Key 最多 10 个分组),之后只改 model 字段:deepseek-v4.1-flash、qwen3.8-max、glm-5.3、kimi-k3、doubao-seed-2-1-pro-260628。Claude 用 Anthropic SDK,Base URL 是 https://api.hop-base.com(不带 /v1)。统一从一个美元余额扣费,每个非流式响应都会返回本次的准确扣费。真正让集成出问题的不是端点,而是各家模型的差异:Kimi K3 要加 include_reasoning 才返回思考过程,两款豆包模型不认 tool_choice,千问按上下文长度分档计费,DeepSeek V4.1 Flash 分峰谷价。本文把这些差异逐一列出,并在 2026-10-29 用真实请求逐项核对过。
为什么用一个 Key,而不是开五个账户
国产开源与前沿模型已经是很多技术栈的标配:DeepSeek 做低成本推理,千问和 GLM 做长上下文,Kimi K3 做智能体编程,豆包 Seed 做多模态对话。逐家单独接入意味着五个开发者控制台、五份余额、五套发票。其中好几家的控制台主要面向中国大陆用户,界面是中文,需要手机号验证或人民币付款。而且每家所谓的「OpenAI 兼容」接口都有自己的扩展字段。
网关给你的是一个账户、一个美元余额、一个 Base URL。它消除不了各家模型的差异,所以本文大部分篇幅都在讲这些差异。
模型阵容与牌价
下表所有 ID 都已在公开目录上线。厂商公布了美元官方价的,表里列出每百万 token 的官方牌价;其余请看实时价格页,那里也列出了每个模型的缓存命中价。
| 家族 | 模型 ID | 上下文 / 最大输出 | 协议 | 牌价(输入 / 输出,每百万 token) |
|---|---|---|---|---|
| DeepSeek | deepseek-v4.1-flash、deepseek-v4.1-flash-1017、deepseek-v4-pro-202606、deepseek-v4-flash-202605 | 1M / 最高 393,216 | Chat Completions、Responses、Anthropic Messages | 以实时价格为准 |
| 通义千问(阿里) | qwen3.8-max、qwen3.8-flash、qwen3.7-max、qwen3.7-plus、qwen3.7-flash | 1M / 131,072 | Chat Completions、Responses | 以实时价格为准 |
| GLM(智谱) | glm-5.3、glm-5.3-flash | 1M / 最高 131,072 | Chat Completions | 以实时价格为准 |
| Kimi(月之暗面) | kimi-k3 | 1,048,576 / 32,768 | 仅 Chat Completions | $3 / $15 |
| 豆包 Seed(字节) | doubao-seed-2-1-pro-260628、doubao-seed-2-1-pro-260915、doubao-seed-2-1-lite-260915、doubao-seed-2-1-turbo-260628 等 7 款 | 128K-1M / 32K-256K | Chat Completions、Responses、Anthropic Messages | 以实时价格为准 |
| Claude、GPT | claude-sonnet-5-5、gpt-6-sol 等 | 按模型 | Claude:Anthropic Messages;GPT:Chat Completions、Responses | Sonnet 5.5:$2 / $10;GPT-6 Sol:$2 / $10 |
DeepSeek 和 GLM 另有一套以 -us 结尾的美国区(US Region)ID,例如 deepseek-v4.1-flash-us、glm-5.3-us。它们有独立的分组和价格,三种协议都支持,详见美国区文档。
三步完成配置
- 在 api.hop-base.com 用邮箱或 Google、GitHub 账号注册,打开 API 密钥。
- 新建一个 Key,挂上需要的分组:DeepSeek、千问、GLM、Kimi K3、豆包 Seed,想在同一个 Key 上用 Claude 和 GPT 的话再加一个 Claude 分组和一个 GPT 分组。一共 7 个分组,在每个 Key 10 个的上限之内。如果同一个 Key 上的两个分组都提供某个模型(比如两个 Claude 分组),保存前弹窗会要求你指定由哪个分组来服务。
- 列出这个 Key 能调用的模型,只使用它返回的 ID:
export HOPBASE_API_KEY=sk-your-key
curl https://api.hop-base.com/v1/models -H "Authorization: Bearer $HOPBASE_API_KEY"
一个客户端,五个模型家族
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.hop-base.com/v1",
api_key=os.environ["HOPBASE_API_KEY"])
models = ["deepseek-v4.1-flash", "qwen3.8-max", "glm-5.3",
"kimi-k3", "doubao-seed-2-1-pro-260628"]
for m in models:
raw = client.chat.completions.with_raw_response.create(
model=m,
messages=[{"role": "user", "content": "In one sentence: what is a vector database?"}],
max_tokens=2000,
)
resp = raw.parse()
print(m, "|", resp.choices[0].message.content.strip()[:80],
"| cost USD:", raw.headers.get("X-HopBase-Cost-USD"))
每个计费的非流式响应都带 X-HopBase-Cost-USD 响应头,即本次从余额扣掉的准确金额,JSON 里的 usage.cost_usd 也是同一个值。流式响应不带这个头,因为响应头在生成开始前就已发出;流式请求请到控制台的使用记录页查看。max_tokens 故意给得比较宽:这些模型大多默认开启思考,思考 token 也计入这个上限。
Claude 用同一个 Key 走 Anthropic SDK:
from anthropic import Anthropic
claude = Anthropic(base_url="https://api.hop-base.com", api_key=os.environ["HOPBASE_API_KEY"])
msg = claude.messages.create(model="claude-sonnet-5-5", max_tokens=512,
messages=[{"role": "user", "content": "Hello"}])
各家模型的坑
Kimi K3
- 只有请求里带
"include_reasoning": true,思考过程才会出现在reasoning_content里;thinking和reasoning_effort不起作用。用 OpenAI SDK 时通过extra_body={"include_reasoning": True}传入。我们实测同一个提示词:不带这个参数时没有reasoning_content,带上之后就有了。 max_tokens上限是 32,768,且包含思考 token;n只能是 1;temperature取值 0-1;top_p和 frequency/presence penalty 会被忽略。- 图片只能用 base64,传图片 URL 会返回 400。
/v1/responses和/v1/messages返回 404,所以 Claude Code 和 Codex 只能通过 CC Switch 这类本地路由工具接入(见 Kimi K3 文档)。
DeepSeek
deepseek-v4.1-flash和deepseek-v4.1-flash-1017跟随 DeepSeek 公布的峰谷时段:北京时间工作日 09:00-12:00 和 14:00-18:00 为高峰,其余时段半价。一次请求按它完成的时刻计价。在意成本的话,批量任务尽量避开高峰时段。deepseek-v4-pro-202606和deepseek-v4-flash-202605全天按同一价格计费,以高峰牌价为准。deepseek-v4.1-flash-1017是 2026-10-17 发布的版本,deepseek-v4.1-flash仍是 9 月版本。两者都能通过标准image_url读图,而 V4 Pro 和 V4 Flash 收到图片会返回 400。按模型 ID 选版本即可。- 四个模型都支持 Chat Completions、Responses 和 Anthropic Messages,我们用同一个提示词在每个端点上测了其中三个。在 Chat Completions 上,思考过程在
reasoning_content里,不在content里。
通义千问
- 按上下文分档计费:单次请求的输入一旦越过阈值,整次请求都按那一档计费。
qwen3.7-plus超过 256K 升档,qwen3.7-flash超过 32K 升档;qwen3.8-max、qwen3.8-flash和qwen3.7-max只有一档。命中缓存也不会让你留在阈值以下。 - 对延迟敏感的调用,可以传
enable_thinking: false(通过extra_body)关闭思考。除qwen3.7-max外都支持图片和视频输入。
GLM
glm-5.3只收文本,传图片返回 400。两款 GLM 都只提供 Chat Completions,所以只说 Responses 协议的 Codex CLI 用不了它们;美国区的glm-5.3-us支持全部三种协议。glm-5.3-flash始终开启思考,思考内容在reasoning_content里。推荐temperature1、top_p0.95,流式输出工具调用时加tool_stream: true。支持文本、图片、视频和文件输入。
豆包 Seed
doubao-seed-evolving和doubao-seed-2-1-pro-260915会忽略tool_choice。我们实测强制指定某个函数时,doubao-seed-2-1-pro-260628照做调用了,而doubao-seed-2-1-pro-260915直接用文字回答。需要强制或禁止工具调用时,请用doubao-seed-2-1-pro-260628或doubao-seed-2-1-lite-260915。- 除
doubao-seed-character-260628外都默认思考。别把doubao-seed-*对话模型 ID 和doubao-seedance-*视频模型 ID 搞混。
跨家族统一处理错误
OpenAI 协议下,网关错误格式统一为 {"error": {"code": ..., "message": ..., "type": ...}}。请按 HTTP 状态码和 code 分支处理,不要匹配 message 文本——它会随 Accept-Language 请求头变化。最常见的几个:
- 404
model_not_found:这个模型不在该 Key 的任何分组里。重新查一次/v1/models。 - 402
insufficient_quota:余额用完,或该 Key 自己的消费上限已到。 - 429
user_concurrency_limit/apikey_concurrency_limit:在途请求过多。超出的请求会被立即拒绝而不是排队,请退避重试。
没产生任何输出就失败的请求不计费。
如何为国产模型挑选网关
想用一个 Key 调这些模型,从自建代理到托管服务都有选择。决定之前可以核对:
- 是否提供带日期的精确模型 ID(例如
deepseek-v4.1-flash-1017),而不只是「deepseek-latest」。 include_reasoning、enable_thinking、reasoning_content这类模型专属参数能否原样透传。- 能否通过 API 看到每次请求的费用,失败请求是否免费。
- 能否验证回答你的确实是你请求的那个模型。我们的可复现保真度检测方法对任何服务商都适用。
- Claude、GPT 能否和国产模型放在同一个 Key、同一个余额下。
常见问题
能用 OpenAI Python SDK 调用 DeepSeek、千问和 Kimi 吗?
可以。设置 base_url="https://api.hop-base.com/v1",填模型 ID 即可。include_reasoning(Kimi)、enable_thinking(千问)这类模型专属字段放进 extra_body。
需要中国手机号或中国的付款方式吗?
不需要。在 api.hop-base.com 用邮箱或 Google、GitHub 账号注册,余额和扣费都以美元计。充值页会在付款前显示付款币种、手续费和到账金额。
一个 Key 能同时调 Claude 和 DeepSeek 吗?
能,只要这个 Key 挂了两边的分组。Claude 走 Anthropic 协议,地址是 https://api.hop-base.com;DeepSeek 走 OpenAI 协议,地址是 https://api.hop-base.com/v1。每次请求按实际服务该模型的分组计费。
为什么 Kimi K3 不返回思考过程?
Kimi K3 只有在请求带 "include_reasoning": true 时才返回 reasoning_content。不管返不返回,思考 token 都按输出计费,并计入 max_tokens。
完整的参数限制在哪里看?
见 DeepSeek、通义千问、GLM-5.3、Kimi K3 文档和模型列表。价格见 hop-base.com/pricing。