Ori联系我们

文档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那页查