You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js模块访问OpenAI的completions属性报错求助

解决OpenAI SDK中chat.completions.create调用时的Cannot read properties of undefined (reading 'completions')错误

问题原因

你遇到的核心问题是OpenAI Node.js SDK的版本不兼容:你使用了v3版本的初始化写法,但调用了v4版本才引入的chat.completions.createAPI结构,导致openai.chat对象未定义,进而触发报错。


解决方案

根据你的需求选择以下两种方案之一:

方案1:升级到SDK v4(推荐)

如果你的项目没有依赖旧版本的限制,建议直接使用最新的v4版本:

  1. 重装SDK到最新版:
npm uninstall openai
npm install openai@latest
  1. 修改初始化代码为v4的实例化方式:
const OpenAI = require("openai");
const openAiApiKey = "sk-API-KEY"; 
const openai = new OpenAI({
  apiKey: openAiApiKey,
});
  1. 保持原有的聊天补全调用代码不变(v4的API结构就是chat.completions.create):
const stream = await openai.chat.completions.create({
  model: "gpt-3.5-turbo",
  messages: [{"role": "user", "content": "Hello!"}],
  stream: true,
});
for await (const part of stream) {
  console.log(part.choices[0].delta);
}

方案2:继续使用SDK v3版本

如果你需要保留v3版本,需适配旧版的API调用方式:

  1. 确认安装v3版本:
npm install openai@^3
  1. 初始化代码保持你原来的写法:
const openai = require("openai");
const openAiApiKey = "sk-API-KEY"; 
openai.apiKey = openAiApiKey;
  1. 修改聊天补全的调用代码,v3中对应的方法是openai.createChatCompletion:
const stream = await openai.createChatCompletion({
  model: "gpt-3.5-turbo",
  messages: [{"role": "user", "content": "Hello!"}],
  stream: true,
});
stream.on('data', (chunk) => {
  const lines = chunk.toString().split('\n').filter(line => line.trim() !== '');
  for (const line of lines) {
    const data = JSON.parse(line.replace(/^data: /, ''));
    if (data.choices[0].delta?.content) {
      console.log(data.choices[0].delta.content);
    }
  }
});

内容的提问来源于stack exchange,提问作者eugene_prg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:47:16