Telegram Bot с подключением OpenAI GPT-3.5-turbo

от автора

Поскольку мир становится все более цифровым, люди постоянно ищут новые способы общения друг с другом. Одним из самых популярных приложений для обмена сообщениями сегодня является Telegram, который позволяет пользователям отправлять друг другу сообщения, фотографии и видео. Но что, если бы вы могли делать больше, чем просто отправлять сообщения? Что, если бы вы могли поговорить с ботом, который использует искусственный интеллект, чтобы понимать ваши сообщения и отвечать на них?

Это именно то, что я намеревался сделать, когда создавал телеграмм-бота ChatGPT. Этот бот использует OpenAI GPT-3.5, чтобы предоставить пользователям более естественный и похожий на человеческий опыт общения. Но я не остановился на достигнутом. Я также включил контекст, рисование ИИ и парсинг Google, чтобы сделать бота еще более мощным и универсальным.

Для начала мне нужно было получить необходимые API и установить переменные среды. Первым API, который мне понадобился, был ключ OpenAI, который я получил на веб-сайте OpenAI. С помощью этого ключа я смог получить доступ к модели GPT-3.5-turbo, которая представляет собой мощную языковую модель, которая может понимать ввод на естественном языке и реагировать на него.

Далее мне понадобился ключ от Stable Diffusion, который предоставляет услуги рисования AI. Этот ключ позволил мне включить рисование в бота, что означает, что пользователи могут отправлять команду Paint с описанием сцены.

Затем мне понадобился ключ от модели replicate.com, который обеспечивает преобразование изображения в текст. С помощью этого ключа я смог включить функциональность OCR.

После того, как у меня были настроены все необходимые API и переменные среды, я начал создавать бота. Первым шагом было создание бота Telegram с использованием Telegram Bot API. Этот API предоставляет простой способ создания и управления ботами на платформе Telegram.

const replicate = new Replicate({ token: process.env.REPLICATE_KEY }); const openai = new OpenAIApi(new Configuration({ apiKey: process.env.OPENAI_KEY })); const bot = new TelegramBot(process.env.TELEGRAM_KEY, { polling: true }); const translation = new TranslationServiceClient(); 

Далее мне нужно было интегрировать OpenAI API в бота. При этом задействован node-telegram-api, который получает сообщения от пользователей и отправляет их в API OpenAI для обработки. Как только API вернул ответ, мне пришлось отформатировать его и отправить обратно пользователю через бота Telegram.

const getText = async (prompt, temperature, max_tokens, chatId) => {     try {         const completion = await openai.createChatCompletion({             model: "gpt-3.5-turbo",             messages: [{ role: "user", content: prompt }],             max_tokens: max_tokens,             temperature: temperature,         });         const response = completion?.data?.choices?.[0]?.message?.content;         return response;     } catch (e) {         console.error(e.message);     } }; 

Чтобы сделать бота еще более мощным, я решил включить контекст в разговор. Это означает, что бот запоминает предыдущие сообщения и использует их для предоставления более персонализированных ответов. Например, если пользователь просит бота порекомендовать ресторан, бот запомнит местоположение пользователя и предыдущие предпочтения ресторана, чтобы предоставить более релевантную рекомендацию.

        // Brain activity         context[chatId] = context[chatId]?.slice(-CONTEXT_SIZE * premium(chatId)) ?? "";         writeContext(context);          if (msg.photo) {             // visual hemisphere (left)             visualToText(chatId, msg);         }         msg.text = msg.text?.substring(0, MAX_LENGTH * premium(chatId));         if (msgL.startsWith("google")) {             textToGoogle(chatId, msg.text.slice(7), msg.from?.language_code);         } else {             if (msgL.startsWith("draw") || msgL.startsWith("paint")) {                 // visual hemisphere (left)                 textToVisual(chatId, msgL, msg.from?.language_code);             } else {                 // audio hemisphere (right)                 textToText(chatId, msg);             }         } 

С интегрированными API-интерфейсами Stable Diffusion и Google парсинга бот стал еще более универсальным. Теперь пользователи могут попросить бота искать информацию в Интернете и получать соответствующие результаты.

const textToVisual = async (chatId, text, language_code) => {     if (text === "draw" || text === "paint") {         // link between right and left hemisphere (painting)         text = last[chatId];     }     if ((language_code == "ru" && !text?.startsWith("draw"))) {         text = await translate(text, "en");     }     const photo = await getArt(         text +             (text?.startsWith("draw")                 ? ""                 : ", deep focus, highly detailed, digital painting, artstation, 4K, smooth, sharp focus, illustration")     );     if (photo) {         bot.sendPhoto(chatId, photo);     } };  

Создание телеграмм-бота ChatGPT было сложным, но полезным опытом. Интегрировав несколько API и используя контекст, стабильное рисование ИИ и парсинг Google, я смог создать бота, который обеспечивает пользователям более естественный и человеческий опыт общения. Поскольку технология искусственного интеллекта продолжает развиваться, я с нетерпением жду, какие новые возможности она принесет в такие приложения для обмена сообщениями, как Telegram.

Гитхаб здесь

Рабочий пример
Чтобы попробовать бесплатно, используйте 


ссылка на оригинал статьи https://habr.com/ru/post/721638/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *