from flask import Flask, request, jsonify from model_handler import MODEL_HANDLER # INITIALIZING THE FLASK APP FLASK_APP = Flask(__name__) # --- API ENDPOINT DEFINITIONS --- @FLASK_APP.route("/", methods=["GET"]) def health_Check(): # HEALTH CHECKING ENDPOINT TO CONFIRM THE API IS LIVE return jsonify({ "status": "ok", "message": "Semantic Similarity API is operational." }) @FLASK_APP.route("/predict", methods=["POST"]) def predict_Handler(): """ HANDLES THE PREDICTION REQUEST. """ # GETTING THE JSON PAYLOAD FROM THE REQUEST input_Payload = request.get_json() # VALIDATING THE INCOMING DATA if not input_Payload: return jsonify({"error": "BAD REQUEST: Missing JSON body."}), 400 text1_Value = input_Payload.get("text1") text2_Value = input_Payload.get("text2") if not text1_Value or not text2_Value: return jsonify({"error": "BAD REQUEST: 'text1' and 'text2' are required fields."}), 400 # PROCESSING THE REQUEST AND GET THE SCORE try: # USING THE MODEL HANDLER TO GET THE SIMILARITY SCORE similarityScore = MODEL_HANDLER.calculate_Similarity(text1_Value, text2_Value) # THE RESPONSE BODY response_Body = { "similarity score": similarityScore } return jsonify(response_Body), 200 except Exception as e: # CATCHING ANY UNEXPECTED ERRORS print(f"INTERNAL ERROR: {e}") return jsonify({"error": "An internal server error occurred."}), 500 if __name__ == "__main__": # THIS PART IS ONLY FOR LOCAL TESTING. GUNICORN WILL RUN THE APP ON HUGGING FACE FLASK_APP.run(host="0.0.0.0", port=8000, debug=True)