Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from components.model_loader import ModelLoader | |
| from components.pipeline_preparer import PipelinePreparer | |
| from components.predictor import Predictor | |
| from utils.commons import setup_logging | |
| import uvicorn | |
| logger = setup_logging("main.log") | |
| app = FastAPI() | |
| class PredictionRequest(BaseModel): | |
| sentence: str | |
| async def startup_event(): | |
| logger.info("Initializing model...") | |
| try: | |
| # Model initialization | |
| loader = ModelLoader() | |
| tokenizer, model = loader.load_model() | |
| pipeline = PipelinePreparer.prepare_pipeline(tokenizer, model) | |
| app.state.predictor = Predictor(pipeline) | |
| logger.info("Model initialized successfully") | |
| except Exception as e: | |
| logger.error(f"Error initializing model: {e}") | |
| app.state.predictor = None | |
| def health_check(): | |
| logger.info("Health check endpoint called") | |
| return {"Message": "Service is healthy", "Status": "OK"} | |
| def predict(request: PredictionRequest): | |
| logger.info(f"Prediction request received: {request.sentence}") | |
| if not app.state.predictor: | |
| logger.error("Model not initialized") | |
| return {"error": "Model not initialized"} | |
| return app.state.predictor.predict(request.sentence) | |
| if __name__ == "__main__": | |
| logger.info("Starting FastAPI app...") | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |