Как сделать телеграм-бота на нейросети ChatGPT на node.js?
ChatGPT - очень популярная нейросеть, которая умеет весьма осмысленно отвечать на вопросы пользователей, в том числе на русском языке. Попробовать пообщаться с ней можно на сайте, также в интернетах есть уже весьма много готовых реализаций ботов для разных платформ, в том числе и для телеграма, но забавно, что сделать свою реализацию может оказаться быстрее, чем развернуть чей-нибудь проект. Чтобы получить ответ от нейросети достаточно дернуть один запрос в апи openai с немного неочевидным названием: Create completion.
Собственно, к процессу создания:
- создаем бота в телеграме с помощью BotFather, отсюда забираем token, еще можно сразу отключить Group privacy в настройках бота после создания;
- регистрируемся в openai и в профиле создаем секретный ключ и сохраняем куда-нибудь.
Если node.js уже установлена, тогда описанные выше шаги - это самое сложное.
Для общения с апи телеграма воспользуемся библиотекой node-telegram-bot-api, а для общения с openai возьмем одноименную библиотеку (на основе нее примеры в доке), ну и остается написать код и запустить.
const { Configuration, OpenAIApi } = require('openai');
const TelegramBot = require('node-telegram-bot-api');
const apiKey = 'апи ключ от openai';
const botToken = 'токен телеграм бота';
const configuration = new Configuration({
apiKey: apiKey,
});
const openai = new OpenAIApi(configuration);
const bot = new TelegramBot(botToken, {polling: true});
bot.on('message', async (msg) => {
const {chat, text} = msg;
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: text,
temperature: 1,
max_tokens: 500,
top_p: 1,
frequency_penalty: 0.0,
presence_penalty: 0.6,
stop: [" Human:", " AI:"],
});
const answer = completion.data.choices[0].text;
await bot.sendMessage(chat.id, answer);
});
Параметры для вызова openai api можно найти в примерах: обычный чат, чат с другом. В этих примерах генерится кусок диалога и нейросеть дополняет этот диалог, отсюда и получается, что результат метода выглядит как вопрос.
Это самая примитивная реализация, которую уже можно развивать под свои нужды, например, добавить проверку chat.type на приватные сообщения и супергруппу, также отработать вариант обращения к боту по имени и прочее, в общем, сделать то, чего вам не хватает в чужих реализациях. Успехов! =)
Сколько стоит?
В конце 2022 openai выдавало 18 бесплатных баксов на пробное использование их апи со сроком годности до апреля 2023. В профиле можно посмотреть как расценки, так и сколько денег уже потрачено. На деле где-то 200 ответов от ИИ обходятся в 1 бакс, чего вполне достаточно, чтобы заценить сервис.