能用一个 API Key 同时调用 Claude、GPT、Gemini、DeepSeek 的服务主要有两类:托管的多模型网关(如 OpenRouter、HopBase),以及自己部署的开源网关(如 LiteLLM、One API,但模型账号仍要你逐家去开)。以 HopBase 为例,一把 Key 可包含 1–10 个分组,覆盖 Claude、GPT、Gemini、DeepSeek、千问、GLM、Kimi、豆包、混元和 Grok;GPT、Gemini 和国产模型走 OpenAI 兼容地址 https://api.hop-base.com/v1,Claude 走 Anthropic Messages 地址 https://api.hop-base.com(不带 /v1)。同一协议下换模型只改 model 字段。下面给出可直接运行的 curl 与 Python 示例,以及几种做法的中立对比表。
一把 Key 怎么覆盖多家模型:两种协议
多模型网关并不会把所有模型都塞进同一种请求格式。实际做法是:绝大多数模型用 OpenAI 兼容格式,Claude 保留 Anthropic 原生 Messages 格式。两种协议用同一把 Key,只是 Base URL 和接口路径不同。
| 协议 | Base URL | 接口 | 适用模型 | 鉴权 |
|---|---|---|---|---|
| OpenAI 兼容 | https://api.hop-base.com/v1 | POST /v1/chat/completions(部分模型另有 /v1/responses) | GPT、Gemini、DeepSeek、千问、GLM、Kimi、豆包、混元、Grok | Authorization: Bearer |
| Anthropic Messages | https://api.hop-base.com(不带 /v1) | POST /v1/messages | Claude(只走这条);Gemini、DeepSeek、豆包也可用 | x-api-key |
两个容易踩的点:Claude 只能走 /v1/messages,发到 /v1/chat/completions 会返回 404;kimi-k3 只走 Chat Completions,在 /v1/responses 和 /v1/messages 上返回 404。
Key 能调哪些模型,由分组决定
- 在控制台「API 密钥」里创建 Key,勾选 1–10 个分组。一个分组对应一个模型家族,例如 Claude、DeepSeek、千问、GLM、Kimi K3。
- 用
GET /v1/models查看这把 Key 能调的模型,返回的是所选分组模型的并集。 - 只用返回列表里的完整模型 ID。请求不在分组内的模型会返回 404
model_not_found,不会被悄悄换成别的模型。 - 每个请求由覆盖该模型的那个分组服务和计费,用量记录里能看到是哪个分组。
注意:模型重叠的分组不能放在同一把 Key 里,订阅类分组必须单独一把 Key。
代码示例:只改 model 字段切换模型
第一步,看这把 Key 能调什么:
curl https://api.hop-base.com/v1/models \
-H "Authorization: Bearer sk-your-key"
第二步,用 OpenAI 兼容格式调 DeepSeek。换成千问或 GLM 只需改 model:
curl https://api.hop-base.com/v1/chat/completions \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "Reply with only: ok"}]
}'
第三步,在 Python 里用同一个 OpenAI 客户端轮流调用六个模型家族。这里假设 Key 已包含 GPT(Codex Plus 或 Codex Pro)、Gemini、DeepSeek、千问、GLM 和 Kimi K3 分组:
# pip install openai
from openai import OpenAI
client = OpenAI(base_url="https://api.hop-base.com/v1", api_key="sk-your-key")
for model in ["gpt-5.6-sol", "gemini-3.8-flash", "deepseek-v4.1-flash",
"qwen3.8-max", "glm-5.3", "kimi-k3"]:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(model, "->", resp.choices[0].message.content)
第四步,Claude 用 Anthropic SDK,Base URL 不带 /v1,Key 需包含 Claude 分组。建议显式设置 max_tokens,不填时会按 4096 补齐:
# pip install anthropic
import anthropic
client = anthropic.Anthropic(base_url="https://api.hop-base.com", api_key="sk-your-key")
msg = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(msg.content[0].text)
如果某个模型返回 {"error":{"code":"model_not_found",...}},先重新调一次 /v1/models,再到控制台给 Key 加上对应分组。
几种做法对比
下表只写可核实的事实。OpenRouter 一列依据其公开文档与公开模型接口,核对日期 2026-11-05;公开页没写的项写「公开页未列出」,不代表没有。
| 维度 | 分别对接各厂商 | 自建开源网关(LiteLLM、One API) | OpenRouter | HopBase |
|---|---|---|---|---|
| 国产模型覆盖 | 每家单独注册、认证、充值 | 取决于你开通了哪些厂商账号 | 公开模型列表含 DeepSeek、Qwen、GLM(z-ai)、Kimi(moonshotai)、ByteDance Seed | DeepSeek、千问、GLM、Kimi、豆包、混元 |
| Claude 原生 Messages | Anthropic 自有 API 即原生 | 取决于项目与版本配置 | 文档说明提供兼容 Anthropic Messages API 的入口,Claude Code 设 ANTHROPIC_BASE_URL=https://openrouter.ai/api | 支持,https://api.hop-base.com + /v1/messages |
| 团队额度与部门 | 各厂商控制台各管各的 | 项目通常带虚拟 Key 与额度,部门层级需自行配置 | Organization 共享额度池,admin / member 角色;成员级额度公开页未列出 | 成员、部门,密钥 / 成员 / 部门三级额度 |
| 计费币种与付款 | 各家币种与付款方式不同 | 软件免费,模型费用按各厂商付 | 美元 credits;主流信用卡、Alipay、USDC | 美元按量;支付宝、微信支付、Visa / Mastercard |
| 逐请求对账 | 各家账单分别核对 | 网关日志与各厂商账单需自行对齐 | Activity 页可按模型、API key 筛选历史用量 | CSV 每行含官方成本、折扣、汇率、实扣,可复算「官方成本 × 折扣 ÷ 汇率 = 实扣」 |
怎么选
- 只用一两家、已有合同:分别对接各厂商最简单。
- 有数据驻留要求、团队有运维人手:自建 LiteLLM 或 One API,软件可控,但账号、高可用和对账都要自己做。
- 海外模型为主、个人或小团队:OpenRouter 的模型覆盖面广,值得先看。
- Claude Code 与国产模型并用、需要按部门管额度和逐行对账:HopBase 一把 Key 同时给两种协议,价格按各厂商官方牌价 × 分组折扣结算,见 价格页。
国产模型各家的参数差异(思考字段、图片输入、工具调用)见 一个 Key 调用 DeepSeek、千问、GLM、Kimi 和豆包;各平台对比见 2026 年 OpenRouter 替代方案;接入步骤见 快速开始文档。准备好了可以直接 注册并创建 Key。
常见问题
一个 API Key 能同时调 Claude 和 GPT 吗?
能,前提是 Key 同时包含 Claude 分组和 GPT 分组。但两者走不同协议:GPT 用 https://api.hop-base.com/v1 的 Chat Completions 或 Responses,Claude 用 https://api.hop-base.com 的 /v1/messages。Key 是同一把,客户端要配两个 Base URL。
DeepSeek、千问、GLM、Kimi 能用 OpenAI SDK 直接调吗?
能。把 OpenAI SDK 的 base_url 设为 https://api.hop-base.com/v1,model 填 deepseek-v4.1-flash、qwen3.8-max、glm-5.3 或 kimi-k3 等 /v1/models 返回的 ID 即可,不需要加厂商前缀。
为什么换了模型名就报 404 model_not_found?
这个模型不在 Key 的分组里,或模型 ID 写错了。模型 ID 精确匹配,不会自动纠正。调 GET /v1/models 确认可用 ID;缺哪家就在控制台编辑 Key,加上对应分组(每把 Key 最多 10 个)。