OpenAI 兼容接入
树新在线是一个 OpenAI 兼容的 AI API 网关:把你代码里的 base_url 换成本站地址、换上本站的 API Key,原有调用逻辑不用改。
本站不是 OpenAI、Anthropic 或 xAI 的官方服务,与上述公司没有隶属、授权或合作关系。
| 项 | 值 |
|---|---|
| Base URL | https://api.treenew.online/v1 |
| 端点 | POST /v1/chat/completions |
| 鉴权 | Authorization: Bearer <API Key> |
| API Key | 在控制台的「令牌」页创建 |
| 模型清单 | https://treenew.online/models/ |
| 价格 | https://treenew.online/pricing/ |
Python(openai SDK)
python
from openai import OpenAI
client = OpenAI(
api_key="你的 API Key",
base_url="https://api.treenew.online/v1",
)
resp = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)Node.js(openai SDK)
javascript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: '你的 API Key',
baseURL: 'https://api.treenew.online/v1',
});
const resp = await client.chat.completions.create({
model: 'gpt-5.6-luna',
messages: [{ role: 'user', content: '你好' }],
});
console.log(resp.choices[0].message.content);注意 Node SDK 的字段名是 baseURL(URL 大写),Python 是 base_url。
curl
bash
curl https://api.treenew.online/v1/chat/completions \
-H "Authorization: Bearer 你的 API Key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-luna",
"messages": [{"role": "user", "content": "你好"}]
}'用环境变量(不改代码)
多数工具与 SDK 会自动读取这两个环境变量,设好之后连代码都不用动:
bash
export OPENAI_BASE_URL="https://api.treenew.online/v1"
export OPENAI_API_KEY="你的 API Key"Windows PowerShell:
powershell
$env:OPENAI_BASE_URL = "https://api.treenew.online/v1"
$env:OPENAI_API_KEY = "你的 API Key"有些较老的工具读的是 OPENAI_API_BASE(旧变量名),若 OPENAI_BASE_URL 不生效,两个都设上即可。
与官方 API 的差异
- 对话推理只有
POST /v1/chat/completions这一个端点,不支持 embeddings、images、audio、assistants、batch 等其他端点。 - 模型名称以 https://treenew.online/models/ 上的列表为准,不一定与官方名称一一对应。本站共提供 16 个模型,来自 Anthropic(Claude)、xAI(Grok)、OpenAI。
- 额度消耗与请求限速由账号所在分组(
default或vip)决定,不同分组计费倍率不同,价格见 https://treenew.online/pricing/。
流式输出
请求参数中设置 stream: true 时,网关通过 SSE 返回流式响应。客户端需注意:
- 逐块读取响应,每条消息以
data:开头,需解析其后的 JSON。 - 流式响应以
data: [DONE]作为结束标志。 - 网络超时或断线时应实现重连,建议采用指数退避策略。
- 如果你自己在前面还套了一层反向代理,注意它的缓冲设置。以 Nginx 为例,未关闭缓冲会把流式响应攒起来一次性吐出,需要
proxy_buffering off;。
python
from openai import OpenAI
client = OpenAI(
api_key="你的 API Key",
base_url="https://api.treenew.online/v1",
)
stream = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "你好"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)常见报错
每种报错都有独立的排查页,下面是速查对照:
| 报错 | 最可能的原因 | 详细排查 |
|---|---|---|
| 401 Unauthorized | Key 错误、漏了 Bearer 前缀、复制时混入空白字符 | 401 排查 |
| 404 model not found | 模型名与本站清单不一致,或当前分组无权限 | 模型不存在 |
| 429 Too Many Requests | 触发频率限制,或额度用尽——两者处理方式相反 | 429 排查 |
| 流式没输出 / 一次性返回 / 中途断流 | 未开 stream、中间层缓冲、客户端解析方式不对 | 流式输出失败 |
| 超时 / 502 / 504 | 客户端超时太短、中间层上限、上游生成慢 | 超时与 502 |
自查清单
base_url是否为https://api.treenew.online/v1(注意是api.子域,且以/v1结尾)- API Key 是否来自「令牌」页,请求头是否带
Bearer前缀 - 模型名是否与 https://treenew.online/models/ 列表完全一致
- 当前分组是否支持该模型、是否已触发限速
- 控制台用量页是否显示额度不足