OneProvider

Chat Completions

用 OpenAI 请求格式调用 POST /v1/chat/completions,从 Claude 模型获得 OpenAI 风格的响应。附 Python 和 Node 示例。

POST /v1/chat/completions 接受 OpenAI 的请求结构,并返回 OpenAI 的响应结构。相比您现有的 OpenAI 代码,唯一必须替换的只有模型 ID。

全部模型、功能与价格 面向 AI 智能体的文档索引: https://oneprovider.dev/docs/llms.txt

请求

http
POST https://api.oneprovider.dev/v1/chat/completions
Authorization: Bearer sk-...
content-type: application/json
{
"model": "claude-sonnet-5-5",
"messages": [
{ "role": "system", "content": "You are concise." },
{ "role": "user", "content": "Why is the sky blue?" }
],
"max_tokens": 256,
"stream": false
}

响应

结构与 OpenAI 一一对应:id、choices[].message、usage。

json
{
"id": "chatcmpl_01...",
"object": "chat.completion",
"created": 1715472000,
"model": "claude-sonnet-5-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Rayleigh scattering..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 48,
"completion_tokens": 92,
"total_tokens": 140
}
}

OpenAI SDK (Python)

python
from openai import OpenAI
client = OpenAI(
api_key="<OPENAI_API_KEY>",
base_url="https://api.oneprovider.dev/v1",
)
r = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Say hi."}],
)
print(r.choices[0].message.content)

OpenAI SDK (Node)

ts
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: "https://api.oneprovider.dev/v1",
});
const r = await client.chat.completions.create({
model: "claude-sonnet-5-5",
messages: [{ role: "user", content: "Say hi." }],
});
console.log(r.choices[0].message?.content);

字段映射

参考数据
OpenAI 字段在 OneProvider 上的行为
messages原样转发;system 角色会被提取到 Anthropic 的 system 中。
max_tokens原样转发。
temperature, top_p原样转发。
tools, tool_choice转换为 Anthropic 的 tools / tool_choice,规范化方式与工具调用 相同。
stream原样转发;输出 OpenAI 格式的 SSE 数据块(不是 Anthropic 事件)。
response_formatjson_object 通过系统提示生效。严格的 json_schema 模式目前会被忽略。
logprobs, top_logprobs忽略:模型不提供这些功能。
seed忽略:不支持。
n > 1只返回一个 choice。如果需要 N 个样本,请调用该端点 N 次。
选定一种传输格式并坚持使用 /v1/chat/completions 和 /v1/messages 调用的是同样的模型,价格也相同。Chat Completions 会把 OpenAI 格式映射到模型上;原生的 Messages 端点则省去这一步。对于全新项目,我们推荐 /v1/messages 。如果是从 OpenAI 迁移,使用 Chat Completions 最快。

快速解答

该使用哪个 base URL?

Claude Code 和 Anthropic SDK 使用 https://api.oneprovider.dev。OpenAI SDK 和兼容 OpenAI 的客户端使用 https://api.oneprovider.dev/v1。同一个密钥可用于这两个地址;模型列表见模型页面 ,费率见价格页面 。

如何进行身份验证?

将完整的 sk-… 密钥放在 x-api-key 或 Authorization: Bearer 中,二选一,不要同时使用。请把密钥存放在环境变量中,不要写进会被提交的文件。了解更多身份验证说明 。

在哪里获取密钥?

在 Telegram 机器人 @oneprovider_robot 或 app.oneprovider.dev 打开您的个人中心,为余额充值,然后点击“签发密钥”。每个密钥都可以设置各自的消费限额。个人中心与 API 密钥 。

401、404 和 429 是什么意思?

401:密钥缺失、拼写有误或放错了请求头;请粘贴完整的密钥,不要带引号或空格。404:通常是 base URL 不对,例如缺少或重复了 /v1。429 且提示“Insufficient balance”:个人中心余额或密钥的消费限额已用完,请充值,不要反复重试;其他 429 属于速率限制,请等待 Retry-After 指定的时间。详情见:错误码 和故障排查 。

流式输出为什么会中断或被重置?

VPN 和 VLESS 代理常常会缓冲 SSE,或破坏 HTTP/2 协商。OneProvider 没有地区限制,也不会缓冲流式输出,请关闭代理后重试。

以上都没解决,该去哪里咨询?

请在 Telegram 联系 @Oneproviderhelpbot ,或在网页个人中心打开“客服”,并附上 HTTP 状态码和完整的错误信息。客服如何运作 。

最后更新: 2026-11-08 发现问题? @Oneproviderhelpbot