test1 / README.md
vydrking's picture
Upload 19 files
53fe915 verified
---
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. При недоступности источников используются тестовые данные для демонстрации функциональности.