From edec51f193a9b7dd50140d5c68942cc65d22b404 Mon Sep 17 00:00:00 2001 From: Tetiana Mohorian Date: Thu, 20 Mar 2025 00:30:37 +0000 Subject: [PATCH] Aktualizovat z1/backend/app.py --- z1/backend/app.py | 83 +++++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 28 deletions(-) diff --git a/z1/backend/app.py b/z1/backend/app.py index dd7eac5..1053f34 100644 --- a/z1/backend/app.py +++ b/z1/backend/app.py @@ -1,28 +1,55 @@ -from flask import Flask, request, jsonify -from flask_cors import CORS -import json - -app = Flask(__name__) -CORS(app) # Разрешаем CORS для фронтенда - -@app.route("/api/predict", methods=["POST"]) -def predict(): - try: - data = request.json - text = data.get("text", "") - - # Простая логика анализа текста - prediction = "Neutrálny text" if "dobry" in text else "Pravdepodobne toxický" - - # ✅ Правильный способ вернуть JSON в UTF-8 - response = app.response_class( - response=json.dumps({"prediction": prediction}, ensure_ascii=False), - status=200, - mimetype="application/json" - ) - return response - except Exception as e: - return jsonify({"error": str(e)}), 500 - -if __name__ == "__main__": - app.run(host="0.0.0.0", port=5000) +from flask import Flask, request, jsonify +from flask_cors import CORS +import json + +import torch +from transformers import AutoModelForSequenceClassification, AutoTokenizer + + +app = Flask(__name__) +CORS(app) + + + + +model_path = "./hate_speech_model/final_model" + + +tokenizer = AutoTokenizer.from_pretrained(model_path) +model = AutoModelForSequenceClassification.from_pretrained(model_path) +model.eval() + +@app.route("/api/predict", methods=["POST"]) +def predict(): + try: + data = request.json + text = data.get("text", "") + + + inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) + + + with torch.no_grad(): + outputs = model(**inputs) + predictions = torch.argmax(outputs.logits, dim=1).item() + + prediction_label = "Pravdepodobne toxický" if predictions == 1 else "Neutrálny text" + + + + + response = app.response_class( + response=json.dumps({"prediction": prediction_label}, ensure_ascii=False), + status=200, + mimetype="application/json" + ) + + + + + return response + except Exception as e: + return jsonify({"error": str(e)}), 500 + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=5000)