Привет, Хабр! Хочу поделиться своим опытом создания бота, который может имитировать стиль общения любого пользователя Telegram. Проект AI Telegram Responder позволяет обучать модели на основе истории переписки и использовать их для автоматических ответов в определенных чатах.

Пример работы нейросети, обученной на ≈ 6000 сообщенях
Пример работы нейросети, обученной на ≈ 6000 сообщенях

Приступим к созданию

Шаг 1: Клонируем репозиторий на ваш пк

Выбираем любую удобную для вас IDE, открываем какую-нибудь директорию и в терминале и прописываем:

git clone https://github.com/Eiztrips/ai-responder.git

затем

cd ai-responder

Открываем проект в IDE
Открываем проект в IDE

Отлично, теперь когда проект на вашем устройстве, его нужно настроить.

Создаем виртуальное окружение (гайд).

если вы все сделали правильно, появится надпись (.venv)
если вы все сделали правильно, появится надпись (.venv)

Устанавливаем необходимые пакеты - прописываем в терминале pip install -r requirements.txt

ВАЖНО: если у вам мощная видеокарта (с поддержкой CUDA), раскомментируйте
# --extra-index-url https://download.pytorch.org/whl/cu118
в requirements.txt перед установкой.

Шаг 2: Настройка конфигурации

Заходим на этот сайт и выполняем следующие действия:

Вводим свой номер телефона. Далее подтверждаем кодом доступа.
Вводим свой номер телефона. Далее подтверждаем кодом доступа.
Нажимаем на API development tools
Нажимаем на API development tools
Создаем приложение
Создаем приложение
Из конфигурации забираем App api_id и App api_hash, далее они нам пригодятся. (НИКОМУ ИХ НЕ ПОКАЗЫВАЙТЕ!!)
Из конфигурации забираем App api_id и App api_hash, далее они нам пригодятся. (НИКОМУ ИХ НЕ ПОКАЗЫВАЙТЕ!!)

Далее нужно настроить конфигурационный файл в нашем проекте.

Находим файл .env_example (в директории start/) и переименовываем в .env. Теперь нам нужно его отредактировать.

Вставляем необходимые данные (API_ID и API_HASH забрали ранее, PHONE (+7...) и LOGIN (без @) указываем свои)
Вставляем необходимые данные (API_ID и API_HASH забрали ранее, PHONE (+7...) и LOGIN (без @) указываем свои)

TARGET_USER_IDS нужны в режимах only_private_chats и stalker, это ID пользователей, которым будет отвечать наша нейросеть.

TARGET_CHANNEL_IDS нужны в режиме only_channel_messages, это ID бесед или групп, в которых наша нейросеть будет общаться с другими пользователями.

  • Как получить ID пользователя?

    • Вариант 1 - просите знакомого узнать свой id через @getmyid_bot и прислать вам

    • Вариант 2 - Создаете своего бота в @BotFather и все так же просите написать что-нибудь, далее переходите на https://api.telegram.org/bot{id}/getUpdates и достаете от туда

    • Вариант 3 - Включить в экспериментальных настройках телеграмма пункт отображения id

  • Как получить ID беседы/группы?

    • Вариант 1 - все так же через бота @getmyid_bot, вот краткий гайд.

    • Вариант 2 - Включить в экспериментальных настройках телеграмма пункт отображения id

Шаг 3: Скачиваем историю чата и создаем датасет

Открываем чат с определенным пользователем, либо беседу и следуем инструкции:

Нажимаем кнопку  "Экспорт истории чата"
Нажимаем кнопку "Экспорт истории чата"
Убираем ото всюду галочки, повышаем лимит до максимума (это не значит, что файл будет столько весить), формат вместо HTML ставим JSON
Убираем ото всюду галочки, повышаем лимит до максимума (это не значит, что файл будет столько весить), формат вместо HTML ставим JSON
Ожидаем окончания загрузки
Ожидаем окончания загрузки

Далее запускаем нашу программу. Стартеры выбирайте исходя из своей ОС.

запускаем нашу программу (в IDE проще всего через ПКМ и RUN)
запускаем нашу программу (в IDE проще всего через ПКМ и RUN)
Выбираем пункт "Спарсить JSON файл в датасет"
Выбираем пункт "Спарсить JSON файл в датасет"
В открывшемся окне находим и открываем скачанный ранее файл
В открывшемся окне находим и открываем скачанный ранее файл
Отлично, датасет готов!
Отлично, датасет готов!

Шаг 4: обучение нейросети

Выбираем лучшее устройство для обучения из доступных
Выбираем лучшее устройство для обучения из доступных
далее выбираем пункт "Обучить новую модель"
далее выбираем пункт "Обучить новую модель"
выбираем нужный датасет
выбираем нужный датасет
Выбор пользователя для имитации
Выбор пользователя для имитации
ожидаем загрузки модели
ожидаем загрузки модели
Отлично! Модель создана
Отлично! Модель создана

Шаг 5 (финал): Запуск нейронки

Выбираем модель -> AI-Responder Menu -> 4 -> выбираем

Запускаем клиент -> AI-Responder Menu -> 6 -> вводим код верификации и пароль если запросило

Клиент запущен
Клиент запущен

Тестируем


Режимы работы клиента

"only_channel_messages"

  • отвечает на все сообщения в беседах (если TARGET_CHANNEL_IDS=-1, в других случаях только на те беседы которые там указаны)

"only_private_chats"

  • отвечает на все сообщения в личных чатах (если TARGET_USER_IDS=-1, в других случаях только на чаты которые указаны)

"stalker"

  • отвечает на сообщения определенных пользователей указанных в TARGET_USER_IDS во всех чатах, беседах, группах.

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


  1. Kamil_GR
    15.06.2025 09:57

    Где-то можно потестить?


    1. eizstrips Автор
      15.06.2025 09:57

      позже обучу тестовую модель для пользователей со слабым пк, а так на любом железе, где-то дольше где-то быстрее


  1. Krypt
    15.06.2025 09:57

    Эффект как на картинке до ката я получил на локальной модели когда GGUF-файл был повреждён при скачивании