OpenAI API key 在我的 React 应用中不起作用

我在尝试在我的 React 应用中创建一个聊天机器人,但无法生成由 LLM 驱动的响应。我已经研究了文档并查看了教程,但无法解决问题。

我尝试为我的聊天机器人设置了一个函数,调用了 API 密钥,导入了 openai,设置了 gpt-3.5-turbo 模型的参数,包括温度。捕获(catch)错误部分有一个 setResponse 设置为“生成响应时出错”,这是用户输入问题后我得到的全部信息。

try {    const response = await openai.createCompletion({        model: 'gpt-3.5-turbo',        prompt: question,        max_tokens: 100,        n: 1,        stop: '\n',        temperature: 1.17,        headers: {            Authorization: `Bearer ${API_KEY}`,        }});

回答:

首先,正如@KenWhite 建议的那样,先解决基本问题。正确使用 try...catch 语句如下:

try {  // 你的代码在这里} catch (error) {  console.error(error);}

问题

注意:OpenAI NodeJS SDK v4 于 2023 年 8 月 16 日发布,这是对 SDK 的完全重写。请查看从 v3v4迁移指南

你发布在问题中的代码存在几个问题。以下我提供的解决方案取决于你使用的是 OpenAI NodeJS SDK v3 还是 v4

要检查你的 OpenAI NodeJS SDK 版本,请运行以下命令:

npm info openai version

问题 1:向 API 端点传递无效参数

你试图将 headers 作为参数传递给 API 端点,这不是一个有效的参数。请删除它。

解决方案

你需要按以下方式设置 Bearer 令牌…

• 如果你使用的是 OpenAI NodeJS SDK v3

import { Configuration, OpenAIApi } from 'openai';const configuration = new Configuration({  apiKey: process.env.OPENAI_API_KEY,});const openai = new OpenAIApi(configuration);

• 如果你使用的是 OpenAI NodeJS SDK v4

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

问题 2:使用错误的方法名称

你想使用 gpt-3.5-turbo 模型(即,聊天完成 API)。请使用正确的方法名称。

解决方案

• 如果你使用的是 OpenAI NodeJS SDK v3

  • openai.createCompletion <– 错误 ✘
  • openai.createChatCompletion <– 正确(适用于聊天完成 API) ✔

• 如果你使用的是 OpenAI NodeJS SDK v4

  • openai.completions.create <– 错误 ✘
  • openai.chat.completions.create <– 正确(适用于聊天完成 API) ✔

问题 3:使用 prompt 参数

你想使用 gpt-3.5-turbo 模型(即,聊天完成 API)。

聊天完成 API 使用 messages 参数,而 完成 API 使用 prompt 参数。

解决方案

使用 messages 参数代替 prompt 参数。

最终解决方案

• 如果你使用的是 OpenAI NodeJS SDK v3,请尝试以下代码:

import { Configuration, OpenAIApi } from 'openai';const configuration = new Configuration({  apiKey: process.env.OPENAI_API_KEY,});const openai = new OpenAIApi(configuration);try {  const chatCompletion = await openai.createChatCompletion({    model: 'gpt-3.5-turbo',    messages: [{ role: 'user', content: 'Hello world' }],    max_tokens: 100,    n: 1,    stop: '\n',    temperature: 1.17,  });  console.log(chatCompletion.data.choices[0].message);} catch (error) {  console.error(error);}

• 如果你使用的是 OpenAI NodeJS SDK v4,请尝试以下代码:

import OpenAI from 'openai';const openai = new OpenAI({  apiKey: process.env.OPENAI_API_KEY,});try {  const chatCompletion = await openai.chat.completions.create({    model: 'gpt-3.5-turbo',    messages: [{ role: 'user', content: 'Hello world' }],    max_tokens: 100,    n: 1,    stop: '\n',    temperature: 1.17,  });  console.log(chatCompletion.choices[0].message);} catch (error) {  console.error(error);}

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注