UniBERT is a chatbot to help students of the Faculty of Physical Engineering and Technology (KPI), which uses the large BERT language model to solve problems in the field of question-answer (QA). The chatbot generates textual answers to students' questions regarding student life, faculties, schedules, teachers, and other aspects of the educational process.
- The system is based on a LLM based on the BERT transformer trained on open data posted on university websites.
- Generating accurate answers to natural user questions.
- Frontend: A cross-platform C++ application developed using Qt.
-
Q: Який розклад у понеділок на перший тиждень у групи ІМ-21?
A:- Операційні системи.
- Компоненти комп'ютерних систем.
- Англійська.
-
Q: Хто викладає дисципліну Операційні системи?
A: Андрій Симоненко. -
Q: Коли починається перша атестація у першому семестрі?
A: 14 жовтня.
@heereenveen: Створені пакети та модуль для моделі, налаштовані лінтери та форматтери для Python, не забуваючи про git-хуки: https://github.com/heereenveen/UniBERT/commit/29481d10119d878f6a279499361b56cc87158ab0
@notnuff:
- Створений проєкт для клієнту (CMakeLists.txt);
- Обраний стиль коду для проєкту (Google code style);
- Налаштований лінтер та форматтер (clang-format);
- Налаштовані хуки на комміт і пуш, з необхідними перевірками (PS: щоб їх побачити, необхідно вивантажити директорію і заглянути в .git/pre-push та .git/pre-commit)
- Також підключені Github Actions;
- link: #6
@heereenveen: Модель була розділена на декілька пакетів для поступової роботи усього пайплайну моделі: отримати дані -> препарувати їх -> запустити навчену модель -> отримати питання -> надіслати вірогідну відповідь. Це було відображено також у графіках роботи системи. https://github.com/heereenveen/UniBERT/commit/bace959a1d27891739324db65cba1045c85c3230
@notnuff: Клієнт було вирішено зробити за традиційною схемою Model/View/Controller. Згідно такого плану:
- у Model буде відповідальність за комунікацію з сервером і, ймовірно, за збереження історії повідомлень.
- View відповідатиме за відображення історії запитів користувачу, а також за надання користувачу інтерфейсу спілкування з текстовою моделлю
- Controller в свою чергу відповідатиме за обробку запитів користувача, передання їх в Model, і відповідно відображення відповідей від сервера у чат View
- link: #8
@heereenveen: Імплементовано: https://github.com/heereenveen/UniBERT/commit/64b26e84a29771a76c6085a3c1d1f146fcfc887a
@notnuff: Імплементовано: #9
@heereenveen: Саму модель було натреновано на корпусі контекстів з відповіддями, після чого було розміщено на платформі HuggingFace. Під час ініціалізації програми вона вивантажує модель з платформи та використовує її для QA-процесу. https://github.com/heereenveen/UniBERT/commit/e168e330b4840ede956050e1b8d7840a693d225d#diff-8c26351b04b3158996fbb6d2ebe941418658927b1f6755a4f3cc170aa48c0910
@notnuff:
- Було підключено клієнт до бекенду у вигляді сервера на python
- Відповідно, була реалізована справжня робота клієнта з віддаленим джерелом даних
- link: #10
@heereenveen:
- Було розгорнуто CI для перевірки коду та роботи моделі:
- code quality: перевірка форматування коду через black та лінтер flake8,
- commit-check: перевірка назв комітів на відповідність формату conventional commits,
- build-and-test: збірка моделі та перевірка на запуск.
- link: #13
@notnuff: