集成ChatGPT API(GPT-3.5)遇TypeError:OpenAIApi不是构造函数求助
修复OpenAIApi不是构造函数的错误
问题根源
你的代码存在两个关键问题:
- 嵌套创建Configuration实例:重复调用
new Configuration,导致传入OpenAIApi的参数无效 - SDK版本不兼容:如果安装的是OpenAI Node.js SDK v4.x版本,该版本已移除
Configuration和OpenAIApi类,改用全新的API调用方式
方案一:使用最新v4.x版本SDK(推荐)
v4版本简化了实例化流程,调整代码如下:
require("dotenv").config(); const OpenAI = require("openai"); const readline = require("readline"); // 直接实例化OpenAI类 const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); const userInterface = readline.createInterface({ input: process.stdin, output: process.stdout, }); userInterface.prompt(); userInterface.on("line", async (line) => { try { // v4版本调用方式改为chat.completions.create const response = await openai.chat.completions.create({ model: "gpt-3.5-turbo", messages: [{ role: "user", content: line }], }); // 直接输出回复内容 console.log(response.choices[0].message.content); } catch (error) { console.error("请求失败:", error); } });
方案二:降级到v3.x版本SDK(保留旧写法)
如果你想继续使用Configuration和OpenAIApi,先降级SDK版本:
npm uninstall openai npm install openai@3.3.0
然后修复代码中的Configuration嵌套问题:
require("dotenv").config(); const { Configuration, OpenAIApi } = require("openai"); const readline = require("readline"); // 仅创建一次Configuration实例 const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY, }); const openaiapi = new OpenAIApi(configuration); const userInterface = readline.createInterface({ input: process.stdin, output: process.stdout, }); userInterface.prompt(); userInterface.on("line", async (line) => { try { const response = await openaiapi.createChatCompletion({ model: "gpt-3.5-turbo", messages: [{ role: "user", content: line }], }); // 从response.data中获取回复内容 console.log(response.data.choices[0].message.content); } catch (error) { console.error("请求失败:", error); } });
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

