В этом руководстве мы покажем вам, как создать простого чат-бота с использованием языковой модели OpenAI GPT-4 и Express.js, минималистичной среды Node.js. Этот чат-бот будет веб-сервером, который может принимать пользовательский ввод через запрос POST и возвращать ответ, сгенерированный ИИ. Давайте начнем!

Предпосылки

Прежде чем начать, убедитесь, что у вас есть следующие предварительные условия:

  • Node.js и npm: Node.js — это среда выполнения JavaScript, которую мы используем для запуска нашего сервера, а npm — это менеджер пакетов для Node.js. Вы можете скачать оба здесь.
  • Учетная запись OpenAI: вам нужен ключ API от OpenAI, чтобы использовать модель GPT-4. Вы можете получить это, создав учетную запись на сайте OpenAI.

Настраивать

Начните с создания нового каталога для проекта и перехода в него:

mkdir chatbot cd chatbot

Инициализируйте новый проект Node.js:

npm init -y

Установите необходимые пакеты npm:

npm install express body-parser openai dotenv

Это зависимости, которые нужны нашему приложению: Express.js для обработки веб-запросов, body-parser для анализа тела входящих запросов, OpenAI для взаимодействия с API GPT-4 и dotenv для управления переменными среды.

Код

Вот разбивка кода:

Импорт библиотек

Начнем с импорта необходимых библиотек и настройки нашего экземпляра OpenAI:

const express = require("express");
const bodyParser = require("body-parser");
const { Configuration, OpenAIApi } = require("openai");

require("dotenv").config();
const app = express();
app.use(bodyParser.json());
const config = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(config);

Создание массива сообщений

Затем мы создаем массив для хранения разговора:

messages = [];

В этом массиве мы будем хранить все сообщения, отправленные пользователем, и ответы, сгенерированные ИИ.

Маршрут POST для сообщений

Затем мы определяем маршрут POST /message:

app.post("/message", (req, res) => {
  const message = req.body.message;
  messages.push({
    role: "user",
    content: message,
  });
  const response = openai.createChatCompletion({
    model: "gpt-4",
    messages,
  });
  response
    .then((result) => {
      messages.push({
        role: "assistant",
        content: result.data.choices[0].message.content,
      });
      res.send(result.data.choices[0].message.content);
    })
    .catch((err) => {
      console.log(err);
    });
});

Этот маршрут прослушивает запросы POST в конечной точке /message. Каждый входящий запрос должен включать сообщение от пользователя, которое добавляется в наш массив messages. Вся история разговоров (в том виде, в каком она представлена ​​в массиве messages) затем отправляется в модель OpenAI GPT-4, которая генерирует ответ. Затем этот ответ отправляется обратно пользователю и добавляется в наш массив messages для сохранения истории разговоров.

Прослушивание сервера

Наконец, мы заставляем наш сервер прослушивать запросы через порт 3000:

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});

Запуск приложения

Вы можете запустить этого чат-бота, сохранив код в файле (например, app.js) и выполнив следующую команду:

node app.js

Вы должны увидеть вывод: Server is running on port 3000. Это означает, что ваш чат-бот теперь работает и прослушивает входящие запросы на http://localhost:3000/message.

В реальном приложении вы хотели бы добавить больше обработки ошибок и обработки крайних случаев, но эта базовая настройка дает вам работающий чат-бот на базе OpenAI GPT-4.

Теперь вы можете опираться на эту основу и расширять приложение в соответствии со своими потребностями. Может быть, вы хотели бы обслуживать веб-страницу и использовать WebSockets для интерфейса чата в реальном времени, или, возможно, вы хотели бы реализовать более продвинутые функции, используя модель GPT-4. Возможности огромны!