首页 > 编程语言 >Got an error when I tried to use the Openai SDK in Node.js

Got an error when I tried to use the Openai SDK in Node.js

时间:2024-08-10 09:27:52浏览次数:17  
标签:Node use const tried js content API openai OpenAI

题意:尝试在Node.js中使用OpenAI SDK时遇到错误

问题背景:

I am trying to use Openai api with nodejs, I follow the tutorial and want to add a simple gpt text completion feauture using the openai SDK, but I got an error says: /node_modules/openai/core.js:44 const isJSON = contentType?.includes('application/json') || contentType?.includes('application/vnd.api+json');

尝试在 Node.js 中使用 OpenAI API,并遵循了相关教程,希望使用 OpenAI SDK 添加一个简单的 GPT 文本补全功能。但是,我遇到了一个错误,该错误指向 node_modules/openai/core.js 文件的第 44 行,其中使用了可选链操作符(?.),但 Node.js 环境似乎不支持它

It results in a crash of the app, I didn't find out why.

这导致应用程序崩溃,我没有找出原因。

This is the code:        这是代码:

import OpenAI from 'openai';

const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
});

export const gptResponse = async (req, res) => {
    try {
        const { message } = req.body;
        const getResponse = await openai.chat.completions.create({
            model: 'gpt-3.5-turbo',
            messages: [
                {
                    role: 'system',
                    content: 'You are a helpful assistant.',
                },
                {
                    role: 'user',
                    content: message,
                },
            ],
        });
        console.log(getResponse.data.choices[0].message.content);
        return res.json(getResponse.data.choices[0].message.content);
    } catch (err) {
        console.log(err);
        return res.status(400).send('Error. Try again.');
    }
};

问题解决:

This code will work.        代码正常运行

Save as `demo.js'        另存为文件 demo.js

import OpenAI from 'openai';

const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
});

const requestData = {
    model: 'gpt-3.5-turbo',
    messages: [
        {
            role: 'system',
            content: 'You are a helpful assistant.',
        },
        {
            role: 'user',
            content: 'Hello!',
        },
    ],
};

async function getGPTResponse() {
    try {
        const response = await openai.chat.completions.create(requestData);
        console.log("Response from OpenAI:", response.choices[0].message.content);
    } catch (error) {
        console.error("Error:", error.message);
    }
}

getGPTResponse();

In package.json

{
  "type": "module",
  "dependencies": {
    "openai": "^4.28.0"
  }
}
Install dependencies        安装依赖
npm install
Run it        运行
node demo.js
Result        结果

Confirm by Postman

You can see the response message's hierarchy

您可以看到响应消息的层级结构

url

POST https://api.openai.com/v1/chat/completions

In body

{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }

insufficient permissions cases

权限不足的情况

#1 Read Only API_KEY

Error        错误信息

Error: 401 You have insufficient permissions for this operation. Missing scopes: model.request

#2 Model capabilities Write API_KEY

#2 模型功能 写入 API_KEY

No Error         没有错误

#3 All Permissions API_KEY

#3 所有权限 API_KEY

标签:Node,use,const,tried,js,content,API,openai,OpenAI
From: https://blog.csdn.net/suiusoar/article/details/141083833

相关文章

  • 使用HTML一键打包工具模拟其他浏览器 - User-Agent的起源到应用
    最近经常有一些朋友对于HTML一键打包工具中的User-Agent不太理解是什么意思,以及它到底有什么用途, 本篇文章会介绍一下User-Agent的起源,发展历程,以及它的使用场景,帮助你更好的了解和使用它User-Agent的起源与发展历程User-Agent最早出现在1990年代初期,随着NCSAMosaic......
  • JAVA报错:Caused by: java.lang.NoSuchFieldError: REFLECTION
     Causedby:java.lang.NoSuchFieldError:REFLECTIONatcom.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:93)atcom.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:473)atcom......
  • Nodejs事件循环小记
    执行原理当Node.js启动时,会先初始化EventLoop,然后执行提供的输入脚本(主模块同步代码),过程中可能会产生异步API调用、定时器或调用process.nextTick(),然后开始处理事件循环。Node.js的EventLoop分为6个阶段,会按照顺序反复执行,每当进入某一个阶段的时候,都会从对应......
  • com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lamb
    异常提示:com.baomidou.mybatisplus.core.exceptions.MybatisPlusException:cannotfindlambdacacheforthisentity 使用mockito框架做单元测试:mybatisplus使用Lambda表达式做条件查询、条件更新时会遇到mybatis拿不到缓存问题:错误1:com.baomidou.mybatisplus......
  • yum和rpm安装的Jenkins启动报错"Job for jenkins.service failed because the control
    jenkins卸载方式servicejenkinsstopyumcleanallyum-yremovejenkinsfind/-inamejenkins|xargs-n500rm-rf#文件名称符合name的文件。iname会忽略大小写#xargs命令可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数......
  • 多模态学习之论文阅读:《Multi-modal Learning with Missing Modality in Predicting A
    《Multi-modalLearningwithMissingModalityinPredictingAxillaryLymphNodeMetastasis》(一)要点研究背景:多模态学习在医学图像分析中的重要性,尤其是乳腺癌早期患者的腋窝淋巴结转移(ALNM)诊断。问题陈述:临床信息的收集困难,导致多模态模型在实际应用中受限。研究目......
  • 多模态学习之论文阅读:《PREDICTING AXILLARY LYMPH NODE METASTASIS IN EARLY BREAST
    《PREDICTINGAXILLARYLYMPHNODEMETASTASISINEARLYBREASTCANCERUSINGDEEPLEARNINGONPRIMARYTUMORBIOPSYSLIDES》(一)要点提出一个基于注意力机制的多实例学习框架,构建了一个深度学习模型。该模型利用WSIs和临床数据预测早期乳腺癌(EBC)患者的腋窝淋巴结(ALN)转移状态......
  • 【前端】NodeJS:HTTP协议
    文章目录HTTP协议1概念2请求报文的组成3HTTP的请求行4请求头5HTTP的请求体6响应报文的组成7创建HTTP服务7.1操作步骤7.2测试7.3注意事项8浏览器查看HTTP报文8.1查看请求行和请求头8.2查看请求体8.3查看URL查询字符串8.4查看响应行与响应头8.5查看响应体......
  • 【前端】NodeJS:NodeJS模块化
    文章目录1NodeJS模块化1.1模块化与模块1.2模块化项目1.3模块化好处2模块暴露数据2.1模块初体验2.2暴露数据3导入(引入)模块4导入模块的基本流程5CommonJS规范1NodeJS模块化1.1模块化与模块将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称......
  • node安装
    下载Node.js:首先,访问Node.js的官方网站(https:odejs.org/),选择适合你操作系统的版本进行下载。对于‌Windows用户,可以选择.msi安装包进行安装。安装Node.js:下载完成后,运行安装包,按照提示进行安装。在安装过程中,你可以选择自定义安装选项,但通常情况下,直接点击“下一步”即可完成......