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 """ Documentation API Getaround

🚗 API de prédiction de prix Getaround

Cette API permet de prédire le prix de location par jour d’un véhicule en fonction de ses caractéristiques.

Endpoints disponibles

GET /

Description : retourne un message de bienvenue.

Entrée : aucune.

Sortie attendue :

{
  "message": "Bienvenue sur l'API de prédiction de prix Getaround"
}
            

POST /predict

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
}
            

Tester l’API

Une documentation interactive Swagger est disponible ici : /api-docs

"""