Spaces:
Sleeping
Sleeping
| # Import necessary libraries | |
| from flask import Flask, render_template, request, jsonify | |
| from utils import model_predict, get_available_models | |
| # Initialize Flask app | |
| app = Flask(__name__) | |
| def home(): | |
| models = get_available_models() | |
| return render_template("index.html", models=models) | |
| def predict(): | |
| """ | |
| Handles form submission and returns prediction. | |
| """ | |
| email = request.form.get('email') | |
| model_name = request.form.get('model') | |
| if not email: | |
| return render_template("index.html", | |
| error="Please provide an email", | |
| models=get_available_models()) | |
| if not model_name: | |
| return render_template("index.html", | |
| error="Please select a model", | |
| models=get_available_models()) | |
| try: | |
| prediction = model_predict(email, model_name) | |
| result = "Spam" if prediction == 1 else "Not Spam" | |
| return render_template("index.html", | |
| prediction=result, | |
| email=email, | |
| selected_model=model_name, | |
| models=get_available_models()) | |
| except Exception as e: | |
| return render_template("index.html", | |
| error=f"Error: {str(e)}", | |
| models=get_available_models()) | |
| def predict_api(): | |
| """ | |
| API endpoint that accepts a JSON payload and returns a prediction. | |
| """ | |
| try: | |
| data = request.get_json() | |
| email = data.get("email") | |
| model_name = data.get("model") | |
| if not email: | |
| return jsonify({'error': 'No email provided'}), 400 | |
| if not model_name: | |
| return jsonify({'error': 'No model selected'}), 400 | |
| prediction = model_predict(email, model_name) | |
| result = "Spam" if prediction == 1 else "Not Spam" | |
| return jsonify({ | |
| 'email': email, | |
| 'model': model_name, | |
| 'prediction': result | |
| }) | |
| except Exception as e: | |
| return jsonify({'error': str(e)}), 400 | |
| if __name__ == "__main__": | |
| app.run(host="0.0.0.0", port=5000, debug=True) | |