Введение

Это моя первая статья но надеюсь вам понравится! Почему я решил создать эту статью, когда скорее всего есть уже много других подобных? Дело в том что официальное 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()

Комментарии (6)