# Сервис предсказания цен Веб-сервис предсказания цен на подержанные автомобили; только stateless API. Об используемой предсказательной модели см. `research/README.md`. ## API **Базовый URL**: `/api`. Все указанные далее URL записаны **относительно базового URL**, если не указано иное. * Полная интерактивная документация (Swagger UI): `/docs`. * Предсказать цену подержанного автомобиля: `/predict` (POST). Пример запроса: * requst query: `item_id=16` (параметр `item_id` необходим!); * request body: ```json { "selling_price": 5.59, "driven_kms": 27000.0, "age": 5.0, "fuel_type": "petrol", "selling_type": "dealer", "transmission_type": "manual" } ``` * response body: ```json { "item_id": 16, "price": 3.743508852258851 } ``` * Тестовый эндпоинт: `/` (GET). Возвращает простой демонстрационный объект JSON. Может использоваться для проверки состояния сервиса. ## Развёртывание ### Файл модели Файл используемой предсказательной модели `model.pkl` можно извлечь из MLFlow скриптом `services/models/fetch_model_as_pickle_from_mlflow.py`. Файл модели можно разместить в директории проекта, а именно в `services/models/`. Например, извлечь модель по имени (``) и версии (``) (например, `UsedCardPricePredictionFinal/1`) (команда запускается из корневой директории проекта — от этого зависит путь к создаваемому файлу): python services/models/fetch_model_as_pickle_from_mlflow.py --model "models://" services/models/model.pkl Можно указать адрес tracking сервера MLFlow, например: `--tracking-uri "http://localhost:5000"`. Информация о других опциях доступна: python services/models/fetch_model_as_pickle_from_mlflow.py --help ### Образ Docker Сборка образа (замените `` на номер версии) (команда запускается из корневой директории проекта — от этого зависит путь к директории): docker build -t ml_service: services/ml_service/ Запуск образа (замените `` на номер версии образа, `` на **абсолютный** путь к директории, где размещён файл предсказательной модели `model.pkl`, `` на порт для запуска веб-сервиса (например, `8000`)): docker run -v ":/models" -p :8000 ml_service: Модель может быть размещена в директории проекта; тогда, например, при запуске команды из корна проекта: `$(pwd)/services/models` (здесь `$(pwd)` используется потому, что необходим абсолютный путь).