Skip to content

Platonn3/InternshipTmk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Сервис на 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) одной командой.

🚀 Как запустить проект

  1. Скачайте файл модели

  2. Установите Docker и Docker Compose

  3. Клонируйте репозиторий и перейдите в папку проекта

    git clone <ссылка_на_репозиторий>
    cd <папка_проекта>
  4. Запустите проект

    docker compose up --build
  5. Откройте браузер

    • Перейдите на http://localhost:8000/docs — здесь доступна документация и тестирование API


📡 API

POST /sendfile

Загрузить Excel-файл с комментариями для классификации (поддерживается только один комментарий в файле).

Request: Загрузка файла формата .xlsx, содержащего столбцы Комментарий и Класс.

Response:

{
  "task_id": "c0a8f...e2"
}

GET /getfileresult/{task_id}

Скачать результат классификации в виде Excel-файла.

Response:

  • Если задача завершена успешно, возвращается файл answer.xlsx с результатом.
    • Столбцы: Комментарий, Класс, Вывод модели
    • В случае ошибки — JSON с описанием ошибки.

POST /sendcomment

Отправить комментарий на классификацию.

Request:

{
  "comment": "Текст комментария",
  "user_class": "Ожидаемый класс"
}

Response:

{
  "task_id": "c0a8f...e2"
}

GET /getstatus/{task_id}

Получить статус и результат задачи.

Response:

{
  "task_id": "c0a8f...e2",
  "status": "SUCCESS",
  "result": {
    "ok": true, // если класс пользователя и модели совпадают, иначе false
    "user_class": "Класс пользователя",
    "comment": "Текст комментария",
    "answer": "Ответ модели"
  }
}

🧪 Тестирование

Для пакетного тестирования используйте test_for_model/model_test.py с вашим датасетом в формате Excel.


📝 Ссылки


⚡ Примечания

  • Для работы требуется файл модели .gguf (скачайте с HuggingFace).
  • Все задачи обрабатываются асинхронно через Celery, результат хранится в Redis.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors