🧠 Сервис на FastAPI для классификации комментариев пользователей с использованием модели YandexGPT-5-Lite-8B
Сервис автоматически классифицирует пользовательские комментарии по ключевым категориям с помощью локально развёрнутой языковой модели YandexGPT-5-Lite-8B-instruct.
Модель запускается через llama_cpp, а обработка запросов реализована на FastAPI с асинхронной очередью задач Celery(брокер и backend — Redis).
Модель возвращает одну из следующих категорий (или Невалидные, если ни одна не подходит):
ЗаконностьКлиентоориентированностьЭффективностьБезопасностьУважение и этикаОткрытостьНевалидные
InternshipTmk/
├── api/
│ ├── model_yandex.py
│ └── promt.py
├── test_for_model/
│ └── model_test.py
├── model/
│ └── YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf
├── requirements.txt
├── Dockerfile
├── docker-compose.yaml
├── main.py
├── README.md
main.py— основной FastAPI сервер, эндпоинты для отправки комментария, загрузки файла и получения статуса задачи.api/model_yandex.py— обработка задачи классификации, интеграция с моделью и Celery.api/promt.py— генерация промта для модели.test_for_model/model_test.py— скрипт для тестирования модели на датасете.model/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf— файл модели (скачать с HuggingFace).requirements.txt— зависимости проекта.Dockerfile— инструкция для сборки Docker-образа.docker-compose.yaml— запуск всех сервисов (FastAPI, Celery, Redis) одной командой.
-
Скачайте файл модели
- Перейдите на страницу модели на HuggingFace
- Скачайте файл
YandexGPT-5-Lite-8B-instruct-Q4_K_M.ggufи поместите его в папкуmodel/вашего проекта
-
Установите Docker и Docker Compose
- Docker Desktop для Windows/Mac
- Для Linux: следуйте официальной инструкции
-
Клонируйте репозиторий и перейдите в папку проекта
git clone <ссылка_на_репозиторий> cd <папка_проекта>
-
Запустите проект
docker compose up --build
-
Откройте браузер
- Перейдите на http://localhost:8000/docs — здесь доступна документация и тестирование API
Загрузить Excel-файл с комментариями для классификации (поддерживается только один комментарий в файле).
Request:
Загрузка файла формата .xlsx, содержащего столбцы Комментарий и Класс.
Response:
{
"task_id": "c0a8f...e2"
}Скачать результат классификации в виде Excel-файла.
Response:
- Если задача завершена успешно, возвращается файл
answer.xlsxс результатом.- Столбцы:
Комментарий,Класс,Вывод модели - В случае ошибки — JSON с описанием ошибки.
- Столбцы:
Отправить комментарий на классификацию.
Request:
{
"comment": "Текст комментария",
"user_class": "Ожидаемый класс"
}Response:
{
"task_id": "c0a8f...e2"
}Получить статус и результат задачи.
Response:
{
"task_id": "c0a8f...e2",
"status": "SUCCESS",
"result": {
"ok": true, // если класс пользователя и модели совпадают, иначе false
"user_class": "Класс пользователя",
"comment": "Текст комментария",
"answer": "Ответ модели"
}
}Для пакетного тестирования используйте test_for_model/model_test.py с вашим датасетом в формате Excel.
- YandexGPT-5-Lite-8B-instruct на HuggingFace
- Статья на Хабре от Яндекса
- Документация Celery
- Документация FastAPI
- Для работы требуется файл модели
.gguf(скачайте с HuggingFace). - Все задачи обрабатываются асинхронно через Celery, результат хранится в Redis.