Добавьте ИИ на свой сервер Discord
Искусственный интеллект сейчас находится на подъеме, и многие разработчики хотят начать создавать проекты с его помощью. Однако обучение собственного ИИ использованию его в вашем проекте может быть довольно сложным для новичков.
К счастью, в последние годы взаимодействие с ИИ стало намного проще благодаря таким компаниям, как OpenAI, публикующим API для взаимодействия со своими большими предварительно обученными нейронными сетями.
В этом уроке мы создадим гениального бота Discord, который сможет отвечать на сложные вопросы и выполнять полезные задачи. Для создания этого бота мы будем использовать Node.js, Discord.js и API OpenAI для GPT-3, одной из самых больших и умных нейронных сетей, когда-либо обученных.
Итак, без лишних слов, давайте начнем и повеселимся с искусственным интеллектом!
Обновление: тем временем в Discord API и Discord.js были внесены критические изменения. Найдите обновленный код для bot.js в конце этого руководства.
Что вам понадобится (предварительные требования)
Для создания нашего проекта вам понадобится пара аккаунтов и установленное необходимое программное обеспечение, а именно:
Счета:
Программное обеспечение устанавливает:
- Node.js (скачать и установить отсюда)
- VS Code (скачать и установить отсюда). Если у вас еще нет редактора кода
Подготовка раздора
Шаг 1. Войдите в Discord и создайте сервер
Если у вас еще нет. Имейте в виду, что вы должны владеть сервером или знать кого-то с правами на добавление учетной записи бота на более позднем этапе. Вы создаете новый сервер, щелкнув значок «+» в левом боковом меню.
Шаг 2. Добавьте новое приложение для разработчиков
Перейдите на https://discord.com/developers/applications и нажмите кнопку Новое приложение в правом верхнем углу, чтобы создать новое приложение.
Шаг 3. Дайте приложению имя
Поставьте лайк «AiBot» и нажмите «Создать».
Шаг 4. Создайте бота
Перейдите в раздел «Бот» в левом боковом меню и нажмите «Добавить бота» в правой части экрана.
Шаг 5. Создайте токен бота
Нажмите кнопку «Сбросить токен», чтобы создать новый токен бота. Этот токен является секретным и не должен передаваться другим. Сохраните его в текстовом файле для дальнейшего использования (токен отображается только один раз).
Шаг 6. Установите область действия и разрешения для бота.
Перейдите в раздел OAuth2 ›Генератор URL в меню настроек.
Установите область действия на «бот» и установите разрешения «Чтение сообщений/Просмотр каналов» и «Отправка сообщений». Это позволит боту читать и писать сообщения в чате сервера.
Шаг 7. Скопируйте URL-адрес приглашения и вставьте его в браузер
Прокрутите вниз и найдите «Сгенерированный URL». Это будет выглядеть примерно так:
https://discord.com/api/oauth2/authorize?client_id={YOUR_CLIENT_ID}&permissions=3072&scope=bot
Вставьте этот URL-адрес в строку поиска вашего браузера. Выберите сервер, на котором хотите авторизовать бота, и нажмите «Далее» («Weiter»).
Примите необходимые разрешения и завершите, нажав «Авторизовать».
Шаг 8. Приветствуем только что созданного бота на сервере!
Закройте вкладку и вернитесь на свой сервер. Вы найдете своего бота среди участников сервера, если все прошло хорошо.
Оживите робота с искусственным интеллектом
Теперь, когда бот виден на нашем сервере, давайте заставим его что-то делать с кодом.
Шаг 9. Инициализируйте новый проект
Создайте новую папку и назовите ее, например, «aiBot» в удобном для вас месте на компьютере. Я создал свой на рабочем столе.
Теперь откройте приложение VSCode и только что созданную папку в разделе «Файл» > «Открыть папку».
Теперь в строке меню Терминал › Новый терминал откройте новый терминал. Новый терминал должен появиться снизу.
В терминале инициализируйте новое приложение Node.js командой:
npm init -y
Затем нажмите ввод. В проводнике слева вы увидите, что выполнение команды создало новый файл package.json
.
Шаг 10. Создайте новый файл, содержащий код бота
Отредактируйте файл package.json
, чтобы скрипт выполнялся в этом файле кода бота при запуске.
Нажмите на значок «Новый файл», чтобы создать новый скрипт Node. Затем назовите файл bot.js
и напишите в нем какой-нибудь код hello world. Не забудьте сохранить.
Затем перейдите к файлу package.json
и отредактируйте его следующим образом:
Теперь вы можете выполнить команду:
npm start
В терминале должно быть напечатано «Hello AI bot».
Шаг 11. Установите зависимости Discord.js
Теперь, когда мы можем запустить скрипт bot.js
, давайте установим библиотеку Discord.js для взаимодействия с Discord.
В терминале запустите:
npm install discord.js
Это установит библиотеку Discord.js для простого взаимодействия с API Discord. Если вы получаете только предупреждения, проблем быть не должно. Однако, если есть ошибки, поищите решения в Интернете.
Шаг 12. Напишите код, который оживит вашего ИИ-бота
Откройте файл bot.js
. Там напишите следующий код:
Замените <YOUR_SAVED_BOT_TOKEN>
токеном, который вы сохранили для последующего использования на шаге 5 этого руководства, и поместите его в кавычки. Затем сохраните файл.
Этот токен никому нельзя передавать, поэтому не отправляйте код для этого руководства напрямую на GitHub. Существует возможность использовать пакет «dotenv» в сочетании с файлом «.gitignore» для безопасного хранения вашего токена, но в этом руководстве я хотел сосредоточиться на простоте, а не на ИТ-безопасности.
Шаг 13. Он (а) запущен!
Запустите следующую команду в терминале и посмотрите на свой сервер Discord. Теперь бот должен появиться в сети.
npm start
Устранение неполадок. Если вы получаете сообщение об ошибке типа «Ошибка: не удается найти модуль ‘node:events’», убедитесь, что у вас установлена версия Node.js выше версии 16.6.0. Вы можете проверить текущую версию Node с помощью команды:
node -v
Если ваша версия ниже версии 16.6.0, перейдите на сайт Node.js и установите более новую версию. Вы всегда можете закрыть команду, которая застряла в терминале, используя:
[Ctrl + C] (on Windows) or [Cmd + C] on MacOS
Попробуйте повторно запустить команду «npm start» и снова проверьте свой сервер Discord. Теперь вы должны увидеть, что ваш ИИ-бот находится в сети!
Шаг 14. Заставьте бота ИИ отвечать на сообщения на сервере
Отредактируйте файл bot.js
, указав следующий код для ответа на сообщения, содержащие восклицательный знак ("!") в качестве первого символа.
Сохраните изменения. Перезапустите приложение, нажав «Ctrl + C» в терминале и снова запустив «npm start».
Теперь отправьте сообщение с восклицательным знаком в качестве первого символа на сервер. Теперь ИИ-бот должен отвечать «Привет от ИИ-бота». Он не должен отвечать на сообщения, не имеющие требуемого формата.
Подготовьте OpenAI GPT-3
Теперь, когда у нас есть бот, отвечающий на сообщения, давайте сделаем его умным. Для этого нам нужно получить токен с сайта OpenAI.
Шаг 15. Получите токен OpenAI API
Перейдите на https://beta.openai.com/account/api-keys. На момент создания этого руководства служба GPT-3 все еще находилась в стадии бета-тестирования. Если вы будете следовать инструкциям позже, указанный выше URL-адрес может уже измениться. Если это так, войдите в свою учетную запись OpenAI и перейдите в раздел Личные в правом верхнем углу веб-сайта. Оказавшись там, нажмите Личные и выберите параметр, например Просмотреть ключи API.
Там вы найдете такой раздел:
Нажмите «Показать» и сохраните ключ API в безопасном месте. Опять же… вы никогда не должны делиться этими ключами API с кем-либо или загружать их на свой GitHub. Если секретного ключа еще нет, нажмите «Создать новый секретный ключ», чтобы создать новый ключ API.
Также имейте в виду, что с бесплатной учетной записью у вас будет ограничение на размер (и, возможно, также количество) вопросов, которые вы можете задать ИИ.
Подключиться к OpenAI GPT-3
Теперь, когда у вас есть необходимый токен с сайта OpenAI, давайте напишем код для взаимодействия с GPT-3.
Шаг 16. Установите библиотеку OpenAI
Перейдите на VSCode. Остановите бота, если он в данный момент запущен, набрав Ctrl + C
в терминале.
Теперь установите библиотеку OpenAI для Node.js с помощью следующей команды в терминале:
npm install openai
Шаг 17. Создайте скрипт для взаимодействия с GPT-3
В VSCode создайте новый файл с именем ai.js
.
Теперь вставьте следующий код внутрь и замените часть <YOUR_OPENAI_API_KEY>
своим токеном API из шага 15 и обязательно поместите его в двойные кавычки.
Шаг 18. Проверьте подключение к GPT3 OpenAI
Сохраните файл и перейдите к терминалу. Там выполните следующую команду:
node ai.js
Если все сработало правильно, вы должны увидеть ответ от ИИ, напечатанный на терминале.
Теперь сделайте своего ИИ-бота суперинтеллектуальным!
Почти готово! Поздравляем! Ты обалденный! Теперь давайте соединим все части вместе, чтобы довести вашего ИИ-бота до уровня супергениальности.
Шаг 19. Подключите бота Discord к GPT-3
Перейдите к вашему файлу ai.js
. Там удалите пример вызова функции «аск» и экспортируйте функцию, используя module.exports
. Также удалите лог консоли и верните ответ в функции «спросить».
Теперь перейдите к файлу bot.js
и примените следующие изменения:
Не забудьте сохранить изменения. Теперь, в последний раз, остановите работу вашего бота с помощью Ctrl + C
и перезапустите его с помощью:
npm start
Затем зайдите на свой сервер Discord и проверьте, все ли работает нормально. Напишите сообщение с вопросом или заданием в чат, поставив в начале восклицательный знак.
Поздравляем!
Вы сделали это! Вы создали своего первого ИИ-бота Discord, используя Node.js, Discord.js и API OpenAI. Теперь вы можете похвастаться своим ботом перед друзьями или просто задать им интересующие вас вопросы!
Надеюсь, вам было интересно следовать этому (длинному) уроку! Если вы столкнетесь с какими-либо проблемами или ошибками в коде, не стесняйтесь обращаться ко мне.
Если вам понравился этот урок, я также буду рад любому отзыву с вашей стороны! Это дает мне энергию для создания новых руководств, подобных этому! :)
Ваше здоровье!
Обновлять
Тем временем Discord API и Discord.js были обновлены, что привело к критическим изменениям. Если ваш бот Discord не отвечает, выполните следующие действия:
Обновите дискорд.js до более новой версии:
Чтобы получить версию, которую я тестировал, удалите discord.js с помощью npm uninstall discord.js
, а затем запустите npm install [email protected]
.
Включить намерение привилегированного шлюза:
На портале разработчиков Discord перейдите в раздел: Приложения ↦ Настройки ↦ Бот ↦ Намерения привилегированного шлюза и установите флаг намерения содержимого сообщения. В противном случае вы не будете получать содержимое сообщений, отправленных на сервер.
Обновите код bot.js:
//in bot.js const { ask } = require("./ai.js"); //import the "ask" function from the "ai.js" file const { Client, Events, GatewayIntentBits } = require('discord.js'); //v14.6.0 const token = "<YOUR_BOT_TOKEN>"; // Create a new client instance const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] }); client.once(Events.ClientReady, c => { console.log(`Ready! Logged in as ${c.user.tag}`); }); client.on(Events.MessageCreate, async message => { if (message.content.substring(0, 1) === "!") { const prompt = message.content.substring(1); //remove the exclamation mark from the message const answer = await ask(prompt); //prompt GPT-3 client.channels.fetch(message.channelId).then(channel => channel.send(answer)); } }); // Log in to Discord with your client's token client.login(token);
Примечание. Возможно, это не оптимальный код, но он работает у меня на сегодняшний день (19.11.2022). Я надеюсь, что это исправит проблемы, с которыми некоторые из вас сталкивались, когда бот не отвечал! Удачного кодирования!