| data | ||
| .gitignore | ||
| .Rhistory | ||
| app_interests.py | ||
| models.py | ||
| predict.py | ||
| README.md | ||
| requirements.txt | ||
Репозиторий содержит исходный код сервиса для рекомендации направлений подготовки на основе текстового описания интересов пользователя.
Проект относится к программному обеспечению "Система рекомендаций карьерных и образовательных траекторий абитуриентов на основе больших языковых моделей".
Состав репозитория
app_interests.py — FastAPI-приложение для запуска сервиса рекомендаций. Содержит загрузку модели, схемы входных и выходных данных, эндпоинты /health и /predict.
models.py — основная логика рекомендательной модели. Содержит класс Model, функции инференса для бакалавриата, специалитета, магистратуры и ординатуры, расчет эмбеддингов и поиск ближайших образовательных программ по cosine similarity.
predict.py — модуль инференса, совместимый с внешним интерфейсом вызова модели. Используется для загрузки модели и обработки входного запроса.
data/ — директория для входных и промежуточных данных.
requirements.txt — Python-зависимости проекта.
Данные
Для запуска сервиса необходимо использование следующих файлов в директории data/ :
bachelor_desc_final.csv— описания направлений бакалавриата.specialists_desc_final.csv— описания специальностей специалитета.masters_desc_final.csv— описания программ магистратуры.ordinatura_full_desc_gpt_edition.csv— описания программ ординатуры.ege.csv— таблица соответствия образовательных программ и предметов ЕГЭ.embeddings_one_sent_IT_gpt_edition_frida.csv— эмбеддинги для направлений бакалавриата.embeddings_specialist_frida.csv— эмбеддинги для специальностей специалитета.embeddings_masters_frida.csv— эмбеддинги для программ магистратуры.embeddings_ordinatura_frida.csv— эмбеддинги для программ ординатуры.
Запуск
Создайте и активируйте окружение Python.
Установите зависимости:
pip install -r requirements.txt
Запустите сервис:
python -m uvicorn app_interests:app --host 0.0.0.0 --port 8052
Проверьте состояние сервиса:
curl http://localhost:8052/health
Формат запроса
Сервис принимает POST-запрос на эндпоинт /predict.
Пример запроса:
{
"inputs": [
{
"name": "text",
"datatype": "str",
"data": "Интересуюсь программированием, искусственным интеллектом и анализом данных"
},
{
"name": "func",
"datatype": "str",
"data": "bachelor_specialist"
},
{
"name": "ege",
"datatype": "str",
"data": "{\"math\": 1, \"rus\": 1, \"inf\": 1}"
}
],
"output_fields": [
{
"name": "result",
"datatype": "str"
}
],
"parameters": [],
"model_key": ""
}
Поддерживаемые режимы рекомендации
В поле func можно передать один из следующих режимов:
bachelor— рекомендации для направлений бакалавриата.specialist— рекомендации для специальностей специалитета.master— рекомендации для программ магистратуры.ordinatura— рекомендации для программ ординатуры.bachelor_specialist— объединенные рекомендации для бакалавриата и специалитета.master_ordinatura— объединенные рекомендации для магистратуры и ординатуры.
Результаты
Сервис возвращает список рекомендованных образовательных программ в поле outputs.
Для каждого запроса модель подбирает наиболее близкие направления или специальности на основе эмбеддингов текста пользователя и описаний образовательных программ.
Для бакалавриата и специалитета дополнительно учитываются выбранные пользователем предметы ЕГЭ.
Модель
Для построения эмбеддингов используется модель ai-forever/FRIDA.
Поиск релевантных образовательных программ выполняется через расчет косинусной близости между эмбеддингом пользовательского запроса и заранее подготовленными эмбеддингами описаний программ.
Дополнительно в модели реализована обработка ключевых слов, связанных с искусственным интеллектом, машинным обучением, нейронными сетями, LLM и программированием.