本节适合需要将 Codex 代码能力集成到 Node.js 后端项目、开发自有 SaaS 工具的场景,通过官方 SDK 调用接口,可灵活定制业务逻辑。调用按 Token 按量计费,与 ChatGPT 订阅额度不共享。
前置准备
- 电脑已安装 Node.js 16 及以上版本(推荐 18/20 LTS 稳定版)
- 已按 1.3 节步骤获取可用的 API 密钥
- 网络环境可正常访问 OpenAI 接口
一、安装官方 Node.js SDK
OpenAI 官方提供了标准化 npm 包,无需手动封装网络请求,兼容性与安全性最有保障。
- 打开项目终端,进入你的项目根目录,执行安装命令:
npm install openai
使用 yarn 的用户可替换为 yarn add openai。
- 验证安装:执行
npm list openai,终端显示出版本号即安装成功。
注意:请使用官方
openai包,不要使用第三方封装的非官方 SDK,避免密钥泄露、功能缺失等风险。
二、密钥配置(两种方式,优先选第一种)
API 密钥是调用凭证,严禁硬编码在业务代码中并上传到公开代码仓库,否则极易被盗刷产生高额费用。
- 推荐方式:环境变量 + dotenv(项目标准做法)
通过 .env 文件管理密钥,配合 dotenv 包读取,是 Node.js 项目的通用规范,可有效避免密钥泄露。
步骤:
① 安装 dotenv 依赖:
npm install dotenv
② 在项目根目录新建 .env 文件,写入以下内容:
OPENAI_API_KEY=你的API密钥
③ 在项目根目录的 .gitignore 文件中(没有则新建)追加一行:
.env
确保 .env 文件不会被提交到 Git 代码仓库。
④ 代码中引入 dotenv 后,SDK 会自动读取环境变量中的密钥,无需手动传入。
- 临时测试方式:代码内直接传入
仅适合本地临时跑脚本测试时使用,绝对不能提交到代码仓库。
三、最简调用示例(复制就能跑)
在项目根目录新建 codex_demo.js 文件,粘贴以下代码,配置好密钥后即可运行。
// 加载环境变量(使用 .env 方式必须加这行)
require('dotenv').config();
const OpenAI = require('openai');
// 初始化客户端
// 已配置 .env 环境变量无需手动传 apiKey,SDK 会自动读取
const client = new OpenAI({
// apiKey: '你的API密钥' // 仅本地临时测试时取消注释填写,正式环境禁用
});
// 调用 Codex 生成代码
async function generateCode() {
const response = await client.chat.completions.create({
model: 'gpt-5.3-codex', // 编码专用主力模型
messages: [
{ role: 'system', content: '你是专业编程助手,只输出可运行的JavaScript代码,不添加多余解释文字。' },
{ role: 'user', content: '写一个数组去重的工具函数,支持普通数组和对象数组' }
],
temperature: 0.2, // 写代码建议设低值,输出更严谨稳定
max_tokens: 1000
});
console.log('生成的代码:');
console.log(response.choices[0].message.content);
}
// 执行函数
generateCode();
运行与验证:
终端执行 node codex_demo.js,控制台输出完整的数组去重函数代码,即为调用配置成功。
四、核心参数说明(新手掌握4个即可)
无需记忆全部参数,用好这 4 个即可满足绝大多数编码场景:
- model:指定调用的编码模型。主力开发用
gpt-5.3-codex,简单任务(加注释、改小 Bug)可用轻量编码模型,成本更低。 - temperature:结果随机性,取值范围 0~2。写代码建议设为 0.1~0.3,数值越低输出逻辑越稳定、越严谨;需要创意性方案时可适当调高。
- messages:对话上下文数组。
system用于设定角色规则,user是你的具体需求,支持多轮对话连续迭代修改代码。 - max_tokens:单次调用的最大输出长度,根据需求设置,避免不必要的额度消耗。
五、实用补充配置
- 流式输出(打字机效果)
做前端交互、实时生成代码场景时,开启流式输出可大幅提升体验,无需等待全部生成完毕:
async function generateCodeStream() {
const stream = await client.chat.completions.create({
model: 'gpt-5.3-codex',
messages: [{ role: 'user', content: '写一个Express的用户登录接口' }],
stream: true // 开启流式输出
});
let result = '';
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || '';
result += content;
process.stdout.write(content); // 实时打印内容
}
}
- 网络代理配置
本地环境需要代理才能访问接口时,可在初始化客户端时指定代理地址:
const client = new OpenAI({
baseURL: '你的代理服务地址'
});
- 错误捕获处理
正式项目中建议添加异常捕获,避免接口波动导致程序崩溃:
async function safeGenerateCode(prompt) {
try {
const response = await client.chat.completions.create({
model: 'gpt-5.3-codex',
messages: [{ role: 'user', content: prompt }]
});
return response.choices[0].message.content;
} catch (error) {
console.error('调用失败:', error.message);
return null;
}
}
六、常见问题排查
- 报错「Cannot find module 'openai'」
SDK 未安装成功,重新执行 npm install openai;检查当前终端路径是否在项目根目录;若安装慢可切换为国内 npm 镜像源。
- 报错「Incorrect API key provided」
密钥错误或已失效。核对密钥字符串是否有多余空格、换行;若怀疑泄露,立即前往 OpenAI 后台删除旧密钥,生成新密钥替换。
- 报错「Connection timeout」/「Network Error」
网络不通。检查网络环境是否能正常访问 OpenAI 服务,或配置代理地址后重试。
- 环境变量不生效
检查 .env 文件是否在项目根目录;确认代码开头已引入 require('dotenv').config();修改 .env 文件后需重新运行脚本。
- 报错「The model does not exist」
模型名称拼写错误,核对可用模型列表;确认你的账号已开通 API 服务,有权限调用对应模型。
实用提醒:新手测试阶段请务必按 1.4 节设置好月度消费上限,先跑小任务确认成本,再逐步扩大使用规模;生产环境建议添加请求频率限制,避免异常调用产生高额费用。