我在尝试在我的 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 的完全重写。请查看从 v3
到 v4
的迁移指南。
你发布在问题中的代码存在几个问题。以下我提供的解决方案取决于你使用的是 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);}