Проект рекомендательной системы по поиску мероприятий в любом городе в телеграм-боте (Проектный практикум МФТИ 2023)
- Роман Вяткин: Scrum-Master/Data Scientist
Телеграм
LinkedIn - Davron Ikhmatullaev: ML Engineer / DevOps
Телеграм
LinkedIn - Ярослав Баймлер: Документалист / QA Engineer
Телеграм - Дмитрий Косачев: Fullstack-разработчик
Телеграм - Вероника Заславская: Data Scientist
Телеграм LinkedIn
5fe504fb8fa0c3c13b818a54093f88ae82679508
Проект — это инновационный телеграм-бот, предоставляющий пользователям возможность легко находить мероприятия и заведения, соответствующие их уникальным интересам и предпочтениям. Пользователи имеют возможность проводить поиск мероприятий и заведений по различным критериям: от явных запросов, таких как жанр, локация или свободный запрос, до более интерактивного варианта — заполнение персональной информации в ходе диалога с искусственным интеллектом.
Благодаря уникальной функциональности, пользователи имеют шанс не только получать непосредственные результаты по своим запросам, но и взаимодействовать с ботом, предоставляя информацию о себе. В результате этого взаимодействия, бот выстраивает персонализированные рекомендации, основанные на уникальных интересах и предпочтениях каждого пользователя. Этот инновационный подход к поиску развлечений делает проект невероятно удобным и привлекательным для широкого круга пользователей.
🔗 Ссылка на бота: https://t.me/pognali_gpt_bot
✅ разработка пользовательского пути при взаимодействии с системой;
✅ выбор наиболее подходящих моделей, под каждую конкретную функцию;
✅ promt engineering для пользовательского интерфейса;
✅ подбор метрик, позволяющих объективно оценить качество выдачи;
✅ тестирование системы;
✅ разработка и вывод системы в production;
- 🔹 в формате свободного разговора, одна из передовых моделей от Компании OpenAI (gpt-3.5-turbo-1106) задает пользователю интеллектуальные вопросы, выявляя ключевые интересы и уникальные черты личности.
- 🔹 Та же модель (gpt-3.5-turbo-1106), но только настроенная другим промптом тщательно анализирует каждый вопрос-ответ, выделяя важные элементы, и передает полученную информацию в наш бэкенд в виде заполненного словаря.
- 🔹 Данные пользователя обновляются непосредственно в базе данных PostgreSQL, обеспечивая актуальность и точность информации. Такой процесс позволяет нашему боту лучше понимать предпочтения пользователя.
- 🔹 Модель продолжает взаимодействие, задавая последующие вопросы, чтобы дополнительно уточнить и дополнить информацию о пользователе. Этот подход создает непрерывный поток обмена данными и обеспечивает наилучшую персонализацию.
- 🔹 пользователь выбирает жанр из предложенного списка.
- 🔹 производится поиск в базе данных мероприятий/заведений с соответствующим тегом.
- 🔹 пользователь вводит произвольный запрос, указывая желаемый жанр.
- 🔹 запрос отправляется в поисковый движок, использующий предобученную модель sentence-transformers/all-MiniLM-L6-v2.
- 🔹 модель находит наиболее релевантные мероприятия, измеряя косинусное расстояние между запросом и описанием, а также тегами мероприятий/заведений.
- 🔹 история поиска пользователя обновляется в базе данных
- 🔹 пользователь вводит произвольный запрос
- 🔹 запрос направляется в поисковый движок, основанный на модели sentence-transformers/all-MiniLM-L6-v2.
- 🔹 модель находит наиболее релевантные мероприятия, используя косинусное расстояние между запросом и описанием мероприятий/заведений
- 🔹 история поиска пользователя обновляется в базе данных
- 🔹 пользователь отправляет желаемую локацию
- 🔹 пользователь выбирает пункт меню: "Рекомендованные мне"
- 🔹 предобученная модель: sentence-transformers/all-MiniLM-L6-v2 ищет релевантные мероприятия (измеряется косинусное расстояние между описанием пользователя (заполненный словарь данных о пользователе) и описанием+тэгами мероприятий/заведений)
- 🔹 на основе результатов анализа, предоставленных заполненным словарем данных о пользователе, алгоритмом выбираются мероприятия, которые наиболее точно соответствуют предпочтениям пользователя. Этот этап гарантирует уникальный и вдохновляющий выбор для каждого пользователя
- Telegram API в Действии: Мы используем асинхронный фреймворк Aiogram, чтобы обеспечить быстрый и эффективный обмен данными с Telegram. Это позволяет боту мгновенно реагировать на запросы пользователей и обеспечивает плавное взаимодействие.
- Современные Чудеса с OpenAI API: Пользователь общается с умной моделью ChatGPT благодаря OpenAI API. Этот магический камень позволяет нам создавать разнообразные и персонализированные диалоги, делая взаимодействие с ботом удивительно естественным.
- Мощный Движок Рекомендаций: Для нашего поискового движка и рекомендательной системы мы используем sentence-transformers/all-MiniLM-L6-v2, полученного с сайта HuggingFace. Эта модель позволяет нам находить наиболее релевантные мероприятия, используя продвинутые методы анализа текста.
- Основной файл запуска бота - main.py
- Обработчики событий (нажатия кнопок, сообщения от пользователей) - handlers.py
- Основные функции utils.py: rangeer (токенизация, рассчет косинусного расстояния), prompts (отправка запросов в OpenAI API), запросы в БД для извлечения данных по мероприятиям и т.д.
- Функции связанные с получением/измененим данных о пользователе: users.py.
- Подгрузка модели: loader.py
- Шаблоны кнопок телеграм-бота - kb.py
- Шаблоны текстов - text.py
- Файлы с запросами sql - sql
- Создать телеграм бота в самом телеграме: @botfather
- Создать аккаунт, если его нет, в open.ai
- Сохранить токены от бота и open.ai API.
- Cклонировать репозитарий к себе. (git clone git@github.com:fitlemon/pognali_gpt_bot.git)
- Установить виртуальное окружение пайтон .venv в корневой папке папке (Linux: python3 -m venv .venv Windows: python -m venv .venv)
- Активировать виртуальное окружение .venv (Linux: source .venv/bin/activate Windows: .venv\Scripts\Activate.ps1)
- Установить необходимые модули Python. (pip install -r requirements.txt)
- Создать в корневой папке файлы: .env (хранение токенов - см. example.env).
- Установить СУБД PostgreSQL. Создать БД и Таблицы запуская последовательно скрипты: create_table.sql и остальные скрипты в папке sql.
- Запустить проект: (Linux: python3 main.py Windows: python main.py)
- разработка коллаборативной рексистемы;
- проведение кластерного анализа объектов;
- доработка контентной рексистемы с учетом кластеризации;
- разработка API для обмена данными;
- проведение A/Б тестов;
- интеграциа с билетными сервисами.





