OpenAI API 错误:“TypeError:无法读取未定义的属性(读取‘选择’)”
2023-10-06
4592
我研究了各种可能的解决方案:
- OpenAI 和 Javascript 错误:获取“TypeError:无法读取 Object 中未定义的属性(读取“create”)。<anonymous>”
- https://github.com/davila7/code-gpt-docs/issues/57
- https://www.npmjs.com/package/openai
这是我的代码:
import { config } from "dotenv"
config()
// New
import OpenAI from 'openai';
import readline from "readline"
const openai = new OpenAI({
apiKey: 'My Key', // defaults to process.env["OPENAI_API_KEY"]
});
const userInterface = new readline.createInterface({
input: process.stdin,
output: process.stdout
})
userInterface.prompt()
userInterface.on("line", async input => {
const res = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: input}],
})
console.log(res.data.choices[0].message.content)
userInterface.prompt()
})
当我运行代码时,我从帖子标题中收到错误消息:
TypeError:无法读取未定义的属性(读取“选择”)
。
我尝试了以下方法来修复该问题:
-
使用命令重新加载窗口:
Developer:Reload.Window
- 使用不同的 OpenAI API 密钥
-
将
package.json
OpenAI 更新为最新版本4.11.1
- 通常使用不同的 console.log 代码/输出和代码结构来解决问题
有人能给我指出正确的方向吗?除了用户输入之外,一切都正常。作为指导,我使用了此视频: https://www.youtube.com/watch?v=4qNwoAAfnk4 。我尽可能更新了项目。为什么用户输入不起作用?
此外,我电脑上的代码已实现可正常运行的
apiKey
。谢谢阅读!
2个回答
OpenAI NodeJS SDK
v4
于 2023 年 8 月 16 日
发布
,是 SDK 的完全重写版本。除其他外,提取消息内容的方式也发生了变化。请参阅
v3
至
v4
的
迁移指南
。
• 如果您拥有 OpenAI NodeJS SDK
v3
:
import { Configuration, OpenAIApi } from 'openai';
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const chatCompletion = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(chatCompletion.data.choices[0].message);
• 如果您拥有 OpenAI NodeJS SDK
v4
:
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
const chatCompletion = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'Hello!'}],
});
console.log(chatCompletion.choices[0].message); // There's no "data" property
Rok Benko
2023-10-06
将
console.log(res.data.choices[0].message.content)
更改为
console.log(res.choices[0])
或
console.log(res.choices[0].message.content)
解决了该问题并修复了正确的用户输入功能。
Dimitri Williams
2023-10-06