Spaces:
Sleeping
Sleeping
| 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}") | |
| def health(): | |
| return jsonify({"status": "ok"}), 200 | |
| 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=5000, debug=False) |