--- title: ITMO Магистратура - Чат-бот emoji: 🤖 colorFrom: blue colorTo: purple sdk: docker pinned: false --- # 🤖 ITMO Магистратура - Чат-бот Полноценный чат-бот для абитуриентов магистратур ITMO с LLM-генерацией ответов, парсингом реальных данных и персональными рекомендациями. ## 🚀 Быстрый деплой в HF Spaces ### 1. Создание Space - Перейдите на [Hugging Face Spaces](https://huggingface.co/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): ```python # В 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 минут (загрузка моделей + парсинг) ## 🔧 Локальный запуск ```bash # Установка зависимостей 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 - Проверка обновлений при каждом запуске - Кнопка "Обновить данные" для принудительного обновления ### Ручное обновление: ```bash # Принудительное обновление python update_data.py --force # Проверка обновлений python update_data.py --check ``` ## 🔍 Устранение неполадок ### Проблемы с памятью: ```python max_context_tokens = 800 # Уменьшить с 1200 top_k = 4 # Уменьшить с 6 ``` ### Проблемы с холодным стартом: - Первый запуск может занять 2-3 минуты - Модели загружаются при первом обращении - Парсинг данных выполняется автоматически - Последующие запуски используют кэш ### Проблемы с парсингом: - При недоступности сайтов ITMO используются тестовые данные - Проверьте интернет-соединение - Логи показывают детали процесса парсинга ### Проблемы с Docker: - Убедитесь, что Dockerfile корректный - Проверьте логи сборки в HF Spaces - При ошибках попробуйте пересобрать Space --- **Примечание**: Бот автоматически парсит актуальные данные с сайтов ITMO. При недоступности источников используются тестовые данные для демонстрации функциональности.