OpenAI base_url 自定义:Python、Node.js 接入第三方 API
OpenAI SDK 默认请求官方服务,但 base_url 允许开发者把请求切换到任何 OpenAI 兼容网关。将 base_url 改为 https://api.clawsocket.com/v1,同一套代码即可调用 GPT、Claude、DeepSeek 等模型。本文覆盖 Python、Node.js、curl、环境变量和生产排错方法。
本文的参数命名对应 OpenAI API Making Requests 官方文档 和 OpenAI Python SDK;模型可用性与第三方路由规则请以 ClawSocket 控制台为准。
base_url、api_key 和 model 的关系
| 参数 | Python 写法 | Node.js 写法 | 说明 |
|---|---|---|---|
| API 地址 | base_url="https://api.clawsocket.com/v1" | baseURL: "https://api.clawsocket.com/v1" | OpenAI 兼容版本路径 |
| Key | api_key="..." | apiKey: "..." | 从 ClawSocket 控制台创建 |
| 模型 | model="gpt-5" | model: "gpt-5" | 必须是网关可用 API ID |
注意 Python SDK 参数名是 base_url(下划线),JavaScript SDK 参数名是 baseURL(大写 URL)。写错大小写会让 SDK 继续请求默认地址。
Python 配置
安装最新版 SDK:
python -m pip install -U openai
export OPENAI_API_KEY="你的 ClawSocket API Key"
export OPENAI_BASE_URL="https://api.clawsocket.com/v1"最小可运行示例:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
base_url=os.getenv("OPENAI_BASE_URL", "https://api.clawsocket.com/v1"),
)
response = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "解释什么是 OpenAI 兼容 API"}],
)
print(response.choices[0].message.content)也可以只依赖环境变量,让 SDK 自动读取 OPENAI_API_KEY 与 OPENAI_BASE_URL:
from openai import OpenAI
client = OpenAI()Node.js/TypeScript 配置
npm install openai
export OPENAI_API_KEY="你的 ClawSocket API Key"import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL ?? "https://api.clawsocket.com/v1",
});
const result = await client.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "给我一个 JavaScript 数组去重示例" }],
});
console.log(result.choices[0]?.message?.content);curl 与模型列表检查
先检查地址和 Key,而不是直接调大请求:
curl "https://api.clawsocket.com/v1/models" \
-H "Authorization: Bearer $OPENAI_API_KEY"成功后再调用聊天接口:
curl "https://api.clawsocket.com/v1/chat/completions" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5","messages":[{"role":"user","content":"你好"}]}'生产环境建议
- 通过环境变量或密钥管理服务注入
OPENAI_API_KEY,不要提交.env。 - 为开发、测试、生产创建不同 ClawSocket Key,设置额度和来源限制。
- 服务端复用 HTTP 客户端,设置连接超时与请求超时。
- 对 429、502、503 做指数退避,但不要无上限重试非幂等操作。
- 日志只记录 request id、耗时和模型,不记录完整提示词与 Key。
| 状态码 | 排查重点 |
|---|---|
| 401 | Key 是否为空、已撤销,Authorization 是否为 Bearer |
| 404 | 是否把 /v1 漏掉或重复,模型路径是否兼容 |
| 429 | 速率限制、账户余额、并发队列 |
| 400 | messages、model、JSON 字段是否符合接口要求 |
FAQ
OpenAI Python 的 base_url 应该写到哪里?
写在 OpenAI(base_url="https://api.clawsocket.com/v1") 中,或设置 OPENAI_BASE_URL 环境变量。两者同时存在时,代码参数通常优先。
为什么改了 OPENAI_BASE_URL 仍请求官方 API?
确认变量在启动 Python/Node 进程前已导出,并检查 JavaScript 使用的是 baseURL 而非 base_url。重启 IDE 的终端后再测试。
一个 OpenAI SDK 能调用 Claude 或 DeepSeek 吗?
只要网关实现 OpenAI Chat Completions 兼容格式即可。把 model 换成控制台提供的模型 ID,复杂工具调用仍应先做兼容性测试。
base_url 末尾要不要斜杠?
按 SDK 文档和网关要求填写。ClawSocket 示例使用 /v1 且不带末尾斜杠,避免路径拼接成双斜杠。
可在ClawSocket API 控制台获取统一入口和模型列表;也可以继续阅读OpenAI 兼容 API 原理。