test1 / README.md
vydrking's picture
Upload 19 files
53fe915 verified
metadata
title: ITMO Магистратура - Чат-бот
emoji: 🤖
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false

🤖 ITMO Магистратура - Чат-бот

Полноценный чат-бот для абитуриентов магистратур ITMO с LLM-генерацией ответов, парсингом реальных данных и персональными рекомендациями.

🚀 Быстрый деплой в HF Spaces

1. Создание Space

  • Перейдите на Hugging Face Spaces
  • Нажмите "Create new Space"
  • Выберите:
    • SDK: Docker
    • Hardware: CPU basic (2 vCPU, 16GB RAM, FREE)
    • License: MIT

2. Загрузка кода

  • Склонируйте созданный репозиторий
  • Скопируйте все файлы проекта
  • Закоммитьте и запушьте изменения

3. Автоматический запуск

  • HF Spaces автоматически соберет Docker образ
  • При первом запуске загрузятся модели и спарсятся данные с сайтов ITMO
  • Приложение будет доступно по URL вида: https://huggingface.co/spaces/username/space-name

🎯 Возможности

  • LLM-генерация ответов: cointegrated/rut5-base-multitask для естественных ответов
  • RAG поиск: SentenceTransformer + FAISS для точного поиска по курсам
  • Парсинг реальных данных: автоматический сбор с сайтов ITMO
  • LLM-рекомендации: персонализированные советы с объяснениями
  • Фильтр релевантности: отвечает только на вопросы о ITMO
  • Улучшенный UI: навыки, интересы, ползунки для оценки уровня

📊 Источники данных

Автоматический парсинг:

Извлекаемые данные:

  • Заголовки и описания программ
  • Ссылки на PDF учебные планы
  • Парсинг PDF с извлечением курсов
  • Нормализация и обогащение данных

⚙️ Быстрые настройки

Параметры производительности (CPU basic):

# В chatbot.py
max_history_turns = 3          # История диалога
max_context_tokens = 1200      # Максимум токенов контекста
relevance_threshold = 0.38     # Порог релевантности

# В retriever.py
top_k = 6                      # Количество результатов поиска
max_text_length = 220          # Максимум символов для эмбеддинга

Ограничения ресурсов:

  • CPU: 2 vCPU
  • RAM: до 16GB
  • Диск: 50GB ephemeral
  • Время холодного старта: до 3 минут (загрузка моделей + парсинг)

🔧 Локальный запуск

# Установка зависимостей
pip install -r requirements.txt

# Запуск приложения
python app.py

Приложение будет доступно по адресу: http://localhost:7860

📝 Примеры вопросов

  • "Какие дисциплины по NLP в 1 семестре программы ИИ?"
  • "Расскажи о программе AI Product"
  • "Сколько кредитов за курс машинного обучения?"
  • "Какие курсы по глубокому обучению есть в программе ИИ?"

🛠️ Технические детали

Модели:

  • Генерация: cointegrated/rut5-base-multitask (~244M параметров)
  • Эмбеддинги: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
  • Индекс: FAISS IndexFlatIP с L2-нормировкой

LLM-промпты:

  • Чат: системные инструкции + контекст + история + вопрос
  • Рекомендации: профиль студента + доступные курсы + инструкции по выбору

Парсинг данных:

  • HTML скрапинг: BeautifulSoup для извлечения метаданных программ
  • PDF парсинг: pdfplumber для извлечения курсов из учебных планов
  • Нормализация: унификация форматов и обогащение тегами
  • Обновления: проверка изменений на сайтах ITMO

Оптимизации:

  • Ленивая загрузка моделей
  • Кэширование данных на диске
  • Fallback режим при ошибках
  • Компактные эмбеддинги (float32, ≤220 символов)

🔄 Обновление данных

Автоматическое обновление:

  • При первом запуске парсится актуальная информация с сайтов ITMO
  • Проверка обновлений при каждом запуске
  • Кнопка "Обновить данные" для принудительного обновления

Ручное обновление:

# Принудительное обновление
python update_data.py --force

# Проверка обновлений
python update_data.py --check

🔍 Устранение неполадок

Проблемы с памятью:

max_context_tokens = 800  # Уменьшить с 1200
top_k = 4                 # Уменьшить с 6

Проблемы с холодным стартом:

  • Первый запуск может занять 2-3 минуты
  • Модели загружаются при первом обращении
  • Парсинг данных выполняется автоматически
  • Последующие запуски используют кэш

Проблемы с парсингом:

  • При недоступности сайтов ITMO используются тестовые данные
  • Проверьте интернет-соединение
  • Логи показывают детали процесса парсинга

Проблемы с Docker:

  • Убедитесь, что Dockerfile корректный
  • Проверьте логи сборки в HF Spaces
  • При ошибках попробуйте пересобрать Space

Примечание: Бот автоматически парсит актуальные данные с сайтов ITMO. При недоступности источников используются тестовые данные для демонстрации функциональности.