--- 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 cd # Запускаем 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*