NodeJS 如何使用ChatGPT API

NodeJS 如何使用ChatGPT API

ChatGPT是OpenAI开发的一款非常强大的聊天机器人,它利用自然语言处理与人类进行交互。它在开发者中变得非常流行,并且被广泛用于一些最先进的功能,如理解和解释代码,甚至根据文本要求生成代码。OpenAI不仅在其网站上提供了聊天机器人功能,还提供了一个API,以帮助我们将ChatGPT集成到我们的应用程序和项目中。我们可以通过发起HTTP请求并适当地利用响应来使用该API。

NodeJS 如何使用ChatGPT API

在本文中,我们将逐步介绍如何将 ChatGPT API 集成到Node.js项目中。

在Node.js应用程序中使用ChatGPT

将ChatGPT功能添加到我们的大型NodeJS应用程序中将使用户更高效。因此,在本文中,我们将逐步了解如何检索API密钥以及如何创建一个使用 OpenAI API 的NodeJS应用程序,该应用程序将与ChatGPT类似,您可以通过该应用程序与ChatGPT进行对话。以下是在NodeJS应用程序中使用ChatGPT的完整步骤。

1. 创建一个Node.js应用程序

首先,我们将为项目创建一个目录,比如chatgpt-api-nodejs,可以使用GUI或者在终端上将以下命令粘贴到我们机器上的所需位置:

mkdir chatgpt-api-nodejs
JavaScript

现在,将目录更改为新创建的文件夹:

cd chatgpt-api-nodejs
JavaScript

要初始化node.js项目,请运行下面的命令,该命令将创建一个package.json文件以跟踪项目细节

npm init -y
JavaScript

2. 获取OPENAI API密钥

为了使用API,我们需要生成API密钥。

A. 为此,请访问OpenAI并注册或登录(如果您已经有一个账户)。
NodeJS 如何使用ChatGPT API

B. 接着点击API选项

NodeJS 如何使用ChatGPT API

C. 在右上角,点击代表已登录用户的标志,并选择“查看API密钥”

NodeJS 如何使用ChatGPT API

D. 点击“创建新密钥”按钮。它会打开一个对话框,询问密钥的名称(可选)。完成后,点击“创建密钥”。

NodeJS 如何使用ChatGPT API

E. 会出现一个对话框,显示您的秘钥/API秘钥。复制并点击“完成”。请安全保存此秘钥,不要与他人分享。

NodeJS 如何使用ChatGPT API

获得API密钥后,现在让我们回到主要的事情。

安装 openai 库,该库在NodeJS项目中提供了对OpenAI API的简单访问,并且安装 readline-sync 库来从命令行读取用户输入。

npm i openai readline-sync
JavaScript

我们将在项目中添加 dotenv 包。它可以帮助我们创建环境变量,我们将使用它来存储我们的 API 密钥。像 API 密钥这样的敏感信息存储在环境变量中有多个好处。如果项目配置发生变化,例如我们的 API 密钥发生变化,我们无需重新部署整个应用程序,而只需简单地更新变量值。另一个好处是 dotenv 包将环境变量存储在 .env 文件中,可以将该文件添加到 .gitignore 中,以防止密钥被推送到 GitHub,这样就可以防止密钥公开给所有人。

npm i dotenv
JavaScript

创建一个新文件,用于创建一个环境变量来存储API密钥

touch .env
JavaScript

在文件中创建一个变量 OPENAI_SECRET_KEY 并用你的API密钥(保留引号)替换 "YOUR OPEN AI API KEY"

OPENAI_SECRET_KEY="YOUR OPEN AI API KEY"
JavaScript

3. 实现NodeJS应用程序

创建一个名为index.js的javascript文件,将下面的代码粘贴到其中。

const { Configuration, OpenAIApi } = require("openai"); 
const readlineSync = require("readline-sync"); 
require("dotenv").config(); 
  
let APIcall = async () => { 
  const newConfig = new Configuration({ 
    apiKey: process.env.OPENAI_SECRET_KEY 
  }); 
  const openai = new OpenAIApi(newConfig); 
    
  const chatHistory = []; 
  
  do { 
    const user_input = readlineSync.question("Enter your input: "); 
    const messageList = chatHistory.map(([input_text, completion_text]) => ({ 
      role: "user" === input_text ? "ChatGPT" : "user", 
      content: input_text 
    })); 
    messageList.push({ role: "user", content: user_input }); 
  
    try { 
      const GPTOutput = await openai.createChatCompletion({ 
        model: "gpt-3.5-turbo", 
        messages: messageList, 
      }); 
  
      const output_text = GPTOutput.data.choices[0].message.content; 
      console.log(output_text); 
  
      chatHistory.push([user_input, output_text]); 
    } catch (err) { 
      if (err.response) { 
        console.log(err.response.status); 
        console.log(err.response.data); 
      } else { 
        console.log(err.message); 
      } 
    } 
  } while (readlineSync.question("\nYou Want more Results? (Y/N)").toUpperCase() === "Y"); 
}; 
APIcall();
JavaScript

