OpenAI API 调用与兼容接入指南:Base URL 怎么填、Python / Node.js 示例与客户端配置
更新于
这篇讲清楚 OpenAI 兼容接口(OpenAI Compatible API)是什么、各种客户端的 Base URL 到底填哪个、Python 和 Node.js 怎么调用、怎么流式输出,以及接入前该做哪些测试。看完可以把 API 快连接进任何支持「自定义 OpenAI 服务商」的软件或自己的代码。
https://apikl.ai/v1(带 /v1);Claude Code、Anthropic SDK 这类 Anthropic 协议的客户端填 https://apikl.ai(不带 /v1)。两种写法不要混用。OpenAI Compatible API 是什么
OpenAI 兼容接口,是指服务方按 OpenAI 的请求格式提供接口:同样的 base_url、api_key、model 三个参数,同样的 /v1/chat/completions、/v1/responses 路径。很多软件和 SDK 原生就支持这种格式,所以只要把 Base URL 和密钥换成 API 快连的,就能用同一套代码调用 GPT、Claude、Gemini、DeepSeek 等不同模型,不用为每家模型各写一套接入。
需要注意,「兼容」主要指请求和返回的格式一致,不代表每个功能都完全一样。不同模型对工具调用、图片输入、推理参数的支持程度不同,正式使用前要用自己的真实请求测一遍。
Base URL 怎么填:按客户端速查
| 客户端 / 场景 | 协议 | Base URL |
|---|---|---|
| Codex CLI / Codex 桌面版 | OpenAI 兼容 | https://apikl.ai/v1(教程) |
| Cline / Roo Code / Cursor / TRAE | OpenAI 兼容 | https://apikl.ai/v1 |
| OpenClaw / Hermes 等 Agent 工具 | OpenAI 兼容 | https://apikl.ai/v1 |
| Python / Node.js 的 OpenAI SDK、curl | OpenAI 兼容 | https://apikl.ai/v1 |
| Claude Code | Anthropic | https://apikl.ai(教程) |
| Anthropic SDK / Claude 原生接口 | Anthropic | https://apikl.ai |
| Gemini CLI | Gemini | https://apikl.ai(教程) |
三条线路:默认、备用和直连
| 线路 | 地址 | 什么时候用 |
|---|---|---|
| 默认线路 | https://apikl.ai | 大多数情况都用它,经过 CDN 加速 |
| 备用线路 | https://api.apikl.ai | 以前的默认地址,同样经过 CDN 加速,已经配好的不用改;默认线路访问异常时也可以换它 |
| 直连线路 | https://dc.apikl.ai | 不经过 CDN,直连服务器。网络不稳定,或长时间的非流式请求经常超时(524)时换用 |
三条线路用法完全相同,只是换域名。以直连线路为例:OpenAI 兼容客户端写 https://dc.apikl.ai/v1,Claude Code 写 https://dc.apikl.ai。
控制台里的「专业生图」网页同样可以走直连线路:打开右上角「设置」→「API 配置」,在「当前配置」里把「GPT 生图 · 主线路(默认)」换成「GPT 生图 · 直连线路(超时用)」即可,两档出的图一样。主线路经常卡住或超时时再切换过去,切换后需要重新填一次 API Key。
填错了会怎样
- 少写 /v1(例如 Base URL 填成
https://apikl.ai):聊天、Responses、模型列表这些常用接口现在不带 /v1 也能访问,但不是所有接口都支持,所以 OpenAI 兼容方式仍请按上表带上 /v1。 - 多写路径(例如 Base URL 填成
https://apikl.ai/v1/chat/completions):客户端会再拼一次路径,结果 404。 - 填成了网页地址(例如控制台
https://apikl.ai/keys、文档站https://docs.apikl.ai/v1),或写成http://、www.apikl.ai:请求拿到的是网页或跳转,客户端通常报「Unexpected token <」「无法解析 JSON」这类看不懂的错误。地址只能用上表里的写法。 - Base URL 还是官方地址(
https://api.openai.com/v1):官方不认识 API 快连的密钥,返回 401 invalid_api_key。 - Claude Code 带了 /v1:路径变成 /v1/v1/messages,表现为 404 或模型不存在。
标准填写:服务商、Base URL、密钥、模型
大多数图形界面软件的「自定义服务商」设置都是下面这几项:
| 字段 | 填写 | 说明 |
|---|---|---|
| 服务商类型(Provider) | OpenAI Compatible / 自定义 OpenAI | 不要选需要登录官方账号的那一项 |
| Base URL | https://apikl.ai/v1 | 带 /v1,末尾不加斜杠 |
| API Key | sk-你的密钥 | 在 控制台 创建 |
| 模型(Model) | gpt-5.6-sol | 先用它测通,再换成你要用的模型 |
代码示例:curl、Python、Node.js
curl 最小请求
Python(openai 官方 SDK)
先安装:pip install openai。密钥建议放在环境变量 OPENAI_API_KEY 里,不要写死在代码中。
Python 流式输出(长回答推荐)
Node.js(openai 官方 SDK)
先安装:npm install openai。
Node.js(不装 SDK,直接用 fetch)
Node.js 18 以上自带 fetch,不想装依赖时可以直接发请求:
User-Agent 请求头,否则可能被接入层拦截并返回 403(error code: 1010)。OpenAI SDK、requests、curl、fetch 都会自动带,不受影响。Responses 接口
新版 OpenAI SDK 和 Codex 使用的 Responses 接口同样支持,路径是 /v1/responses:
查询可用模型
想知道当前密钥能调哪些模型,直接请求模型列表,返回的就是可以填的准确模型名:
Claude 模型也能走 OpenAI 兼容接口吗
能调通,但不建议长期这样用。用 Claude 分组的密钥,按上面的 OpenAI 写法把 model 换成 claude-sonnet-5-5 等即可,网关会自动转换协议。
/v1/chat/completions、/v1/responses)发出的请求一般不带,每一轮都会按原价重新计算全部上下文。上下文越长、轮数越多,差距越大,长对话和编程任务的费用常常是原生接入的好几倍。偶尔问一句没关系;长对话、写代码、批量任务请用 Anthropic 原生接口。Anthropic 原生接口的地址填 https://apikl.ai(不带 /v1)。Claude Code 会自动加缓存标记,不用额外设置;自己写代码时用 Anthropic SDK,在 system 或较长的固定内容上加 cache_control,就能命中缓存。最简单的调用:
接入前先做 3 个测试
- 短问题测试:发一句「你好」,排除地址、密钥和模型名的问题。
- 换模型测试:再换一个你要用的模型,确认分组里有这个模型、名字没写错。
- 真实任务测试:用你项目里的真实上下文和输出长度跑几次,记录耗时、成功率和使用记录里的实际费用。
生产环境使用建议
- 在 控制台 给每个项目单独建密钥,并按需设置额度上限、过期时间和 IP 白名单,密钥泄露时损失可控。
- 在你的代码里设置超时、失败重试(带退避)和并发上限,长请求用流式。
- 准备降级方案:主模型繁忙时切换到备用模型或备用线路,不要让业务只依赖单一路径。
- 定期看控制台的使用记录,核对每次请求的输入、输出、缓存 token 和费用。
常见问题
OpenAI 官方 SDK 能直接用吗?
能。只要把 base_url(Node.js 里是 baseURL)改成 https://apikl.ai/v1,密钥换成 API 快连的即可,其余代码不用改。
支持流式输出和工具调用吗?
支持流式输出(stream: true)。工具调用(function calling)取决于所选模型本身是否支持,主流的 GPT 和 Claude 模型都支持。
请求报错了先看哪里?
按报错类型看:401 invalid_api_key、model not exist / model not found,其他状态码看 报错大全。