Velar/AI/predict_api.py

62 lines
1.7 KiB
Python
Raw Normal View History

2025-08-21 22:48:01 -07:00
# from flask import Flask, request, jsonify
# import joblib
# import sklearn
# import numpy as np
# from Rules.transaction_rules import get_category_from_rules
# model = joblib.load("model/category_model.pkl")
# vectorizer = joblib.load("model/vectorizer.pkl")
# app = Flask(__name__)
# @app.route("/api/predict", methods=["POST"])
# def predict():
# data = request.json
# description = data.get("description", "")
# if not description:
# return jsonify({"error": "Description is required"}), 400
# category = get_category_from_rules(description)
# if not category:
# X = vectorizer.transform([description])
# prediction = model.predict(X)[0]
# return jsonify({"category": prediction})
# if __name__ == "__main__":
# app.run(host="0.0.0.0", port=5000)
2025-08-07 01:23:03 -07:00
from flask import Flask, request, jsonify
2025-08-21 22:48:01 -07:00
import joblib
import sklearn
2025-08-07 01:23:03 -07:00
import numpy as np
2025-08-21 22:48:01 -07:00
from Rules.transaction_rules import get_category_from_rules
2025-08-07 01:23:03 -07:00
model = joblib.load("model/category_model.pkl")
2025-08-21 22:48:01 -07:00
vectorizer = joblib.load("model/vectorizer.pkl")
2025-08-07 01:23:03 -07:00
app = Flask(__name__)
@app.route("/api/predict", methods=["POST"])
def predict():
data = request.json
description = data.get("description", "")
if not description:
return jsonify({"error": "Description is required"}), 400
2025-08-21 22:48:01 -07:00
# First try rules
category = get_category_from_rules(description)
if category:
prediction = category # ✅ assign directly
else:
# fallback to ML
X = vectorizer.transform([description])
prediction = model.predict(X)[0]
2025-08-07 01:23:03 -07:00
return jsonify({"category": prediction})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)