人人都会AI编程

3.3 Node.js 环境下 API 调用配置

更新时间:2026-06-27

本节适合需要将 Codex 代码能力集成到 Node.js 后端项目、开发自有 SaaS 工具的场景,通过官方 SDK 调用接口,可灵活定制业务逻辑。调用按 Token 按量计费,与 ChatGPT 订阅额度不共享。

前置准备

  1. 电脑已安装 Node.js 16 及以上版本(推荐 18/20 LTS 稳定版)
  2. 已按 1.3 节步骤获取可用的 API 密钥
  3. 网络环境可正常访问 OpenAI 接口

一、安装官方 Node.js SDK

OpenAI 官方提供了标准化 npm 包,无需手动封装网络请求,兼容性与安全性最有保障。

  1. 打开项目终端,进入你的项目根目录,执行安装命令:
    npm install openai
    

使用 yarn 的用户可替换为 yarn add openai

  1. 验证安装:执行 npm list openai,终端显示出版本号即安装成功。

注意:请使用官方 openai 包,不要使用第三方封装的非官方 SDK,避免密钥泄露、功能缺失等风险。


二、密钥配置(两种方式,优先选第一种)

API 密钥是调用凭证,严禁硬编码在业务代码中并上传到公开代码仓库,否则极易被盗刷产生高额费用。

  1. 推荐方式:环境变量 + dotenv(项目标准做法)

通过 .env 文件管理密钥,配合 dotenv 包读取,是 Node.js 项目的通用规范,可有效避免密钥泄露。
步骤:
① 安装 dotenv 依赖:

    npm install dotenv
    

② 在项目根目录新建 .env 文件,写入以下内容:

    OPENAI_API_KEY=你的API密钥
    

③ 在项目根目录的 .gitignore 文件中(没有则新建)追加一行:

    .env
    

确保 .env 文件不会被提交到 Git 代码仓库。
④ 代码中引入 dotenv 后,SDK 会自动读取环境变量中的密钥,无需手动传入。

  1. 临时测试方式:代码内直接传入

仅适合本地临时跑脚本测试时使用,绝对不能提交到代码仓库


三、最简调用示例(复制就能跑)

在项目根目录新建 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 个即可满足绝大多数编码场景:

  1. model:指定调用的编码模型。主力开发用 gpt-5.3-codex,简单任务(加注释、改小 Bug)可用轻量编码模型,成本更低。
  2. temperature:结果随机性,取值范围 0~2。写代码建议设为 0.1~0.3,数值越低输出逻辑越稳定、越严谨;需要创意性方案时可适当调高。
  3. messages:对话上下文数组。system 用于设定角色规则,user 是你的具体需求,支持多轮对话连续迭代修改代码。
  4. max_tokens:单次调用的最大输出长度,根据需求设置,避免不必要的额度消耗。

五、实用补充配置

  1. 流式输出(打字机效果)

做前端交互、实时生成代码场景时,开启流式输出可大幅提升体验,无需等待全部生成完毕:

    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); // 实时打印内容
      }
    }
    
  1. 网络代理配置

本地环境需要代理才能访问接口时,可在初始化客户端时指定代理地址:

    const client = new OpenAI({
      baseURL: '你的代理服务地址'
    });
    
  1. 错误捕获处理

正式项目中建议添加异常捕获,避免接口波动导致程序崩溃:

    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;
      }
    }
    

六、常见问题排查

  1. 报错「Cannot find module 'openai'」

SDK 未安装成功,重新执行 npm install openai;检查当前终端路径是否在项目根目录;若安装慢可切换为国内 npm 镜像源。

  1. 报错「Incorrect API key provided」

密钥错误或已失效。核对密钥字符串是否有多余空格、换行;若怀疑泄露,立即前往 OpenAI 后台删除旧密钥,生成新密钥替换。

  1. 报错「Connection timeout」/「Network Error」

网络不通。检查网络环境是否能正常访问 OpenAI 服务,或配置代理地址后重试。

  1. 环境变量不生效

检查 .env 文件是否在项目根目录;确认代码开头已引入 require('dotenv').config();修改 .env 文件后需重新运行脚本。

  1. 报错「The model does not exist」

模型名称拼写错误,核对可用模型列表;确认你的账号已开通 API 服务,有权限调用对应模型。

实用提醒:新手测试阶段请务必按 1.4 节设置好月度消费上限,先跑小任务确认成本,再逐步扩大使用规模;生产环境建议添加请求频率限制,避免异常调用产生高额费用。