File size: 1,361 Bytes
d1c2c35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
import pandas as pd
from general_recommendation import get_recommendations
from recommendation_explainer import explain_recommendation
import uvicorn
import numpy as np

app = FastAPI()

df = pd.read_csv('recommended_plan.csv')

# CORS middleware to allow requests from any origin
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)  

@app.get("/api/v1/recommendations")
def get_recommendations():  
    try:
        sampled_data = df.sample(10)
        results = sampled_data.to_dict(orient="records")  
        return JSONResponse(content={"recommendations": results})

    except Exception as e:
        return JSONResponse(status_code=500, content={"error": str(e)})
    

@app.get("/api/v1/explainrecommendation/{userid}")
def get_explanations(userid):
    try:
        
        explanation = explain_recommendation(userid, df)        
        return JSONResponse(content={"explanation": explanation})

    except Exception as e:
        return JSONResponse(status_code=500, content={"error": str(e)})
    
    
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)