getaround-api / app.py
pradelf's picture
add articles CSV file for test with API, Data Science, and Cybersecurity entries
83f0f75
raw
history blame
2.77 kB
from fastapi import FastAPI
from pydantic import BaseModel
import mlflow.pyfunc
import pandas as pd
description = """
Bienvenue sur l'API de Getaround pour prédire le prix journalier de location d'une voiture en fonction de son année d'expérience!
## Point de terminaison d'introduction
Pour tester le fonctionnement de l'API, vous pouvez utiliser le point de terminaison d'introduction suivant:
* `/`: **GET** retourne la version de l'API et un message de bienvenue.
## Point de terminaison du prix de location
Cette API permet de prédire le prix journalier de location d'une voiture.
* `/price/{car_id}`: **GET** retourne le prix journalier de location d'une voiture en fonction de son identifiant.
## Machine Learning
Cette terminaison de l'API permet de prédire le prix journalier de location d'une voiture en fonction de ses caractéristiques..
* `/predict` accepte une requête POST avec un JSON contenant une clé `YearsExperience` et retourne une prédiction du prix journalier de location d'une voiture.
Check out documentation below 👇 for more information on each endpoint.
"""
tags_metadata = [
{
"name": "Point de terminaison d'introduction",
"description": "Terminaison simple de test",
},
{
"name": "Terminaison du prix de location",
"description": "Point de terminaison pour obtenir le tarif journalier par **GET** d'une voiture en focntion de son identifiant.",
},
{
"name": "Machine Learning",
"description": "Prediction du prix de location journalier d'un véhicule en fonction de ses caractéristiques.",
},
]
app = FastAPI(
title="Getaround API pour le prix journalier de location d'une voiture.",
description=description,
version="0.1",
contact={
"name": "Francis Pradel",
"url": "https://promotion.francispradel.fr",
},
openapi_tags=tags_metadata,
)
@app.get("/")
def greet_json():
return {"Hello": "World!"}
class PredictionFeatures(BaseModel):
YearsExperience: float
#### SOME CODE ####
###################
@app.post("/predict", tags=["Machine Learning"])
async def predict(predictionFeatures: PredictionFeatures):
"""
Prediction of salary for a given year of experience!
"""
# Read data
years_experience = pd.DataFrame(
{"YearsExperience": [predictionFeatures.YearsExperience]}
)
# Log model from mlflow
logged_model = "runs:/c09d09ef14e546b08f2f339d2c966da6/salary_estimator" # REPLACE WITH YOUR OWN RUN ID
# Load model as a PyFuncModel.
loaded_model = mlflow.pyfunc.load_model(logged_model)
prediction = loaded_model.predict(years_experience)
# Format response
response = {"prediction": prediction.tolist()[0]}
return response