from flask import Flask, request, jsonify from flask_cors import CORS import os import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from api.predict import predict_review, load_resources app = Flask(__name__) CORS(app) print("loading models on startup...") try: load_resources() print("models loaded") except Exception as e: print(f"couldnt preload models: {e}") @app.route('/health', methods=['GET']) def health(): return jsonify({"status": "ok"}), 200 @app.route('/predict', methods=['POST']) def predict(): try: data = request.get_json() if not data or 'text' not in data: return jsonify({"error": "missing 'text' field"}), 400 reviewText = data['text'] if not isinstance(reviewText, str): return jsonify({"error": "'text' must be a string"}), 400 if len(reviewText.strip()) == 0: return jsonify({"error": "text cannot be empty"}), 400 result = predict_review(reviewText) if 'error' in result: return jsonify({"error": result['error']}), 400 return jsonify({ "prediction": result['prediction'], "confidence": result['confidence'], "is_fake": result['is_fake'], "length_category": result.get('length_category'), "token_count": result.get('token_count') }), 200 except Exception as e: return jsonify({"error": str(e)}), 500 if __name__ == '__main__': print("starting api server") app.run(host='0.0.0.0', port=7860, debug=False)