API 调用指南
将 gahorouter 接入各家模型 SDK,只需改两个参数:api_key 和 base_url。
要求:Python ≥ 3.8
目录
- 拿 API Key 并绑定分组
- 安装 SDK
- 模型列表与倍率说明
- API 调用示例
- 请求与响应格式
- 支持的参数说明
- 常见报错
拿 API Key 并绑定分组
登录 https://console.gahorouter.com →「API Keys」→ 创建密钥,得到 cr-xxx...
在 API 密钥的「分组」列点一下,选一个匹配你要调用的模型的分组:
| 调用这家 | 必须绑这类分组 |
|---|---|
| Claude | 名字含「Claude」「旗舰」「尊享」 |
| GPT | 名字含「GPT」 |
| Gemini | 名字含「Gemini」 |
| 国内模型 | 名字含「DeepSeek / Qwen / GLM / Kimi / MiniMax」等 |
绑错了会报 401/503,回控制台重新点一下分组就行。
安装 SDK
按需装,不用全装:
bash
pip install openai anthropic google-generativeaiopenai—— 调用 GPT、国内模型anthropic—— 调用 Claudegoogle-generativeai—— 调用 Gemini
模型列表与倍率说明
倍率越高,单次调用消耗的额度越多,对应能力越强。
换模型只需修改各示例中的 model 字段。
Claude 系列
| 分组 | 模型 ID |
|---|---|
| 智能优选通道 | claude-haiku-4-5 |
| 官方尊享通道 | claude-sonnet-4-6 |
| 官方旗舰通道 | claude-opus-4-6 |
GPT 系列
| 分组 | 模型 ID |
|---|---|
| GPT-体验通道 | gpt-5.4 |
Gemini 系列
| 分组 | 模型 ID |
|---|---|
| Gemini-官方通道 | gemini-2.5-flash |
国内模型系列
| 分组 | 模型 ID |
|---|---|
| Qwen 体验通道 | qwen-plus |
| GLM 官方通道(OpenAI 接口) | glm-5.1 |
| Kimi 官方通道 | kimi-k2.5 |
| MiniMax 体验通道(OpenAI 接口) | MiniMax-M2.5 |
| DeepSeek 体验通道(OpenAI 接口) | deepseek-v3.2 |
API 调用示例
Claude
前提:Key 绑到 Claude 分组。
Python:
python
import anthropic
client = anthropic.Anthropic(
api_key="cr-xxxxxxxx",
base_url="https://console.gahorouter.com",
)
msg = client.messages.create(
model="claude-sonnet-4-6", # 换模型:claude-opus-4-6 / claude-haiku-4-5-20251001
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(msg.content[0].text)curl:
bash
curl https://console.gahorouter.com/v1/messages \
-H "x-api-key: cr-xxx" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "你好"}]
}'GPT
前提:Key 绑到 GPT 分组。⚠️ 使用 responses 接口必须加 stream=True。
Python:
python
from openai import OpenAI
client = OpenAI(
api_key="cr-xxxxxxxx",
base_url="https://console.gahorouter.com/v1",
)
stream = client.responses.create(
model="gpt-5.4", # 换模型:gpt-4o / gpt-4o-mini / o3 / gpt-5.1-codex-max
input="你好",
stream=True,
)
for ev in stream:
if ev.type == "response.output_text.delta":
print(ev.delta, end="", flush=True)curl:
bash
curl -N https://console.gahorouter.com/v1/responses \
-H "Authorization: Bearer cr-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": "你好",
"stream": true
}'Gemini
前提:Key 绑到 Gemini 分组。
Python:
python
import google.generativeai as genai
genai.configure(
api_key="cr-xxxxxxxx",
client_options={"api_endpoint": "console.gahorouter.com"},
transport="rest",
)
model = genai.GenerativeModel("gemini-2.5-pro") # 换模型:gemini-2.5-flash
print(model.generate_content("你好").text)curl:
bash
curl "https://console.gahorouter.com/v1beta/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: cr-xxx" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "你好"}]}]
}'国内模型
前提:Key 绑到对应的国内模型分组。
Python:
python
from openai import OpenAI
client = OpenAI(
api_key="cr-xxxxxxxx",
base_url="https://console.gahorouter.com/v1",
)
resp = client.chat.completions.create(
model="deepseek-v3.2", # 换模型:qwen-plus / glm-5.1 / kimi-k2.5 / MiniMax-M2.5
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)curl:
bash
curl https://console.gahorouter.com/v1/chat/completions \
-H "Authorization: Bearer cr-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v3.2",
"messages": [{"role": "user", "content": "你好"}]
}'请求与响应格式
Claude 格式
请求体:
json
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "你是一个有帮助的助手。",
"messages": [
{"role": "user", "content": "你好"}
]
}响应体:
json
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{"type": "text", "text": "你好!有什么我可以帮你的吗?"}
],
"model": "claude-sonnet-4-6",
"stop_reason": "end_turn",
"usage": {"input_tokens": 10, "output_tokens": 25}
}GPT / 国内模型格式
请求体(chat.completions):
json
{
"model": "deepseek-v3.2",
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "你好"}
],
"temperature": 0.7,
"max_tokens": 1024,
"stream": false
}响应体:
json
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "deepseek-v3.2",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "你好!有什么我可以帮你的吗?"},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 20, "completion_tokens": 15, "total_tokens": 35}
}Gemini 格式
请求体:
json
{
"contents": [
{"parts": [{"text": "你好"}]}
],
"generationConfig": {
"maxOutputTokens": 1024,
"temperature": 0.7
}
}响应体:
json
{
"candidates": [
{
"content": {"parts": [{"text": "你好!有什么我可以帮你的吗?"}], "role": "model"},
"finishReason": "STOP"
}
],
"usageMetadata": {"promptTokenCount": 3, "candidatesTokenCount": 15}
}支持的参数说明
Claude 接口
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型 ID,见上方列表 |
| max_tokens | integer | 是 | 最大输出 token 数,建议 512–8192 |
| messages | array | 是 | 对话历史,[{"role":"user","content":"..."}] |
| system | string | 否 | 系统提示词 |
| temperature | float | 否 | 随机性,0–1,默认 1 |
| top_p | float | 否 | 核采样,0–1 |
| top_k | integer | 否 | Top-K 采样 |
| stream | bool | 否 | 是否流式返回,默认 false |
| stop_sequences | array | 否 | 遇到这些字符串时停止生成 |
GPT / 国内模型 接口
chat.completions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型 ID |
| messages | array | 是 | 对话历史,含 role(system/user/assistant)和 content |
| temperature | float | 否 | 随机性,0–2,默认 1 |
| max_tokens | integer | 否 | 最大输出 token 数 |
| top_p | float | 否 | 核采样 |
| stream | bool | 否 | 是否流式返回,默认 false |
| stop | string/array | 否 | 停止词 |
| presence_penalty | float | 否 | 话题多样性,-2–2 |
| frequency_penalty | float | 否 | 重复惩罚,-2–2 |
| n | integer | 否 | 生成候选数,默认 1 |
responses(GPT 专用)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型 ID |
| input | string | 是 | 用户输入文本 |
| stream | bool | 必须为 true | 不加会返回空内容但扣费 |
| instructions | string | 否 | 系统提示词(相当于 system) |
| max_output_tokens | integer | 否 | 最大输出 token 数 |
| temperature | float | 否 | 随机性 |
Gemini 接口
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| contents | array | 是 | 对话内容,[{"parts":[{"text":"..."}]}] |
| generationConfig.maxOutputTokens | integer | 否 | 最大输出 token 数 |
| generationConfig.temperature | float | 否 | 随机性,0–2 |
| generationConfig.topP | float | 否 | 核采样 |
| generationConfig.topK | integer | 否 | Top-K 采样 |
| systemInstruction | object | 否 | 系统提示,{"parts":[{"text":"..."}]} |
常见报错
| 报错 | 原因 | 怎么办 |
|---|---|---|
| 401 Unauthorized | Key 不对 | 回控制台确认 Key 拷贝完整、没过期 |
| 403 no group bound | Key 没绑分组 | 控制台给 Key 选一个分组 |
| 503 / 404 | 分组和 SDK 不匹配 | Claude SDK 要 Claude 分组;OpenAI responses 要 GPT 分组;chat.completions 要国内模型或兼容分组 |
| 429 Too Many Requests | 上游瞬时满载 | 等几秒重试;持续报找管理员扩容 |
| 返回空内容但扣费了 | GPT 没加 stream=True | 加上就好 |