Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI, File, UploadFile, Request, Form | |
| from fastapi.responses import JSONResponse | |
| from fastapi.middleware.cors import CORSMiddleware | |
| import uvicorn | |
| import numpy as np | |
| from projects.DL_CatDog.DL_CatDog import preprocess_image, read_image, model_DL_CatDog | |
| from projects.ML_StudentPerformance.ML_StudentPerformace import predict_student_performance, create_custom_data, form1 | |
| from projects.ML_DiabetesPrediction.ML_DiabetesPrediction import model_ML_DiabetesPrediction, form2 | |
| app = FastAPI() | |
| # Add CORS middleware | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], # You can restrict this to specific origins if needed | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # Health check route | |
| def home(): | |
| return {"message": "FastAPI server is running on Hugging Face Spaces!"} | |
| # # Prediction route for DL_CatDog | |
| async def predict_DL_CatDog(file: UploadFile = File(...)): | |
| try: | |
| image = read_image(file) | |
| preprocessed_image = preprocess_image(image) | |
| prediction = model_DL_CatDog.predict(preprocessed_image) | |
| predicted_class = "Dog" if np.round(prediction[0][0]) == 1 else "Cat" | |
| return JSONResponse(content={"ok": 1, "prediction": predicted_class}) | |
| except Exception as e: | |
| return JSONResponse(content={"ok": -1, "message": f"Something went wrong! {str(e)}"}, status_code=500) | |
| # Prediction route for ML_StudentPerformance | |
| async def predict_student_performance_api(request: form1): | |
| print(request, end='\n\n\n\n') | |
| try: | |
| # Create the CustomData object | |
| custom_data = create_custom_data( | |
| gender= request.gender, | |
| ethnicity= request.ethnicity, | |
| parental_level_of_education= request.parental_level_of_education, | |
| lunch= request.lunch, | |
| test_preparation_course= request.test_preparation_course, | |
| reading_score= request.reading_score, | |
| writing_score= request.writing_score | |
| ) | |
| # Perform the prediction | |
| result = predict_student_performance(custom_data) | |
| return JSONResponse(content={"ok": 1, "prediction": result}) | |
| except Exception as e: | |
| return JSONResponse(content={"ok": -1, "message": f"Something went wrong! {str(e)}"}, status_code=500) | |
| # Prediction route for ML_DiabetesPrediction | |
| async def predict_student_performance_api(req: form2): | |
| try: | |
| input_data = (req.Pregnancies, req.Glucose, req.BloodPressure, req.SkinThickness, req.Insulin, req.BMI, req.DiabetesPedigreeFunction, req.Age) | |
| # changing the input_data to numpy array | |
| input_data_as_numpy_array = np.asarray(input_data) | |
| # reshape the array as we are predicting for one instance | |
| input_data_reshaped = input_data_as_numpy_array.reshape(1,-1) | |
| # Perform the prediction | |
| prediction = model_ML_DiabetesPrediction.predict(input_data_reshaped) | |
| return JSONResponse(content={"ok": 1, "prediction": prediction[0]}) | |
| except Exception as e: | |
| return JSONResponse(content={"ok": -1, "message": f"Something went wrong! {str(e)}"}, status_code=500) | |
| # Main function to run the FastAPI server | |
| if __name__ == "__main__": | |
| uvicorn.run(app, host="0.0.0.0", port=7860) | |