-

сайт небольшого сообщества специалистов в сфере IT;
здесь мы делимся экспертизой и наработками

Как сделать телеграм-бота на нейросети ChatGPT на node.js?

ChatGPT - очень популярная нейросеть, которая умеет весьма осмысленно отвечать на вопросы пользователей, в том числе на русском языке. Попробовать пообщаться с ней можно на сайте, также в интернетах есть уже весьма много готовых реализаций ботов для разных платформ, в том числе и для телеграма, но забавно, что сделать свою реализацию может оказаться быстрее, чем развернуть чей-нибудь проект. Чтобы получить ответ от нейросети достаточно дернуть один запрос в апи openai с немного неочевидным названием: Create completion.

Собственно, к процессу создания:

Если 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 бакс, чего вполне достаточно, чтобы заценить сервис.