Skip to content

Telegram bot with the usage of huggingface language model trained on telegram chat

Notifications You must be signed in to change notification settings

moflotas/telegram-nlp-bot

Repository files navigation

NLP-telegram-bot

Описание

Телеграм бот с использованием языковой модели с huggingface, натренированный на чате.

Обучению модели

Было решено тренировать модель на чате тренировок яндекса, так как этот чат содержит много диалогов, и сам чат модерировался организаторами.

Детали обучения можно изучить в ipynb ноутбуке

Телеграм-бот

Для написания телеграм бота была выбрана библиотека pyrogram в виду своей эффективности и протокола MTProto

В ходе тестов было выявлено, что модель в среднем тратит > 15 секунд на генерацию ответа пользователю. Если пользователь будет спамить сообщениями, вся вычислительная мощность будет тратиться только исключительно на него, не давая возможности другим людям пообщаться. По этой причине пока модель отвечает на текущее сообщение пользователя, все последующие игнорируются.

Для независимости бота от модели (блокирования работы бота из-за синхронной генерации ответа моделью) было решено их разделить на 2 сервиса и соединить при помощи RabbitMQ. Бот отправляет кладет запросы на генерацию ответов в очередь, RabbitMQ равномерно распределяет их между несколькими запущенными Dockerами с моделью, которые таким же образом отправляют ответ назад боту. Таким образом легко горизонтально масштабировать текущее решение, просто запустив больше Dockerов с моделью.

Почему pyrogram?

Я подумал, что будет скучно делать просто телеграм бота, и поэтому решил сделать user-botа. Иначе говоря, бота, который будет отвечать от моего имени. Pyrogram имеет довольно простой интерфейс для его создания, а людям веселее общаться с моей второй личностью.

Запуск

Запустить можно при помощи команды

docker compose up --build -d

Для увеличения пропускной способности, можно увеличить количество серверов в docker-compose.yml

Попробовать

По вышеописанным причинам, попробовать можно прямо в чате со мной

Поддерживаемые команды:

  • /help - вывод сообщения с помощью
  • /delete_history - очистить контекст
  • /set_context_length <NUMBER> - изменить длину контекста
  • Тимоха, <MESSAGE> - активировать генерацию ответа моделью

About

Telegram bot with the usage of huggingface language model trained on telegram chat

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published