用 OpenAI 官方 SDK(Python / Node)接入 GrooRoute Pro
用 OpenAI 官方 SDK 接入 GrooRoute Pro,只需要改两处:base_url 填 https://grooroute.xyz/v1,api_key 换成平台的 API Key。SDK 的其余用法不变。chat.completions 和 responses 两种写法的接口都已登记,具体模型支持哪种见下文。model 填模型页列出的模型 ID。
准备
- 注册并登录 GrooRoute Pro,在控制台的「API 密钥」里创建一把命名密钥,可以设置额度、有效期及需要的访问限制。
- 把密钥放进环境变量,不要写进代码:
export GROOROUTE_API_KEY='<your key>'
接入只用到三样东西:
| 项目 | 值 |
|---|---|
| base_url | https://grooroute.xyz/v1 |
| 鉴权 | 请求头 Authorization: Bearer <API Key> |
| 接口 | POST /v1/chat/completions、POST /v1/responses |
下面 chat.completions 的示例用 deepseek-v4.1-flash,responses 的示例用 gpt-5.6-luna,各是清单里第一个声明了对应协议的模型,可以换成模型页列出的其他模型 ID。
Python:chat.completions
创建客户端时传入 base_url 和 api_key,之后和平时一样调用。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://grooroute.xyz/v1",
api_key=os.environ["GROOROUTE_API_KEY"],
)
completion = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{"role": "user", "content": "Hello"}
],
)
print(completion.choices[0].message.content)
Python:responses
客户端的创建方式相同,把调用换成 responses.create,输入用 input。
response = client.responses.create(
model="gpt-5.6-luna",
input="Hello",
)
print(response.output_text)
Node:chat.completions
Node 的 SDK 里参数名是 baseURL 和 apiKey。
import OpenAI from 'openai'
const client = new OpenAI({
baseURL: "https://grooroute.xyz/v1",
apiKey: process.env.GROOROUTE_API_KEY,
})
const completion = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [{ role: 'user', content: 'Hello' }],
})
console.log(completion.choices[0].message.content)
Node:responses
const response = await client.responses.create({
model: "gpt-5.6-luna",
input: 'Hello',
})
console.log(response.output_text)
不用 SDK:curl
想先确认地址和密钥没有问题,可以直接发一个请求。请求路径是 base_url 后面加 /chat/completions。
curl https://grooroute.xyz/v1/chat/completions \
-H "Authorization: Bearer $GROOROUTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Hello"}]}'
返回 JSON 说明地址和密钥都对。返回 401 先检查密钥,返回 404 先检查地址里的 /v1,细节见常见报错排查。
两种写法怎么选
chat.completions 对应接口 /v1/chat/completions,responses 对应接口 /v1/responses,两者都是平台登记的协议端点。端点登记不代表每个模型、每个档位都已开放这种协议:发送请求前,请在接入文档页选择你的 Key 和模型,确认它支持的协议。
下表是平台已发布、并且当前有供给的模型,以及各自的供给声明支持的接口。接口一列合并了公开可用档位的声明,以接入文档页为准:
| 模型 ID | 支持的接口 |
|---|---|
deepseek-v4.1-flash | POST /v1/chat/completions |
gpt-5.6-luna | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gpt-5.6-sol | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gpt-5.6-terra | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gpt-6-astra | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gpt-6-luna | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gpt-6-sol | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gpt-6.1-sol | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
grok-4.7 | POST /v1/chat/completions、POST /v1/responses |
gpt-image-1.5 | 未声明 |
gpt-image-2 | 未声明 |
gpt-image-2.5-flare | 未声明 |
gpt-image-2.5-sunburst | 未声明 |
claude-opus-5-5 | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
claude-sonnet-5-5 | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
claude-fable-5-1 | POST /v1/chat/completions、POST /v1/messages |
gemini-3.8-flash | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
gemini-4-argon | POST /v1/chat/completions、POST /v1/messages、POST /v1/responses |
已有项目用的是哪一种就继续用哪一种,只改 base_url 和密钥即可。想知道一把 Key 能用哪些模型,可以带上这把 Key 调用 GET /v1/models。
要点
base_url以/v1结尾,后面不要再加/chat/completions之类的接口路径,那一段由 SDK 自己补。- 密钥用的是 GrooRoute Pro 的 API Key,一把密钥可以调用账户可用的各个模型。
- 按模型的实际用量计费,价格见模型页,说明见计费说明。
常见问题
base_url 要不要带 /v1?
要。OpenAI SDK 只在你给的地址后面补 /chat/completions 或 /responses,所以地址本身要以 /v1 结尾。
chat.completions 和 responses 该用哪一个?
两个都是平台登记的 OpenAI 兼容接口。一个模型在你这把 Key 的档位上开放哪种协议,以接入文档页按 Key 和模型生成的配置为准。
model 填什么?
填模型页列出的模型 ID,也可以用你的 Key 调用 GET /v1/models 查看这把 Key 能用的模型。
API Key 写在代码里可以吗?
不建议。示例都从环境变量读取 Key,Key 不进代码仓库。
最后更新: