Skip to content

XvKuoMing/TeleGPT

Repository files navigation

О чем проект?

Данный репозиторий представляет собой открытый исходный код для телеграм чатбота: @AutoRegressorBot.
Функционал бота следующий:

  • Использует Openai API;
  • Учитывает историю диалога, которую хранит в Redis. Если диалог не продолжить в течение часа, автоматически удаляет сообщение, используя Time-to-live cache;
  • Работает асинхронно, использует такие фреймворки как: aiohttp, aiogram, async.redis.
  • Нет цензуры. вместо этого запрос обрабатывается собственной моделью, в которой не заложена этическая политика Openai;

Цель проекта

Цель проекта заключается в том, чтобы реализовать полноценного чатбота с открытым исходным кодом и процессом деплоя на русском языке. Таким образом, чтобы каждый мог ознакомится и переиспользовать готовые решения для своих целей. В частности решают следующие задачи, которые сложно найти в интернете:

  • Как быстро и просто настроить Openai API с aiogram (config/openai_config.py, utils/generation.py);
  • Как просто установить и поднять бота с использованием webhook на aiohttp и aiogram;
  • Как быстро подключить Redis к aiogram (config/dp_config.py);
  • Как за'деплоить aiogram бота с помощью Docker (Dockerfile, docker-compose.yaml);
  • Имплементация CI/CD процесса для чатбота.

Что еще планируется сделать?

В будущем планируется реализовать такие функции как:

  • Распознание речи в текст для того, чтобы бот мог отвечать на голосовые сообщения (Данная функция уже реализована, код находится в репо (utils/stt.py). Однако из-за слабой мощности существующего хоста фича деактивирована на проде);
  • Генерация ответа по чанкам;
  • Ускорение ответов на аналогичные вопросы с использованием векторных БД;
  • Увеличение качества ответов на основе истории: DPO, RLHF(AI) (без и с дообучения модели);
  • Обучение и деплой собственного ML-сервиса на собранных данных;

Установка Webhook на aiogram

Чтобы поднять aiogram чатбота на webhook необходимо пройти несколько этапов:

  1. Установить статический IP на хосте;
  2. Получить публичный (статический) IP своего роутера; В моем случае мне пришлось связываться с ISP и подключать данную услугу;
  3. Пробросить порты (port-forwarding) со своего роутера c публичным IP на ваш хост;
  4. Установить reverse proxy на свой хост;
  5. Так как телеграмм работает только по протоколу HTTPS, то необходимо получить сертификаты или сгенерировать свой собственный;
  6. Поднять nginx и пробросить порт с 443 на свой aiohttp сервис.
  7. Запустить свой aiohttp сервис.

Пример кода можно для настройки и поднятия webhook сервиса найти в файле: config/webhook_config/py
Пример настройки reverse proxy на nginx — nginx-example.conf
Подробную инструкцию по генерации собственных сертификатов можно посмотреть по [ссылке](https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04)
*В дальнейшем я планирую добавить детальную инструкцию от и до реализации каждого из указанных шагов*

About

simple telegram gpt

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors