Как стать автором
Поиск
Написать публикацию
Обновить

Создание бесплатного ChatGPT телеграм бота на Python

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров42K

Введение

Это моя первая статья но надеюсь вам понравится! Почему я решил создать эту статью, когда скорее всего есть уже много других подобных? Дело в том что официальное API компании OpenAI(компании которая создала ChatGPT) - платное(пробный период быстро заканчивается), но недавно я нашел метод, которым сам пользуюсь, через который можно создавать приложения с использованием ChatGPT - бесплатно, покажу на примере просто Telegram-чатбота

Подготовка

Итак для начала нам нужно сделать несколько проверок на необходимые инструменты:

  1. Python - рекомендуемая версия 3.10 и выше

    Чтобы проверить установлен ли Python в коммандной строке введите:

    python -V

    Если коммандная строка вывела версию Python - все в порядке, можем продолжать, в другом случаи установите Python с официального сайта и при установке обязательно убедитесь что поставлена галочка на "Add to PATH", продолжаем

  2. Библиотека для взаимодействия с Telegram API

    Чтобы ее установить необходимо использовать команду:

    pip install python-telegram-bot

  3. Библиотека взаимодействия с ChatGPT

    Мы не будем использовать официальную библиотеку openai , вместо нее будет использована revChatGPT, ссылка на гитхаб автора - клик, чтобы ее установить необходимо использовать команду:

    pip install --upgrade revChatGPT

  4. Токен телеграм-бота

    Получить его можно создав новго или использовав уже существующего бота у BotFather https://t.me/BotFather

  5. Токен ЧатГПТ

    Если вы зарегестрированы в Openai и можете взаимодействовать с ChatGPT на официальном сайте то чтобы его получить надо перейти по ссылке https://chat.openai.com/api/auth/session и скопировать значение "accessToken"

Использования бибилиотеки revChatGPT

Итак для начала давайте разберемся как работает эта библиотека и затем интегрируем ее в бота, сделаем скрипт с постоянным циклом для некого подобия чата внутри консоли:

from revChatGPT.V1 import Chatbot #импортируем библиотеку

accesstoken="здесь вместо текста вставьте ваш accessToken" #задаем переменную токена

chatbot = Chatbot(config={"access_token":accesstoken}) #инициализируем чатбота

while True:
  message = input("Вы:") #создаем ввод текста
  output = chatbot.ask(message) #даем запрос ChatGPT с набранным текстом
  print(f"ChatGPT:{output}") #выводим ответ ChatGPT

Вы можете попробовать использовать этот скрипт для проверки токена и других целей, в нашем случаи ознакомление с работой revChatGPT

Создание Telegram бота

Теперь приступим к созданию кода непосредственно самого бота

1.Импорт библиотек telegram и ChatGPT:

from telegram.ext import Updater, CommandHandler, MessageHandler, filters
from revChatGPT.V1 import Chatbot

2. Инициализируем бота и ChatGPT

# здесь нужно вставить свои токены
TOKENTG = "TELEGRAM_TOKEN"
TOKENGPT = "CHATGPT_TOKEN"
updater = Updater(TOKENTG)
chatbot = Chatbot(config={"access_token":TOKENGPT})

3. Создаем функцию ответа на сообщения пользователя

def chatgpt_reply(update, context):
  context.bot.send_chat_action(chat_id=update.effective_chat.id, action=ChatAction.TYPING)
  text = update.message.text
  reply = chatbot.ask(text)
  update.message.reply_text(reply)

4. Создаем обработчик сообщений

echo_handler = MessageHandler(Filters.text & (~Filters.command), chatgpt_reply)
updater.dispatcher.add_handler(echo_handler)

5. Запуск бота

updater.start_polling()
updater.idle()

Готово! наш код готов к работе, теперь его надо запустить:

python bot.py

*вместо bot.py должен быть файл где вы сохранили код

Заключение

У этого способа есть несколько минусов, которые честно говоря немного огорчают:

  1. вместо полноценной настройки контекста итп для чатгпт как в полноценном официальном АПИ мы имеем лишь ответы обычного ChatGPT

  2. Токен ChatGPT не постоянен и меняется периодически(должно пройти больше месяца)

  3. Этот телеграм бот довольно прост, и , например, если ответ ChatGPT будет слишком большой он не сможет его отправить из за ограничений в количестве символов

В остальном прекрасная а главное бесплатная альтернатива!

Для модерации: в данной статье нет контекста жалобы на компанию OpenAI и их услуги

Полный код бота:

from telegram.ext import Updater, CommandHandler, MessageHandler, filters
from revChatGPT.V1 import Chatbot

TOKENTG = "TELEGRAM_TOKEN"
TOKENGPT = "CHATGPT_TOKEN"
updater = Updater(TOKENTG)
chatbot = Chatbot(config={"access_token":TOKENGPT})

def chatgpt_reply(update, context):
  context.bot.send_chat_action(chat_id=update.effective_chat.id, action=ChatAction.TYPING)
  text = update.message.text
  reply = chatbot.ask(text)
  update.message.reply_text(reply)

echo_handler = MessageHandler(Filters.text & (~Filters.command), chatgpt_reply)
updater.dispatcher.add_handler(echo_handler)

updater.start_polling()
updater.idle()

Теги:
Хабы:
Всего голосов 11: ↑3 и ↓8-3
Комментарии7

Публикации

Ближайшие события