File size: 9,481 Bytes
c2b9095
 
636417d
c2b9095
636417d
 
c2b9095
636417d
 
c2b9095
636417d
33a43a3
636417d
946f233
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636417d
946f233
 
 
 
 
636417d
946f233
 
 
 
33a43a3
 
 
946f233
 
 
 
 
33a43a3
946f233
 
33a43a3
 
 
 
 
 
 
 
 
 
 
 
 
 
946f233
 
 
33a43a3
946f233
 
 
33a43a3
 
 
946f233
 
 
 
33a43a3
 
 
 
 
 
 
 
946f233
 
 
33a43a3
946f233
 
 
33a43a3
946f233
 
636417d
946f233
 
 
636417d
946f233
 
 
33a43a3
946f233
 
 
 
 
 
 
 
 
 
 
636417d
946f233
 
636417d
946f233
 
 
 
636417d
946f233
636417d
33a43a3
946f233
 
 
 
636417d
946f233
636417d
946f233
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636417d
946f233
 
 
 
 
 
 
 
 
 
 
33a43a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946f233
 
 
 
 
 
 
33a43a3
 
946f233
 
636417d
 
 
946f233
 
33a43a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
---
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*