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: навыки, интересы, ползунки для оценки уровня
📊 Источники данных
Автоматический парсинг:
- https://abit.itmo.ru/program/master/ai - программа "Искусственный интеллект"
- https://abit.itmo.ru/program/master/ai_product - программа "AI Product Management"
Извлекаемые данные:
- Заголовки и описания программ
- Ссылки на 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. При недоступности источников используются тестовые данные для демонстрации функциональности.