2026年 OpenAI SDK 国内 API 示例代码配置指南:Python 与 Node.js 接入步骤拆解
2026年 OpenAI SDK 国内 API 示例代码配置指南:Python 与 Node.js 接入步骤拆解
在国内环境用 OpenAI SDK,最常见的卡点不是 SDK 本身,而是 base_url、模型名和超时这三处配置。这三处对齐之后,Python 和 Node.js 的代码几乎是同一套逻辑。
下面把接入拆成可复制的步骤:先在控制台确认接口信息,再分别用 Python 与 Node.js 跑通最小请求,最后给出上线前的自查清单。
一、接入前先确认的四项配置
OpenAI SDK 本身是通用客户端,真正决定请求发往哪里的是 base_url(Python)或 baseURL(Node.js)。国内接入通常把这两个值指向服务方提供的兼容接口地址,而模型名则以服务方控制台或文档中显示的调用名为准。字段写法、是否带 /v1 这类细节,建议直接照抄控制台给出的示例。
| 配置项 | 作用 | 检查方法 |
|---|---|---|
| Base URL | 决定请求发往的接口地址 | 复制控制台给出的地址,确认是否需要带 /v1 |
| API Key | 身份识别与用量计费 | 在控制台新建后保存为环境变量 |
| 模型名称 | 决定调用哪个模型 | 以模型列表或接入文档中的调用名为准 |
| 超时与重试 | 影响长响应与弱网下的成功率 | 结合 SDK 默认值和业务实测耗时调整 |
如果还没有可用的 Key 和接口地址,可以先到 通联AI中转站 注册,在控制台查看接口地址、可用模型与接入文档,再把下面的示例替换成自己的配置。
二、Python 接入 OpenAI SDK 的完整步骤
1. 安装依赖并设置环境变量
pip install openai
export OPENAI_API_KEY='你的 API Key'
export OPENAI_BASE_URL='控制台显示的接口地址'
把 Key 放在环境变量里,而不是直接写进脚本,可以避免误提交到代码仓库。
2. 最小可运行示例
from openai import OpenAI
client = OpenAI(
api_key='你的 API Key',
base_url='控制台显示的接口地址', # 文档要求带 /v1 时写完整地址
timeout=60,
)
resp = client.chat.completions.create(
model='控制台显示的模型名',
messages=[
{'role': 'system', 'content': '你是一个简洁的技术助手。'},
{'role': 'user', 'content': '用两句话说明什么是 API 中转。'},
],
)
print(resp.choices[0].message.content)
print(getattr(resp, 'usage', None))
能拿到返回文本,同时能看到 usage 字段,就说明链路是通的。usage 用于对账,正式业务里建议把每条请求的用量一起记录下来。
3. Python 常见报错对照
- 401:Key 错误或未生效,检查环境变量是否被上层配置覆盖。
- 404:接口地址或模型名不匹配,重点检查
/v1后缀。 - 超时:长文本或大模型响应较慢,适当提高 timeout,或改用流式输出。
- 连接错误:本地网络出口或代理配置问题,先排除环境因素再改代码。
三、Node.js 接入步骤
1. 安装与最小示例
npm install openai
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL,
timeout: 60000,
});
const resp = await client.chat.completions.create({
model: '控制台显示的模型名',
messages: [{ role: 'user', content: '你好,做一次连通性测试。' }],
});
console.log(resp.choices[0].message.content);
2. 流式输出与错误处理
const stream = await client.chat.completions.create({
model: '控制台显示的模型名',
messages: [{ role: 'user', content: '讲一个技术小知识。' }],
stream: true,
});
for await (const chunk of stream) {
const text = chunk.choices[0]?.delta?.content ?? '';
process.stdout.write(text);
}
Node.js 环境要特别注意未捕获的 Promise 拒绝。建议在调用外层加 try/catch,并把服务端返回的错误信息完整记录,否则日志里只会剩下一句笼统的失败提示,排查成本很高。
四、Python 与 Node.js 的差异与迁移注意
- 参数命名:Python 用
base_url,Node.js 用baseURL,写错会导致请求仍发往默认地址。 - 返回值访问:两者结构基本一致,都是
choices[0].message.content。 - 错误对象:Node.js 抛出的错误通常带状态码字段,便于按类型决定是否重试。
- 并发模型:Node.js 天然异步,Python 处理高并发常需配合异步客户端或线程池。
跨语言迁移时,最容易被忽略的不是代码语法,而是接口地址、模型名和超时配置。这三项保持一致,两种语言的输出结果才能对齐,后续排查也不会互相干扰。
五、上线前的检查清单
- Key 存放在环境变量或密钥管理服务中,没有提交到代码仓库。
- 接口地址与模型名来自控制台当前显示的信息,而不是历史笔记或他人分享的片段。
- 日志中记录耗时、状态码与用量,便于对账和定位异常。
- 对超时、限流类错误设置退避重试,对参数类错误直接失败并告警。
- 先用小流量灰度,确认稳定后再逐步放大并发。
实操时可以用 通联AI中转站 的控制台做对照,确认接口地址与可用模型,再分别用 Python 和 Node.js 各跑一次最小示例,确保两种语言得到一致的返回结构,之后再接入正式业务逻辑。
代码已经准备好,缺的只是可用的接口地址和 Key。到通联注册后,可在控制台查看 Base URL、模型列表与文档说明,先跑通一次最小请求,再逐步迁移你的 Python 或 Node.js 项目。