从其他平台迁移

把应用从 OpenAI、OpenRouter 或 Anthropic 官方 API 迁到 HopBase:要改的三项、各 SDK 的改前改后代码、一把密钥一个分组的规则,以及不支持的功能。

把现有应用迁到 HopBase,只需要改三项:Base URL、密钥,有时还有模型名。请求体、流式处理和错误处理代码都不用动。

要改什么

OpenAIOpenRouterAnthropicHopBase
Base URLhttps://api.openai.com/v1https://openrouter.ai/api/v1https://api.anthropic.comOpenAI 协议:https://api.hop-base.com/v1
Anthropic 协议:https://api.hop-base.com(不带 /v1)
密钥OpenAI 密钥一把 OpenRouter 密钥调所有模型Anthropic 密钥在「API 密钥」里创建的 sk-…,绑定一个套餐分组
模型名gpt-5.5openai/gpt-5.5、anthropic/claude-sonnet-5claude-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。

发一个小请求

让模型「只回复 ok」,确认返回 200。404 通常是模型不在这把密钥的分组里,或 Base URL 用错了协议——见错误码与重试。

查这把密钥还能花多少

GET https://api.hop-base.com/v1/usage 返回这把密钥可用的余额,字段说明见账户与目录 API。

本页目录