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 请求
httpPOST 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。
{
"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)
pythonfrom 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)
tsimport 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_format | json_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