pradelf commited on
Commit
5cc9fa6
·
verified ·
1 Parent(s): c3bfc3f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -15
app.py CHANGED
@@ -1,4 +1,5 @@
1
  from fastapi import FastAPI
 
2
  from pydantic import BaseModel
3
  import mlflow.pyfunc
4
  import pandas as pd
@@ -97,20 +98,20 @@ def load_model_on_startup():
97
  logger.exception("Impossible de charger le modèle au démarrage")
98
  model = None
99
 
100
- class RentalFeatures(BaseModel):
101
  model_key: str
102
  mileage: int
103
  engine_power: int
104
  fuel: str
105
  paint_color: str
106
  car_type: str
107
- private_parking_available: int
108
- has_gps: int
109
- has_air_conditioning: int
110
- automatic_car: int
111
- has_getaround_connect: int
112
- has_speed_regulator: int
113
- winter_tires: int
114
 
115
 
116
  @app.get("/", tags=["Introduction Endpoints"])
@@ -150,10 +151,10 @@ async def predict(predictionFeatures: RentalFeatures):
150
  # predictionFeatures.winter_tires or 0,
151
  # ]
152
  try:
153
- car_caracteristic = pd.DataFrame(predictionFeatures.model_dump())
 
154
  #car_caracteristic = pd.DataFrame({"Car": pf})
155
- # Log model from mlflow
156
- logger.info(f"Input : {car_caracteristic}")
157
  BOOL_COLS = [
158
  "private_parking_available",
159
  "has_gps",
@@ -166,18 +167,21 @@ async def predict(predictionFeatures: RentalFeatures):
166
  # Conversion explicite des colonnes booléennes
167
  for col in BOOL_COLS:
168
  car_caracteristic[col] = car_caracteristic[col].astype(bool)
169
- car_caracteristic=[car_caracteristic]
170
- logger.info(f"Input : {car_caracteristic}")
 
 
 
171
  # Prediction from previously loaded model as a PyFuncModel.
172
  prediction = model.predict(car_caracteristic)
173
  logger.info(f"Output : {prediction}")
174
  # Format response
175
  response = {
176
- "prediction": prediction[0],
177
  "detail": "Prédiction du tarif journalier (nul si aucun modèle : model.pkl).",
178
  }
179
  return response
180
  except Exception as e:
181
  logger.exception("Erreur dans /predict")
182
- raise Exception(status_code=500, detail=str(e))
183
 
 
1
  from fastapi import FastAPI
2
+ from fastapi import HTTPException
3
  from pydantic import BaseModel
4
  import mlflow.pyfunc
5
  import pandas as pd
 
98
  logger.exception("Impossible de charger le modèle au démarrage")
99
  model = None
100
 
101
+ class PredictionFeatures(BaseModel):
102
  model_key: str
103
  mileage: int
104
  engine_power: int
105
  fuel: str
106
  paint_color: str
107
  car_type: str
108
+ private_parking_available: bool
109
+ has_gps: bool
110
+ has_air_conditioning: bool
111
+ automatic_car: bool
112
+ has_getaround_connect: bool
113
+ has_speed_regulator: bool
114
+ winter_tires: bool
115
 
116
 
117
  @app.get("/", tags=["Introduction Endpoints"])
 
151
  # predictionFeatures.winter_tires or 0,
152
  # ]
153
  try:
154
+ payload = predictionFeatures.model_dump()
155
+ car_caracteristic = pd.DataFrame([payload])
156
  #car_caracteristic = pd.DataFrame({"Car": pf})
157
+ # Log model from mlflow
 
158
  BOOL_COLS = [
159
  "private_parking_available",
160
  "has_gps",
 
167
  # Conversion explicite des colonnes booléennes
168
  for col in BOOL_COLS:
169
  car_caracteristic[col] = car_caracteristic[col].astype(bool)
170
+
171
+
172
+ logger.info("Payload reçu: %s", payload)
173
+ logger.info("dtypes:\n%s", car_characteristic.dtypes)
174
+
175
  # Prediction from previously loaded model as a PyFuncModel.
176
  prediction = model.predict(car_caracteristic)
177
  logger.info(f"Output : {prediction}")
178
  # Format response
179
  response = {
180
+ "prediction": float(prediction[0]),
181
  "detail": "Prédiction du tarif journalier (nul si aucun modèle : model.pkl).",
182
  }
183
  return response
184
  except Exception as e:
185
  logger.exception("Erreur dans /predict")
186
+ raise HTTPException(status_code=500, detail=str(e))
187