Spaces:
Runtime error
Runtime error
loggin added
Browse files
app.py
CHANGED
|
@@ -1,18 +1,20 @@
|
|
| 1 |
import os
|
| 2 |
import time
|
|
|
|
| 3 |
from flask import Flask, request, jsonify
|
| 4 |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
|
| 5 |
from flores200_codes import flores_codes
|
| 6 |
|
| 7 |
app = Flask(__name__)
|
| 8 |
|
|
|
|
| 9 |
|
| 10 |
def load_models():
|
| 11 |
model_name_dict = {"nllb-distilled-600M": "facebook/nllb-200-distilled-600M"}
|
| 12 |
model_dict = {}
|
| 13 |
|
| 14 |
for call_name, real_name in model_name_dict.items():
|
| 15 |
-
|
| 16 |
model = AutoModelForSeq2SeqLM.from_pretrained(real_name)
|
| 17 |
tokenizer = AutoTokenizer.from_pretrained(real_name)
|
| 18 |
model_dict[call_name + "_model"] = model
|
|
@@ -20,19 +22,19 @@ def load_models():
|
|
| 20 |
|
| 21 |
return model_dict
|
| 22 |
|
| 23 |
-
|
| 24 |
global model_dict
|
| 25 |
model_dict = load_models()
|
| 26 |
|
| 27 |
-
|
| 28 |
@app.route("/api/translate", methods=["POST"])
|
| 29 |
def translate_text():
|
| 30 |
data = request.json
|
|
|
|
| 31 |
source_lang = data.get("source")
|
| 32 |
target_lang = data.get("target")
|
| 33 |
input_text = data.get("text")
|
| 34 |
|
| 35 |
if not source_lang or not target_lang or not input_text:
|
|
|
|
| 36 |
return jsonify({"error": "source, target, and text fields are required"}), 400
|
| 37 |
|
| 38 |
model_name = "nllb-distilled-600M"
|
|
@@ -41,6 +43,7 @@ def translate_text():
|
|
| 41 |
target = flores_codes.get(target_lang)
|
| 42 |
|
| 43 |
if not source or not target:
|
|
|
|
| 44 |
return jsonify({"error": "Invalid source or target language code"}), 400
|
| 45 |
|
| 46 |
model = model_dict[model_name + "_model"]
|
|
@@ -64,8 +67,8 @@ def translate_text():
|
|
| 64 |
"target": target_lang,
|
| 65 |
"result": output_text,
|
| 66 |
}
|
|
|
|
| 67 |
return jsonify(result)
|
| 68 |
|
| 69 |
-
|
| 70 |
if __name__ == "__main__":
|
| 71 |
app.run(host="0.0.0.0", port=5000, debug=True)
|
|
|
|
| 1 |
import os
|
| 2 |
import time
|
| 3 |
+
import logging
|
| 4 |
from flask import Flask, request, jsonify
|
| 5 |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
|
| 6 |
from flores200_codes import flores_codes
|
| 7 |
|
| 8 |
app = Flask(__name__)
|
| 9 |
|
| 10 |
+
logging.basicConfig(level=logging.DEBUG)
|
| 11 |
|
| 12 |
def load_models():
|
| 13 |
model_name_dict = {"nllb-distilled-600M": "facebook/nllb-200-distilled-600M"}
|
| 14 |
model_dict = {}
|
| 15 |
|
| 16 |
for call_name, real_name in model_name_dict.items():
|
| 17 |
+
logging.info(f"\tLoading model: {call_name}")
|
| 18 |
model = AutoModelForSeq2SeqLM.from_pretrained(real_name)
|
| 19 |
tokenizer = AutoTokenizer.from_pretrained(real_name)
|
| 20 |
model_dict[call_name + "_model"] = model
|
|
|
|
| 22 |
|
| 23 |
return model_dict
|
| 24 |
|
|
|
|
| 25 |
global model_dict
|
| 26 |
model_dict = load_models()
|
| 27 |
|
|
|
|
| 28 |
@app.route("/api/translate", methods=["POST"])
|
| 29 |
def translate_text():
|
| 30 |
data = request.json
|
| 31 |
+
logging.debug(f"Received data: {data}")
|
| 32 |
source_lang = data.get("source")
|
| 33 |
target_lang = data.get("target")
|
| 34 |
input_text = data.get("text")
|
| 35 |
|
| 36 |
if not source_lang or not target_lang or not input_text:
|
| 37 |
+
logging.error("Missing fields in the request")
|
| 38 |
return jsonify({"error": "source, target, and text fields are required"}), 400
|
| 39 |
|
| 40 |
model_name = "nllb-distilled-600M"
|
|
|
|
| 43 |
target = flores_codes.get(target_lang)
|
| 44 |
|
| 45 |
if not source or not target:
|
| 46 |
+
logging.error("Invalid source or target language code")
|
| 47 |
return jsonify({"error": "Invalid source or target language code"}), 400
|
| 48 |
|
| 49 |
model = model_dict[model_name + "_model"]
|
|
|
|
| 67 |
"target": target_lang,
|
| 68 |
"result": output_text,
|
| 69 |
}
|
| 70 |
+
logging.debug(f"Translation result: {result}")
|
| 71 |
return jsonify(result)
|
| 72 |
|
|
|
|
| 73 |
if __name__ == "__main__":
|
| 74 |
app.run(host="0.0.0.0", port=5000, debug=True)
|