Skip to content

Финальный проект по предмету "Введение в LLM"

Notifications You must be signed in to change notification settings

wilfordaf/Event-Assistant-Bot

Repository files navigation

Event-Assistant-Bot

Финальный проект по предмету "Введение в LLM"

Описание проекта 📜

Проект "Event-Assistant-Bot" направлен на создание интеллектуального ассистента для автоматизированного подбора собеседников на мероприятиях, таких как конференции, корпоративные встречи и массовые ивенты. Основная цель проекта — улучшение качества взаимодействия участников за счет использования системы рекомендаций, которая анализирует информацию о пользователях и предлагает наиболее подходящих собеседников для общения.

Цель 🎯

Создание системы с интерфейсом в виде Telegram-бота, поддерживающей формирование анкеты пользователя на основе информации из различных источников (текстовое описание, резюме, ссылка на социальные сети, диалоги из мессенджера), для выдачи ранжированного списка участников мероприятий со схожими интересами.

Задачи 📝

  1. Исследование и разработка методов создания профилей участников на основе различных типов данных: текстовое описание, ссылки на страницы в социальных сетях, диалоги и другие виды информации.
  2. Разработка алгоритмов подбора собеседников: разработка алгоритмов, которые будут использовать созданные профили для эффективного и контекстуально релевантного подбора собеседников на мероприятиях.
  3. Внедрение RAG: использование метода RAG совместно с разработанным алгоритмом подбора собеседников для улучшения качества мэтчинга.
  4. Создание интуитивного интерфейса: разработать удобный и простой в использовании интерфейс.

Данные 🛢️

Одной из основных задач являлось формирование датасета, содержащего информацию о потенциальных пользователях бота в различном виде. Предполагалось, что будут использованы данные из открытых источников (тематические чаты, публичные аккаунты, форумы).

Наша команда приняла решение собирать информацию четырех видов: резюме, диалоги, ссылка на аккаунт в социальной сети, текстовое описание пользователя. Резюме были взяты из открытых чатов, в которых люди ищут работу в сфере IT. В качестве диалогов использовались сообщения из IT-топиков на Reddit, Текстовые описание пользователей брались из раздела "Summary" в резюме, в качестве аккаунтов в социальных сетях использовались аккаунты на linkedin.

Валидация ✅

Для сравнения версий приложения, качества используемых моделей и качества RAG-системы мы сформировали валидационную выборку, в которой содержалось по 5 файлов каждого типа данных (резюме, диалоги, текстовые описания, аккаунты в социальных сетях).

Flow валидации 📜

  1. Из каждого файла с помощью ChatGPT извлекается эталонный набор релевантных тегов.
  2. Из каждого файла с помощью локально развернутой модели производится извлечение тегов с использованием и без использования RAG.
  3. Для наборов, полученных с использованием и без использования RAG, рассчитываются значения Accuracy относительно эталонного набора, полученного с помощью ChatGPT.

Результаты 📈

Использование техники RAG повысило значение Accuracy с 0,489 до 0,546. Более подробно с результатами валидации можно ознакомиться по ссылке.

Модели 🤖

С помощью метода zero-shot и модели facebook/bart-base по данным от пользователя определяется наиболее релевантная профессия с целью дальнейшего извлечения соответствующих профессии навыков. С помощью модели mistralai/Mistral-7B-Instruct-v0.3 из текста выделяются теги, на основании которых строится список потенциальных собеседников с наиболее близкими профессиональным интересами.

Интерфейс приложения 📱

Приложение было реализовано в виде Telegram-бота.

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

Ниже представлена демонстрация работы Telegram-бота.

Полный workflow 🔀

  1. Через Telegram-бот пользователь вносит данные о себе в одном из следующуих форматов: текстовое описание, резюме в формате PDF, диалоги пользователя в формате JSON, гиперссылка на профиль в социальной сети.
  2. Данные преобразуются к текстовому формату для использования языковых моделей.
  3. С помощью zero-shot классификации и модели facebook/bart-base на основе полученных данных определяется наиболее релевантная профессия пользователя.
  4. Далее формируется запрос на портал easyoffer.ru с целью получения списка релевантных тегов для профессии.
  5. Выделенные теги добавляются к тексту, сформированному на основании данных от пользователя. Этот этап является ключевым, так как на нем применяется RAG.
  6. По тексту, содержащему релевантные полученной профессии теги, с помощью модели mistralai/Mistral-7B-Instruct-v0.3 выделяются теги.
  7. Выделенные теги присваиваются пользователю.
  8. При запросе пользователем выдачи потенциальных собеседников модель ранжирования с помощью косинусной близости возвращает список других пользователей с наиболее подходящими профессиональными интересами.

Cхема приложения 📊

Инструкция по установке приложения📋

  1. Убедитесь, что ваш Docker поддерживает исполнение контейнеров с GPU.

    Windows + WSL2 - тык

    Документация Docker - тык

  2. Скачайте проект. Клонируйте репозиторий с исходным кодом на свой компьютер или скачайте архив с файлами.

    git clone https://github.com/wilfordaf/Event-Assistant-Bot
    cd Event-Assistant-Bot
  3. В Dockerfile укажите тип API проекта.

    Стандартно - Telegram Bot

    Для REST API необходимо добавить флаг --api

  4. docker-compose up
  5. Пользуйтесь Telegram ботом, либо откройте браузер и перейдите по адресу: http://localhost:9090 при использовании API.

  6. Создавайте мероприятия и находите единомышленников! 🎉🎉🎉

Системные требования🖥️

  • ОС: Windows + WSL2, macOS, Linux.
  • Docker - 4.34.2
  • GPU - Nvidia с объёмом VRAM от 4GB

About

Финальный проект по предмету "Введение в LLM"

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages