Spaces:
Sleeping
Sleeping
from flask import Flask, request, jsonify | |
from utils import mask_pii, clean_text | |
from models import classify_email | |
app = Flask(__name__) | |
def email_processing_api(): | |
if not request.is_json: | |
return jsonify({"error": "Request must be JSON"}), 400 | |
data = request.get_json() | |
input_email_body = data.get("input_email_body") | |
if not input_email_body or not isinstance(input_email_body, str): | |
return jsonify({"error": "Invalid or missing 'input_email_body'"}), 400 | |
try: | |
# 1st we clean the text of html tags and normalize spaces | |
cleaned_email_body = clean_text(input_email_body) | |
# 2nd We do PII Masking | |
# The mask_pii function in utils.py returns dictionary with | |
# masked email and list of the entities | |
masked_data = mask_pii(cleaned_email_body) | |
masked_email_text = masked_data["masked_email"] | |
list_of_entities = masked_data["list_of_masked_entities"] | |
# 3rd we do classication of the masked email on a fined tuned model | |
email_category = classify_email(masked_email_text) | |
# then we give the response data in given api format | |
response_data = { | |
"input_email_body": input_email_body, | |
"list_of_masked_entities": list_of_entities, | |
"masked_email": masked_email_text, | |
"category_of_the_email": email_category, | |
} | |
return jsonify(response_data), 200 | |
except Exception as e: | |
# Log the exception for debugging | |
app.logger.error(f"Error during /classify: {str(e)}") | |
return ( | |
jsonify({"error": "An internal server error occurred", "details": str(e)}), | |
500, | |
) | |
if __name__ == "__main__": | |
app.run(host='0.0.0.0', port=7860) | |