from typing import Dict, List, Any import pickle import os from model import ContentBasedRecommender class EndpointHandler: def __init__(self, path=""): model_path = os.path.join(path, "model.pkl") with open(model_path, 'rb') as f: self.model = pickle.load(f) def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]: user_id = data.pop("user_id", None) k = data.pop("k", 10) # Default to 10 if not provided if user_id is None: return [{"error": "user_id is required"}] try: recommended_books = self.model.predict(user_id, k=k) return [{"recommended_books": recommended_books}] except Exception as e: return [{"error": str(e)}] def load_model(model_path): handler = EndpointHandler(model_path) return handler