Автор Летисия Кавамото, руководитель отдела разработки Devpass

Кто в наше время не знает ChatGPT? Мы уже использовали его для различных целей в нашей повседневной жизни в качестве разработчиков, но как мы можем сделать следующий шаг и создать приложения с помощью этой технологии?
В этой статье мы шаг за шагом рассмотрим, как создать Node.js API, который интегрируется с OpenAI, чтобы использовать возможности генеративного искусственного интеллекта (ИИ) в наших приложениях.
Шаг 1: Конфигурация и предпосылки
Прежде чем мы начнем, важно настроить среду Node.js.  Вы можете проверить установку, набрав node -v в своем терминале.  Если вам необходимо установить Node.js, вы можете скачать соответствующую версию для вашей операционной системы с официального сайта.  Кроме того, мы будем использовать Yarn для управления зависимостями пакетов.
Для интеграции с OpenAI API* нам необходимо сгенерировать ключ API. Войдите в OpenAI, создайте учетную запись или войдите в существующую учетную запись и откройте страницу ключей API. Нажмите Создать новый секретный ключ, чтобы сгенерировать новый ключ API. Держите ключ под рукой, чтобы использовать его позже.
* ПРИМЕЧАНИЕ. Эта интеграция требует затрат на использование. Проверьте на этой странице, сколько у вас кредита.
Шаг 2: Проект Node.js и его зависимости
Начнем с создания нового проекта Node.js. Откройте терминал и перейдите в каталог, в котором вы хотите создать проект. Затем выполните следующую команду:
yarn init
Эта команда создаст новый файл package. package.json с настройками по умолчанию для вашего проекта.
Чтобы интегрировать OpenAI в наш API, нам нужны некоторые зависимости. Для их установки выполните следующие команды:
yarn add express yarn add openai yarn add dotenv
Express будет использоваться для создания нашего HTTP-сервера, а openai — для интеграции с OpenAI.
Шаг 3: Настройка маршрута API и интеграция с OpenAI
Настроив проект Node.js, давайте создадим маршрут в нашем API, который будет вызывать OpenAI.  Создайте файл index.js и добавьте следующий код:
const express = require('express');
const { Configuration, OpenAIApi } = require('openai');
require('dotenv').config();
const configuration = new Configuration({
    apiKey: process.env.OPENAI_TOKEN,
});
const openai = new OpenAIApi(configuration);
const app = express();
app.use(express.json());
app.post('/api/openai', async (req, res) => {
  const { context, question } = req.body;
  try {
    const gptResponse = await openai.createChatCompletion({
        model: "gpt-3.5-turbo",
        messages: [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "assistant", "content": context},
            {"role": "user", "content": question}
        ]
      });
  
    res.json({ result: gptResponse.data });
  } catch (error) {
    res.status(500).json({ error: 'An error occurred in the OpenAI integration' });
  }
});
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server up and running on port:  ${port}`);
});
Чтобы настроить вызов OpenAI, нам нужно определить 3 основных параметра: система, помощник и пользователь.
- Роль «система» представляет собой системную или логическую часть, которая инициирует диалог и предоставляет начальное сообщение.
- Роль «помощник» представляет собой виртуального помощника, который будет давать ответы на основе предоставленного контекста.
- Роль «пользователь» представляет пользователя, который задает вопрос или взаимодействует с виртуальным помощником.
Эти роли используются для создания имитации разговора между виртуальным помощником и пользователем, где помощник отвечает на вопрос пользователя на основе предоставленного контекста.
Шаг 4: Запуск API
Создайте файл .env в корне вашего проекта и добавьте следующее содержимое:
OPENAI_API_KEY=SuaChaveDeAPIAqui
Теперь, когда все настроено, вы можете загрузить зависимости и запустить Node.js API, введя в терминале следующие команды:
yarn node index.js
Это запустит сервер, и ваш API будет готов к использованию. Ниже приведен пример запроса, который вы можете использовать для тестирования своего приложения.
Пример запроса:
curl - request POST \
 - url https://localhost:3000/api/openai \
 - header 'Content-Type: application/json' \
 - data '{
   "context": "I have a bakery where the bread costs $0.50",
   "question": "How much would 1231412 breads cost?"
 }'
Пример ответа:
{
 "result": {
  "id": "chatcmpl-7bwio4GQsk09z8u3XQFp7uGSrmuZQ",
  "object": "chat.completion",
  "created": 1689278218,
  "model": "gpt-3.5-turbo-0613",
  "choices": [
   {
    "index": 0,
    "message": {
     "role": "assistant",
     "content": "If each bread costs $0.50, the cost of 1231412 breads would be $615,706.00."
    },
    "finish_reason": "stop"
   }
  ],
  "usage": {
   "prompt_tokens": 49,
   "completion_tokens": 33,
   "total_tokens": 82
  }
 }
}
Во внешнем приложении к массиву вариантов можно получить доступ для отображения ответа, сгенерированного API OpenAI для пользователя.

Заключение
В этой статье мы создали простой API, который интегрируется с API OpenAI. Вы узнали, как настроить среду, установить зависимости, пройти аутентификацию с помощью OpenAI и создать маршрут, который выполняет вызовы API OpenAI.
Теперь вы можете расширить эту основу и добавить в свой API дополнительные функции, такие как обработка ввода/вывода, обработка ошибок и многое другое. Наслаждайтесь изучением возможностей искусственного интеллекта в своих приложениях с помощью OpenAI API!
В следующей статье я расскажу больше о моделях и параметрах, которые мы использовали при интеграции с OpenAI.
Доступ к полному проекту на GitHub Devpass: https://github.com/devpass-tech/open-ai-integration
С помощью Devpass компании используют ИИ для преобразования технологической документации в иммерсивные и интерактивные приложения с помощью чат-ботов и интеграции с такими инструментами, как GitHub.
Создайте самую безопасную профессиональную среду разработки, моделируя повседневные задачи и повышая производительность разработчиков в вашей команде.
 
                                                                     
                                                                     
                                                                    