文档OriHub
OpenAI SDK
为了满足开发者对 OpenAI API 生态的使用需求,我们的 API 新增了对 OpenAI API 格式的支持。通过简单的配置,即可将 OriHub 的能力接入到 OpenAI API 生态中。
第一步: 安装 OpenAI SDK
Python
pip install openai
Node.js
npm install openai
第二步:配置环境变量
两种用法都只改两处:base_url 指向 https://api.lk888.ai/v1,api_key 填你的 sk- 密钥。
SDK 默认读这两个环境变量,设好就够:
export OPENAI_API_KEY=sk-xxxxxxxx
export OPENAI_BASE_URL=https://api.lk888.ai/v1
第三步:调用 API
客户端不用传参,读上一步配好的环境变量就行。
Python
from openai import OpenAI
client = OpenAI()
reply = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "介绍一下你自己"}],
)
print(reply.choices[0].message.content)
Node.js
import OpenAI from 'openai';
const client = new OpenAI();
const reply = await client.chat.completions.create({
model: 'deepseek-v4.1-flash',
messages: [{ role: 'user', content: '介绍一下你自己' }],
});
console.log(reply.choices[0].message.content);
第四步:特别注意
base_url要带/v1—— OpenAI 协议的端点是/v1/chat/completions,只填到域名会 404- 鉴权只认
Authorization: Bearer - 非流式是同步等上游跑完的。推理模型配上大
max_completion_tokens可能跑过 10 分钟 —— 客户端读超时给到 1800 秒,或者干脆用流式(推荐) - 推理模型的 reasoning token 和正文共用同一份
max_tokens预算。预算给小了会 HTTP 200 但content为空、全在reasoning_content里、finish_reason=length(这不是报错)。至少给 2000 - 分组路由由密钥的调度策略决定,请求体里的
channel_group和请求头X-Channel-Group都不改路由
支持的模型
使用 OpenAI SDK 时,支持以下模型 —— 56 个,10 家厂商,协议一样、代码不用改:
OpenAI —— GPT-4o、GPT-5.2 Codex、GPT-5.4、GPT-5.4 mini、GPT-5.4 nano、GPT-5.5、GPT-5.6 luna、GPT-5.6 sol、GPT-5.6 terra、GPT-6 astra、GPT-6 luna、GPT-6 sol、GPT-6.1 sol
阿里巴巴 —— Qwen 3.5 Flash、Qwen 3.5 Plus、Qwen 3.6 Flash、Qwen 3.6 Plus、Qwen 3.7 Max、Qwen 3.7 Plus、Qwen 3.8 Flash、Qwen 3.8 Flash Next、Qwen 3.8 Max、Qwen 3.8 Max 0902
DeepSeek —— DS-V3.2、DS-V4-Flash、DS-V4-Flash-0731、DS-V4-Flash-Vision-Exp、DS-V4-Pro、DS-V4-Pro-0813、DS-V4.1-Flash
xAI —— Grok 4-20、Grok 4.3、Grok 4.5、Grok 4.6、Grok 4.7、Grok build-0.1
字节跳动 —— Doubao Seed 1.8、Doubao Seed 2.0 Pro、Doubao Seed 2.1 Pro、Doubao Seed 2.1 Turbo、Doubao Companion、Doubao Seed Evolving
月之暗面 —— Kimi K2.6、Kimi K3、Kimi K2.7 Code、Kimi K2.7 Code Highspeed
智谱AI —— GLM-5.2、GLM-5.3、GLM-5.3 Flash、GLM-5.3 FlashX
MiniMax —— MiniMax-M2.7、MiniMax-M3、MiniMax-M3.1-Flash
小米 —— mimo-v2.5-pro、mimo-v2.6-pro
阶跃星辰 —— Step 3.7 Flash
兼容性说明
支持的参数
在使用 OpenAI SDK 接入时,我们支持以下输入参数:
model—— 模型名(必填)messages—— 消息数组,每条带role(system / user / assistant)和content(必填)stream—— 是否流式输出(可选)temperature—— 0–2(可选)max_tokens—— 最大输出 token 数(可选)
Messages 字段支持
messages 是数组,每条消息两个字段:role 和 content。
{
"model": "deepseek-v4.1-flash",
"messages": [
{ "role": "system", "content": "你是一个简洁的助手" },
{ "role": "user", "content": "你好" }
]
}
role有system/user/assistant三种,模型自己说过的话记作assistant- system 提示词就写在
messages里,没有单独的顶层字段(这点跟 Anthropic 格式相反) - 多轮就是按顺序往数组里追加,前面几轮原样留着
- 工具调用那轮 assistant 消息带
tool_calls,工具结果作为下一条role: "tool"的消息,带上对应的tool_call_id
注意
- 错误体是
{"error": {"message": "错误描述", "type": "错误类型"}};常见状态码:401 密钥无效、402 余额不足、429 请求过多 - 分组路由由密钥的调度策略决定(价格优先 / 速度优先 / 成功率优先),请求体里的
channel_group和请求头X-Channel-Group都不改路由
Responses 接口
/v1/responses 也支持,请求体用 input,可以是一段字符串:
reply = client.responses.create(
model="tt-6-luna",
input="介绍一下你自己",
)
print(reply.output[0].content[0].text)
这个端点跟 Chat Completions 是同一批模型 —— GPT 全系都能走,两个端点二选一。
它是无状态透传:平台每次请求独立调度线路,previous_response_id 不保证能用(跨线路会返回 previous_response_not_found),store=true 也不跨线路生效。多轮对话要把上一轮的完整输出原样追加进 input,别指望服务端替你记着。
示例代码
流式响应
Python:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "介绍一下你自己"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
Node.js:
const stream = await client.chat.completions.create({
model: 'deepseek-v4.1-flash',
messages: [{ role: 'user', content: '介绍一下你自己' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}
- 标准 SSE 流:每条
data: {json},结束时发data: [DONE] - 这次调用花了多少,响应头
X-Task-Id是任务号,照首次调用 API那页查