OHUB API Reference
OHUB 是 GoodPoint 的统一模型网关,提供 OpenAI 兼容接口、API Key 管理、模型路由、用量统计和算力计费能力。本文档描述当前系统真实可用的接入方式。
Base URL
https://ohub.goodpoint.top/ohub/v1协议:HTTPS
格式:JSON
认证:Bearer Token
兼容:OpenAI Chat Completions
Overview
OHUB 对外暴露一个 OpenAI 兼容的 Base URL。调用方只需要替换 API Key、Base URL 和模型 ID,即可接入后台已配置的模型渠道。
OpenAI Base URL
https://ohub.goodpoint.top/ohub/v1Chat Endpoint
POST /chat/completions当前线上代理路径为 /ohub/v1/,会转发到内部 relay 服务的 /v1/。调用方不需要关心内部端口和容器。
Quickstart
以下示例使用当前系统真实 Token 前缀 sk-hy-。完整 Token 只在创建时展示一次。
curl https://ohub.goodpoint.top/ohub/v1/chat/completions \
-H "Authorization: Bearer sk-hy-YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{ "role": "system", "content": "你是一个严谨的技术助手。" },
{ "role": "user", "content": "用一句话介绍 OHUB。" }
],
"stream": false
}'成功时返回 OpenAI 兼容 JSON。若请求失败,响应体会包含 error.message、error.type 等字段。
Authentication
所有模型调用接口都必须在 HTTP Header 中携带 Bearer Token:
Authorization: Bearer sk-hy-YOUR_TOKEN当前系统生成格式为 sk-hy-{32位随机十六进制字符},数据库只保存 SHA-256 哈希,完整 Token 无法二次查看。
Chat Completions
/chat/completions创建模型响应。OHUB 会根据 Token 分组、模型 ID 和 Ability 映射选择可用渠道。
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| model | string | 必填 | 要调用的模型 ID,必须与 OHUB 可用模型列表中的 modelId 完全一致。 |
| messages | array | 必填 | 对话消息列表,元素包含 role 与 content。role 支持 system、user、assistant。 |
| stream | boolean | 可选 | 是否开启 SSE 流式输出。true 为流式,false 或省略为非流式。 |
| temperature | number | 可选 | 采样温度。OHUB 会透传给上游,实际范围以所选上游模型为准。 |
| top_p | number | 可选 | 核采样参数。OHUB 会透传给上游,实际支持情况以所选模型为准。 |
| max_tokens | integer | 可选 | 最大输出 token 数。不能超过模型与上游渠道限制。 |
| presence_penalty | number | 可选 | 话题新颖度惩罚。是否生效取决于上游模型。 |
| frequency_penalty | number | 可选 | 重复惩罚。是否生效取决于上游模型。 |
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| role | string | 必填 | 消息角色:system、user、assistant。 |
| content | string | 必填 | 消息内容。当前文档示例以文本输入为准。 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 响应 ID,由上游模型服务返回。 |
| object | string | 对象类型,通常为 chat.completion 或 chat.completion.chunk。 |
| created | integer | Unix 时间戳。 |
| model | string | 实际响应模型名。 |
| choices | array | 候选结果列表,非流式响应中包含 message。 |
| usage | object | token 用量统计,包含 prompt_tokens、completion_tokens、total_tokens。 |
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1710000000,
"model": "deepseek-v4-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "OHUB 是一个 OpenAI 兼容的统一模型网关。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 18,
"total_tokens": 38
}
}Streaming
设置 stream: true 后,接口以 Server-Sent Events 返回增量内容。客户端应逐行读取 data: 事件,直到收到 [DONE]。
curl https://ohub.goodpoint.top/ohub/v1/chat/completions \
-H "Authorization: Bearer sk-hy-YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{ "role": "user", "content": "写一段欢迎语" }],
"stream": true
}'data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"delta":{"content":"你好"},"index":0}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"delta":{"content":",欢迎使用 OHUB"},"index":0}]}
data: [DONE]Models
请求中的 model 不是展示名称,而是模型 ID。模型 ID 必须同时满足:
*。default。请求中的模型 ID 必须与上方可用模型列表中的 modelId 完全一致,否则会返回 403 或 503 错误。
SDK
OHUB 的 Base URL 已包含 /v1,OpenAI SDK 中请直接填写完整 Base URL。
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.OHUB_API_KEY,
baseURL: 'https://ohub.goodpoint.top/ohub/v1',
})
const completion = await client.chat.completions.create({
model: 'deepseek-v4-flash',
messages: [
{ role: 'user', content: '你好,OHUB' },
],
})
console.log(completion.choices[0]?.message?.content)from openai import OpenAI
client = OpenAI(
api_key="sk-hy-YOUR_TOKEN",
base_url="https://ohub.goodpoint.top/ohub/v1",
)
completion = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "你好,OHUB"}],
)
print(completion.choices[0].message.content)Errors
| HTTP 状态码 | 错误类型 | 说明 |
|---|---|---|
| 400 | invalid_request_error | 请求体格式错误、缺少 model/messages,或参数类型不正确。 |
| 401 | invalid_api_key | Authorization 缺失、Token 格式错误、Token 不存在、已禁用或已过期。 |
| 402 | insufficient_quota | 账户余额不足、Token 额度不足,或调用前余额预检查未通过。 |
| 403 | model_not_allowed | Token 的允许模型列表不包含当前 model,或 Token 分组没有对应 Ability 映射。 |
| 404 | not_found | 请求路径不存在。请确认 Base URL 为 /ohub/v1,接口路径为 /chat/completions。 |
| 429 | rate_limit_exceeded | 触发 RPM、TPM、并发限制或平台级限流。 |
| 503 | no_available_channel | 模型没有可用渠道、渠道未启用、渠道连续失败被自动禁用,或 Ability 映射缺失。 |
| 500 | relay_error | 中继服务或上游模型服务异常。可稍后重试或联系管理员查看审计日志。 |
排查优先级:先看 HTTP 状态码,再看 error.type,最后看 error.message 中的上游原始提示。
Limits & Billing
Token 支持配置额度、并发、RPM、TPM、允许模型、IP 白名单和黑名单。调用前系统会进行 Token 校验、模型权限校验和余额预检查。
计费口径
系统统一使用算力计价(1元 = 10算力),管理员按元录入后自动换算。实际扣费以调用完成后的 usage token 数为准。
超时与重试
relay 会根据后台配置执行重试和超时控制。连续失败的渠道可被自动禁用,避免影响后续请求。