Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 3.41 KB

README.markdown

File metadata and controls

44 lines (33 loc) · 3.41 KB

Телеграмм бот для генерации контекстуальных стикеров

Задача

Разработать бота для генерации контекстуальных стикеров

Интерфейс пользователя

Бот находится в чате и считывает текстовое окно (далее - контекст), сохраняя последние 500 символов(~100 слов) в базу данных

Архитектура решения

Контекст сообщений при вызове командой бота подается на вход языковой модели, которая генерирует из диалога связный контекстуальный промпт. Далее этот промпт подается на вход диффузионной модели, на выходе которой уже и получаем нашу картинку - стикер

Парсинг

Функционал для парсинга сообщений из чатов с использованием библиотеки Telethon: извлекает сообщения из чатов пользователя и сохраняет их в формате контекст - путь до соответствующего стикера. Одной из ключевых особенностей решения является возможность гибкого и адаптивного парсинга сообщений

Создание датасета

Для генерации описаний с спарсенным стикерам использовалась модель microsoft/Florence-2-base-ft. Она позволяет генерировать длинные и полные описания. Сохраняем датасет в виде пар context - caption

Датасет

Обучение

С помощью библиотек unsloth и trl дообучили на собранном датасете Qwen 2.5 7B на задачу генерации из контекстного окна (на русском) промпта (на английском)

Обученная модель

Результат

image

Содержание репозитория:

  • Parser # Функционал парсинга датасета
  • ReadBot # Основная логика работы бота
  • Preprocessing # Ноутбуки по обучению модели и сбору датасета

Installation

  • Склонируйте репозиторий git clone https://github.com/firegory/StickerIt.git

  • Создайте виртуальное окружение, активируйте его python -m venv .env .evn/Scripts/activate

  • Установите необходимые библиотеки cd StickerIt pip install -r ReadBot/bot_and_dp/requirements.txt

  • Создать файл .env, поместить в него токен вашего бота

  • Добавить бота в качестве участника любого чата и дать ему права администратора

  • Запустить бота python ReadBot/bot_and_dp/bot.py