|
|
--- |
|
|
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. При недоступности источников используются тестовые данные для демонстрации функциональности. |
|
|
|