OpenAI API 错误:“TypeError:无法读取未定义的属性(读取“选择”)”

问题描述 投票:0回答:2

我研究了各种可能的解决方案:

这是我的代码:

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')

我尝试了以下方法来解决该问题:

  • 使用命令重新加载窗口:“Developer:Reload.Window”
  • 使用 OpenAI 的不同 API 密钥
  • 将package.json OpenAi更新到最新版本4.11.1
  • 通常使用不同的 console.log 代码/输出和代码结构来解决问题

有人能指出我正确的方向吗?除了用户输入之外,一切正常,作为指导,我使用了此视频:https://www.youtube.com/watch?v=4qNwoAAfnk4 并尽可能更新了项目,为什么用户输入不起作用工作?

此外,显然我的电脑上的代码已经实现了功能

apiKey
!感谢您的阅读!

javascript node.js user-input openai-api chatgpt-api
2个回答
1
投票

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

0
投票

console.log(res.data.choices[0].message.content)
更改为
console.log(res.choices[0])
console.log(res.choices[0].message.content)
解决了问题并修复了正确的用户输入功能。

© www.soinside.com 2019 - 2024. All rights reserved.