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)