import joblib import pandas as pd from fastapi import FastAPI from fastapi.responses import HTMLResponse from pydantic import BaseModel app = FastAPI( title="API de prédiction de prix Getaround", description="API permettant de prédire le prix de location par jour d’un véhicule", version="1.0", docs_url="/api-docs" ) model = joblib.load("model.joblib") class CarFeatures(BaseModel): model_key: str mileage: int engine_power: int fuel: str paint_color: str car_type: str private_parking_available: bool has_gps: bool has_air_conditioning: bool automatic_car: bool has_getaround_connect: bool has_speed_regulator: bool winter_tires: bool @app.get("/") def accueil(): return {"message": "Bienvenue sur l'API de prédiction de prix Getaround"} @app.post("/predict") def predict(features: CarFeatures): data = pd.DataFrame([features.model_dump()]) prediction = model.predict(data)[0] return { "prix_location_par_jour": round(prediction, 2) } @app.get("/docs", response_class=HTMLResponse) def documentation(): return """
Cette API permet de prédire le prix de location par jour d’un véhicule en fonction de ses caractéristiques.
Description : retourne un message de bienvenue.
Entrée : aucune.
Sortie attendue :
{
"message": "Bienvenue sur l'API de prédiction de prix Getaround"
}
Description : prédit le prix de location par jour d’un véhicule.
Entrée requise : un objet JSON contenant les caractéristiques du véhicule.
{
"model_key": "Peugeot",
"mileage": 50000,
"engine_power": 120,
"fuel": "diesel",
"paint_color": "black",
"car_type": "sedan",
"private_parking_available": true,
"has_gps": true,
"has_air_conditioning": true,
"automatic_car": false,
"has_getaround_connect": true,
"has_speed_regulator": true,
"winter_tires": false
}
Sortie attendue :
{
"prix_location_par_jour": 100.35
}
Une documentation interactive Swagger est disponible ici : /api-docs
"""