4. 运行应用程序

要运行该应用程序,请在终端中运行下面的命令

node index.js
JavaScript

上面的代码通过命令行接受输入提示,并打印ChatGPT模型生成的回答。然后它会询问我们是否想继续对话。输入“Y”允许我们再次输入提示,而输入“N”将终止程序。

输出:

NodeJS 如何使用ChatGPT API

在Node.js中使用ChatGPT API的步骤

第1步: 导入必要的依赖项

const { Configuration, OpenAIApi } = require("openai");
const readlineSync = require("readline-sync");
require("dotenv").config();
JavaScript

在以上代码中,第一行导入了openai包中的Configuration和OpenAIApi类,以连接到OpenAI API。

readline-sync包用于通过命令提示符获取用户输入。

dotenv包用于从.env文件中加载环境变量。

第2步: 创建异步函数

let APIcall = async () => {
      //code here
};
JavaScript

使用 async 关键字创建一个异步箭头函数,其中将使用 await 。

第3步:配置和API设置

const newConfig = new Configuration({
    apiKey: process.env.OPENAI_SECRET_KEY
});
const openai = new OpenAIApi(newConfig);
JavaScript

process.env.OPENAI_SECRET_KEY 从 .env 文件中的环境变量中获取 API 密钥。

openaiOpenAIApi 类的对象,并且接受包含 API 密钥的配置对象。使用这个对象,我们可以使用我们的 API 密钥向 OpenAI API 发出请求。

第4步:聊天历史记录

const chatHistory = [];
JavaScript

创建一个空数组来存储聊天历史记录,这将有助于AI模型生成回答

第5步:聊天循环

do{
   //code
}while (readlineSync.question("\nYou Want more Results? (Y/N)").toUpperCase() === "Y");
JavaScript

一个do-while循环被创建用于持续从用户那里接收输入并生成对应的响应,直到用户希望结束为止。每当循环完成一次迭代时,它都会询问用户是否希望继续对话。

第6步:用户输入

const user_input = readlineSync.question("Enter your input: ");
JavaScript

上面的行提示用户并将用户提示保存在user_input

第7步:上下文的聊天历史

the 
const messageList = chatHistory.map(([input_text, completion_text]) => ({
      role: "user" === input_text ? "ChatGPT" : "user",
      content: input_text
    }));
    messageList.push({ role: "user", content: user_input });
JavaScript

使用map()方法按照OpenAI ChatGPT API预期的格式创建消息列表。最后,将用户当前的输入添加到数组的末尾。

第8步:AI模型

const GPTOutput = await openai.createChatCompletion({
        model: "gpt-3.5-turbo",
        messages: messageList,
});
JavaScript

openai.createChatCompletion() 生成OpenAI API的响应

model 并指定用于生成响应的ChatGPT模型。

第9步:AI模型响应

const output_text = GPTOutput.data.choices[0].message.content;
console.log(output_text);
JavaScript

通过对象生成的响应将被提取并存储在一个变量中,并将在控制台上打印出响应。

第10步:更新聊天记录

chatHistory.push([user_input, output_text]);
JavaScript

我们将会把用户输入和模型生成的回答存储在数组中。

第11步:错误处理

catch (err) {
      if (err.response) {
        console.log(err.response.status);
        console.log(err.response.data);
      } else {
        console.log(err.message);
      }
    }
JavaScript

catch块在发生错误时执行,并且如果响应中不存在该错误消息,则在控制台上打印该消息。

第12步:调用异步函数

APIcall();
JavaScript

接下来,我们将调用上述的API调用函数。

结论

OpenAI为用户提供了一个完整的套件,不仅包括一个强大的聊天机器人,还包括一个可以将其集成到我们的应用程序中的API。API也易于使用,不需要太多的配置或样板代码。该API还会记住聊天的历史上下文,以更像人类一样回答问题。该API也可以用于商业用途,用于构建可扩展的应用程序。

常见问题

1. ChatGPT API免费吗

是的,但在某些限制后,我们必须支付使用API的费用。要使用API,需要在OpenAI上创建一个帐户,可以免费创建。

2. ChatGPT API的速率限制是什么

根据官方OpenAI文档,每分钟的请求次数限制为3 RPM(适用于免费层),每分钟的令牌数限制为40,000 TPM。

3. ChatGPT API可以用于商业用途吗

是的,可以将ChatGPT API集成到商业项目中使用。为此,可能需要购买按需付费计划以获得增加的API调用速率限制。ChatGPT API经过精心设计,考虑到应用程序的可扩展性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册