我研究了各种可能的解决方案:
这是我的代码:
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: Cannot read properties of undefined (reading 'choices')
。
我尝试了以下方法来解决该问题:
有人能指出我正确的方向吗?除了用户输入之外,一切正常,作为指导,我使用了此视频:https://www.youtube.com/watch?v=4qNwoAAfnk4 并尽可能更新了项目,为什么用户输入不起作用工作?
此外,显然我的电脑上的代码已经实现了功能
apiKey
!感谢您的阅读!
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
将
console.log(res.data.choices[0].message.content)
更改为 console.log(res.choices[0])
或 console.log(res.choices[0].message.content)
解决了问题并修复了正确的用户输入功能。