|
|
--- |
|
|
title: ITMO Магистратура - Чат-бот |
|
|
emoji: 🤖 |
|
|
colorFrom: blue |
|
|
colorTo: purple |
|
|
sdk: gradio |
|
|
sdk_version: 4.44.0 |
|
|
app_file: app.py |
|
|
pinned: false |
|
|
--- |
|
|
|
|
|
# 🤖 ITMO Магистратура - Чат-бот (HF Spaces) |
|
|
|
|
|
Минимально работающий прототип чат-бота для абитуриентов магистратур ITMO с парсингом данных, диалоговой системой и персонализированными рекомендациями. |
|
|
|
|
|
## 🎯 Ключевые функции |
|
|
|
|
|
### 1. 📊 Парсинг данных с сайтов ITMO |
|
|
- **Автоматический сбор** учебных планов с официальных страниц |
|
|
- **Парсинг PDF файлов** с детальной информацией о курсах |
|
|
- **Fallback курсы** при недоступности парсинга |
|
|
- **Нормализация данных** в единый JSON формат |
|
|
|
|
|
### 2. 💬 Диалоговая система (одна LLM, без RAG) |
|
|
- **LLM-powered чат** на основе RuT5-base-multitask |
|
|
- **Строгая релевантность** - отвечает только на вопросы об ITMO |
|
|
- **Контекстный поиск** по курсам и программам |
|
|
- **Fallback режим** при недоступности LLM |
|
|
|
|
|
### 3. 🎯 Персонализированные рекомендации |
|
|
- **Учет профиля студента** (опыт программирования, математика, интересы) |
|
|
- **Алгоритм подбора курсов** на основе сложности и предпочтений |
|
|
- **Рекомендации по семестрам** с объяснением выбора |
|
|
- **LLM-генерация** персонализированных советов |
|
|
|
|
|
## 🚀 Быстрый старт |
|
|
|
|
|
### Деплой на Hugging Face Spaces |
|
|
|
|
|
1. **Создайте новый Space** на [Hugging Face](https://huggingface.co/spaces) |
|
|
2. **Выберите SDK**: `Docker` |
|
|
3. **Загрузите файлы** в репозиторий: |
|
|
- `app.py` → `app.py` |
|
|
- `parser.py` → `parser.py` |
|
|
- `data_layer.py` → `data_layer.py` |
|
|
- `llm.py` → `llm.py` |
|
|
- `requirements.txt` → `requirements.txt` |
|
|
- `Dockerfile` → `Dockerfile` |
|
|
- `README.md` → `README.md` |
|
|
|
|
|
4. **Space автоматически соберет и запустит** приложение |
|
|
|
|
|
### Локальный запуск |
|
|
|
|
|
```bash |
|
|
# Устанавливаем зависимости |
|
|
pip install -r requirements.txt |
|
|
|
|
|
# Запускаем приложение |
|
|
python app.py |
|
|
``` |
|
|
|
|
|
Приложение будет доступно по адресу: http://localhost:7860 |
|
|
|
|
|
## 📁 Структура проекта |
|
|
|
|
|
``` |
|
|
├── app.py # Flask приложение с встроенным HTML |
|
|
├── parser.py # Парсинг данных с сайтов ITMO |
|
|
├── data_layer.py # Работа с данными и рекомендации |
|
|
├── llm.py # LLM система |
|
|
├── Dockerfile # Docker конфигурация |
|
|
├── requirements.txt # Зависимости |
|
|
└── README.md # Документация |
|
|
``` |
|
|
|
|
|
## 🎯 Что работает |
|
|
|
|
|
✅ **Парсинг данных** - автоматический сбор с сайтов ITMO |
|
|
✅ **Диалоговая система** - LLM-powered чат с контекстным поиском |
|
|
✅ **Рекомендации** - персонализированные по профилю студента |
|
|
✅ **12 fallback курсов** - полные учебные планы ИИ и AI Product |
|
|
✅ **Строгая релевантность** - отвечает только на вопросы об ITMO |
|
|
✅ **Fallback режим** - работает без LLM |
|
|
✅ **HF Spaces совместимость** - работает на Hugging Face Spaces |
|
|
✅ **REST API** - JSON API для интеграции |
|
|
|
|
|
## 🔧 Технологии |
|
|
|
|
|
- **Flask** - веб-фреймворк |
|
|
- **Transformers** - LLM модель (RuT5-base-multitask) |
|
|
- **BeautifulSoup** - парсинг HTML страниц |
|
|
- **Requests** - HTTP запросы к сайтам ITMO |
|
|
- **Docker** - контейнеризация |
|
|
|
|
|
## 📊 Данные |
|
|
|
|
|
### Программы |
|
|
- **Искусственный интеллект** - ML, DL, NLP, CV, 4 семестра |
|
|
- **AI Product Management** - продуктовая аналитика, управление, 4 семестра |
|
|
|
|
|
### Курсы (12 fallback курсов) |
|
|
- **Семестры 1-4** с полной информацией |
|
|
- **Теги** для поиска и рекомендаций (ml, dl, nlp, cv, product, business, etc.) |
|
|
- **Сложность** - beginner/intermediate/advanced |
|
|
- **Кредиты и часы** обучения |
|
|
- **Типы курсов** - required/elective |
|
|
|
|
|
## 🎯 Примеры вопросов |
|
|
|
|
|
### Вопросы о курсах: |
|
|
- "Какие курсы по машинному обучению?" |
|
|
- "Сколько кредитов за глубокое обучение?" |
|
|
- "Какие дисциплины в 1 семестре программы ИИ?" |
|
|
|
|
|
### Вопросы о программах: |
|
|
- "Расскажи о программе AI Product" |
|
|
- "Какая карьера после программы ИИ?" |
|
|
- "Нужна ли математика для AI Product?" |
|
|
|
|
|
### Вопросы о рекомендациях: |
|
|
- "Какие курсы подходят для моего профиля?" |
|
|
- "Что выбрать с опытом программирования 3/5?" |
|
|
- "Рекомендации для 2 семестра" |
|
|
|
|
|
## 🔄 Обновление данных |
|
|
|
|
|
Кнопка "Обновить данные" выполняет: |
|
|
- **Парсинг страниц** программ с сайта ITMO |
|
|
- **Поиск PDF файлов** с учебными планами |
|
|
- **Обновление курсов** и метаданных |
|
|
- **Сохранение в JSON** для последующего использования |
|
|
|
|
|
## 🎯 Система рекомендаций |
|
|
|
|
|
### Входные параметры: |
|
|
- **Опыт программирования** (0-5) |
|
|
- **Уровень математики** (0-4) |
|
|
- **Интересы** (ml, dl, nlp, cv, product, business, etc.) |
|
|
- **Целевой семестр** (1-4) |
|
|
|
|
|
### Алгоритм подбора: |
|
|
1. **Фильтрация по семестру** |
|
|
2. **Оценка сложности** курса vs опыт студента |
|
|
3. **Совпадение интересов** с тегами курса |
|
|
4. **Математические требования** vs уровень студента |
|
|
5. **LLM-генерация** персонализированного объяснения |
|
|
|
|
|
## 🔍 Релевантность вопросов |
|
|
|
|
|
Бот отвечает только на вопросы, содержащие ключевые слова: |
|
|
- `итмо`, `магистратура`, `учебный план`, `дисциплина`, `курс` |
|
|
- `ии`, `ai`, `ai product`, `программа` |
|
|
- `машинное обучение`, `глубокое обучение`, `nlp`, `компьютерное зрение` |
|
|
- `продукт`, `аналитика`, `управление`, `обучение`, `учеба` |
|
|
|
|
|
## 📝 Системные инструкции для LLM |
|
|
|
|
|
- Отвечай только по предоставленному контексту |
|
|
- Если в контексте нет нужной информации — ответь: "в предоставленных данных об этом не сказано" |
|
|
- Отвечай кратко и по делу |
|
|
- Не выдумывай факты и не давай общих ответов без ссылок на элементы контекста |
|
|
|
|
|
## 🔧 Fallback-данные |
|
|
|
|
|
12 встроенных курсов (по 6 на каждую программу) с заполненными полями: |
|
|
- id, program_id, semester, name, credits, type, short_desc, tags |
|
|
- Используются при пустом/недоступном парсинге |
|
|
|
|
|
## 🐳 Docker деплой |
|
|
|
|
|
### На любом сервере с Docker: |
|
|
|
|
|
```bash |
|
|
# Клонируем репозиторий |
|
|
git clone <your-repo-url> |
|
|
cd <your-repo-name> |
|
|
|
|
|
# Запускаем |
|
|
docker build -t itmo-chatbot . |
|
|
docker run -p 7860:7860 itmo-chatbot |
|
|
``` |
|
|
|
|
|
### На Hugging Face Spaces: |
|
|
|
|
|
1. Создайте новый Space |
|
|
2. Выберите **Docker SDK** |
|
|
3. Загрузите все файлы в репозиторий |
|
|
4. Space автоматически соберет и запустит Docker контейнер |
|
|
|
|
|
## 📝 Лицензия |
|
|
|
|
|
MIT License - свободное использование и модификация. |
|
|
|
|
|
## 🤝 Поддержка |
|
|
|
|
|
При возникновении проблем: |
|
|
1. Проверьте логи в консоли HF Spaces |
|
|
2. Убедитесь в наличии всех файлов |
|
|
3. Проверьте доступность сайта ITMO |
|
|
4. Используйте fallback режим при проблемах с LLM |
|
|
|
|
|
--- |
|
|
|
|
|
**Создано для абитуриентов магистратур ITMO** 🎓 |
|
|
|
|
|
*Минимально работающий прототип: парсинг + диалог + рекомендации + HF Spaces* |
|
|
|