接入说明
接口遵循 OpenAI 协议。如果你已经在用 openai-python、openai-node、LangChain 或 LlamaIndex,改 base_url 和 api_key 即可,其他代码不需要调整。
快速开始
以下两段代码完整可运行,可直接复制。
Python
# 1. 安装官方 OpenAI SDK(我们完全兼容其协议)
pip install openai
# 2. 配置环境变量
export PLUS1_API_KEY="sk-p1c-..."
# 3. 发出第一个请求
from openai import OpenAI
import os
client = OpenAI(
base_url="https://api.plus1compute.com/v1",
api_key=os.environ["PLUS1_API_KEY"],
)
r = client.chat.completions.create(
model="qwen3-32b",
messages=[{"role": "user", "content": "你好"}],
)
print(r.choices[0].message.content)Node.js
// Node.js —— 同一个官方 SDK,换 baseURL 即可
npm install openai
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.plus1compute.com/v1',
apiKey: process.env.PLUS1_API_KEY,
});
const r = await client.chat.completions.create({
model: 'qwen3-32b',
messages: [{ role: 'user', content: '你好' }],
});
console.log(r.choices[0].message.content);目前 API Key 通过商务或技术支持渠道发放,控制台自助注册功能正在开放中。需要测试额度请联系我们,通常一个工作日内开通。
接口列表
统一 base URL:https://api.plus1compute.com/v1。认证方式为 Authorization: Bearer <API_KEY>。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/chat/completions | 对话补全,支持流式、工具调用与 JSON 模式 |
| POST | /v1/embeddings | 文本向量化,支持批量输入 |
| POST | /v1/rerank | 候选文档重排,返回相关性分数与排序 |
| GET | /v1/models | 列出当前账号可用的模型及其上下文长度 |
| POST | /v1/batches | 提交离线批量推理任务,按低价档结算 |
| GET | /v1/batches/{id} | 查询批量任务状态与结果下载地址 |
| POST | /v1/fine_tuning/jobs | 创建 LoRA / SFT 微调任务 |
| GET | /v1/usage | 按时间区间查询 token 用量与费用 |
请求与响应结构与 OpenAI 对应接口一致,包括 stream、tools、response_format 与 usage 字段。差异之处(如 rerank 为我们的扩展接口)在完整文档中标注。
SDK 与集成方式
没有新的客户端库,能用官方 SDK 的地方就用官方 SDK。
Python
openai-python
官方 OpenAI SDK 直接可用;另提供 plus1-sdk 封装批量与微调接口。
Node.js / TypeScript
openai-node
同样直接兼容,含完整 TypeScript 类型定义。
LangChain / LlamaIndex
ChatOpenAI
作为 OpenAI 兼容端点接入,无需自定义 Provider。
MCP
Model Context Protocol
提供 MCP Server,可直接被支持 MCP 的客户端发现和调用。
HTTP / cURL
REST
无 SDK 环境下直接调用;Java、Go、PHP、C# 均可。
Dify / n8n / Coze
OpenAI-compatible
在自定义模型处填入我们的 base_url 与 key 即可。
速率限制与配额
配额为硬性限制。提额走工单,一般一个工作日内处理。
| 档位 | 并发请求 | QPM | TPM (token/分) | Batch 队列 |
|---|---|---|---|---|
开发者 |
8 | 60 | 40K | — |
企业 |
64 | 600 | 400K | 5,000 |
企业(提额后) |
256 | 2,400 | 1.6M | 20,000 |
专属实例 |
自定义 | Custom | 自定义 | 自定义 |
务必配置降级链路
任何单一推理供应商都会有不可用的时刻,包括我们。生产系统应该在客户端配置好重试、退避与供应商切换。
- 429 时立即切换供应商,不要原地重试
- 5xx 用指数退避,最多两次
- 设置明确的 timeout,别用默认无限等待
- 关键路径准备非 LLM 兜底(规则或缓存)
# 建议:始终配置降级链路。主服务异常时自动切换,
# 包括切换到其他供应商 —— 我们的接口不会阻止你这样做。
PROVIDERS = [
("https://api.plus1compute.com/v1", os.environ["PLUS1_API_KEY"], "qwen3-32b"),
("https://backup.example.com/v1", os.environ["BACKUP_KEY"], "qwen3-32b"),
]
def chat_with_fallback(messages, retries=2):
for base, key, model in PROVIDERS:
for attempt in range(retries):
try:
c = OpenAI(base_url=base, api_key=key, timeout=30)
return c.chat.completions.create(model=model, messages=messages)
except (APITimeoutError, InternalServerError):
time.sleep(2 ** attempt) # 指数退避
except RateLimitError:
break # 换供应商,别硬等
raise RuntimeError("all providers exhausted")错误码
| 状态码 | 类型 | 含义与处置建议 |
|---|---|---|
| 400 | invalid_request_error | 参数缺失或格式错误,检查 model 名称与 messages 结构 |
| 401 | authentication_error | API Key 无效或已撤销 |
| 403 | permission_error | 账号无权访问该模型,或未开通对应能力 |
| 404 | model_not_found | 模型名不存在,用 GET /v1/models 确认当前可用列表 |
| 429 | rate_limit_exceeded | 超出并发或 QPM 配额,退避重试或申请提额 |
| 500 | internal_error | 服务端异常,建议指数退避重试并触发降级链路 |
| 503 | service_unavailable | 模型实例暂时不可用,查看状态页或切换备用模型 |