从其他平台迁移
把应用从 OpenAI、OpenRouter 或 Anthropic 官方 API 迁到 HopBase:要改的三项、各 SDK 的改前改后代码、一把密钥一个分组的规则,以及不支持的功能。
把现有应用迁到 HopBase,只需要改三项:Base URL、密钥,有时还有模型名。请求体、流式处理和错误处理代码都不用动。
要改什么
| OpenAI | OpenRouter | Anthropic | HopBase | |
|---|---|---|---|---|
| Base URL | https://api.openai.com/v1 | https://openrouter.ai/api/v1 | https://api.anthropic.com | OpenAI 协议:https://api.hop-base.com/v1Anthropic 协议: https://api.hop-base.com(不带 /v1) |
| 密钥 | OpenAI 密钥 | 一把 OpenRouter 密钥调所有模型 | Anthropic 密钥 | 在「API 密钥」里创建的 sk-…,绑定一个套餐分组 |
| 模型名 | gpt-5.5 | openai/gpt-5.5、anthropic/claude-sonnet-5 | claude-sonnet-5 | 不带厂商前缀,按 GET /v1/models 返回的原样填写:gpt-5.5、claude-sonnet-5 |
各模型系列走哪种协议,见 Base URL 与协议。
一把密钥 = 一个分组 = 一个模型系列
每个分组各建一把密钥。这和 OpenRouter 正好相反——OpenRouter 一把密钥能调所有模型。HopBase 的密钥只绑定一个套餐分组:GET /v1/models 只返回这个分组的模型,调用分组外的模型返回 404 model_not_found。同时用 Claude 和 GPT 的应用需要两把密钥(一把 Claude 分组、一把 Codex Plus 或 Codex Pro 分组),在代码里按模型选用。
OpenAI SDK
设置 Base URL、换掉密钥即可。gpt-5.5 这类 OpenAI 模型 ID 只要出现在这把密钥的 GET /v1/models 里,就不用改。
import os
from openai import OpenAI
client = OpenAI(
- api_key=os.environ["OPENAI_API_KEY"],
+ base_url="https://api.hop-base.com/v1",
+ api_key=os.environ["HOPBASE_OPENAI_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Hello"}],
)不想改代码的话,两个 SDK 都会读取环境变量 OPENAI_BASE_URL 和 OPENAI_API_KEY:分别设为 https://api.hop-base.com/v1 和你的 HopBase 密钥。更多示例见 OpenAI SDK。
Anthropic SDK
Claude 继续走 Anthropic Messages API。Base URL 不带 /v1,密钥用「Claude Max (官号满血版)」分组的。「Claude Max (ccmax)」分组的密钥只能在 Claude Code 客户端里用,SDK 调用会失败。
import os
from anthropic import Anthropic
client = Anthropic(
- api_key=os.environ["ANTHROPIC_API_KEY"],
+ base_url="https://api.hop-base.com",
+ api_key=os.environ["HOPBASE_CLAUDE_API_KEY"],
)
msg = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)同样可以只改环境变量:ANTHROPIC_BASE_URL=https://api.hop-base.com。详见 Anthropic SDK。
OpenRouter
改 Base URL 和密钥,去掉模型名里的厂商前缀,并删掉 OpenRouter 的来源标识请求头——HopBase 用不到它们。
import os
from openai import OpenAI
client = OpenAI(
- base_url="https://openrouter.ai/api/v1",
- api_key=os.environ["OPENROUTER_API_KEY"],
- default_headers={"HTTP-Referer": "https://your-app.example", "X-Title": "Your App"},
+ base_url="https://api.hop-base.com/v1",
+ api_key=os.environ["HOPBASE_OPENAI_API_KEY"],
)
resp = client.chat.completions.create(
- model="openai/gpt-5.5",
+ model="gpt-5.5",
messages=[{"role": "user", "content": "Hello"}],
)如果你之前是通过 OpenRouter 的 OpenAI 兼容端点调 Claude,HopBase 上 Claude 没有这条路径:请按上一节改用 Anthropic SDK 和 Claude 分组密钥。其他系列(Gemini、GLM、通义千问、DeepSeek、Kimi、Grok)继续用 OpenAI SDK,各用自己分组的密钥。
不支持的功能
| 你可能在用的 | 在 HopBase 上 |
|---|---|
通过 /v1/chat/completions 或 /v1/responses 调 Claude | 返回 404。请改用 Anthropic Messages——Anthropic SDK |
通过 /v1/responses 或 Gemini 原生 SDK 路径调 Gemini | 只支持 Chat Completions——Gemini 对话 |
通过 /v1/responses 调 Kimi K3 | 只支持 Chat Completions——Kimi K3 |
| Embeddings、语音转写、Files、Batch、Assistants、微调、内容审核接口 | 不提供,这些路径返回 404 |
| 一把密钥调所有模型 | 每个分组各一把密钥(见上文) |
OpenRouter 的模型候补列表(models)、provider 路由、:online / :free 这类模型后缀 | 不支持,删掉后只传一个模型 ID |
完整端点列表见 Base URL 与协议。
迁移后检查
列出密钥可用的模型
用新密钥调 GET https://api.hop-base.com/v1/models,只使用响应里出现的 ID。
查这把密钥还能花多少
GET https://api.hop-base.com/v1/usage 返回这把密钥可用的余额,字段说明见账户与目录 API。