Update src/main_MM.py
Browse files- src/main_MM.py +44 -65
src/main_MM.py
CHANGED
|
@@ -11,17 +11,22 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
| 11 |
import os
|
| 12 |
from flask import Flask, request, jsonify
|
| 13 |
from flask_swagger_ui import get_swaggerui_blueprint
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
from config.logger import CustomLogger, request_id_var
|
| 15 |
from waitress import serve
|
| 16 |
-
from werkzeug.exceptions import HTTPException, UnsupportedMediaType
|
| 17 |
from mapper.mapper import *
|
| 18 |
|
| 19 |
-
# ----------------------
|
| 20 |
-
# Create necessary log directories to avoid runtime warnings
|
| 21 |
-
os.makedirs("/responsible-ai/logs", exist_ok=True)
|
| 22 |
-
os.makedirs("/aicloud/logs", exist_ok=True)
|
| 23 |
-
# ----------------------
|
| 24 |
-
|
| 25 |
SWAGGER_URL = '/rai/v1/raimoderationmodels/docs'
|
| 26 |
API_URL = '/static/swagger.json'
|
| 27 |
|
|
@@ -30,87 +35,61 @@ swaggerui_blueprint = get_swaggerui_blueprint(
|
|
| 30 |
API_URL
|
| 31 |
)
|
| 32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
log = CustomLogger()
|
|
|
|
|
|
|
| 34 |
app = Flask(__name__)
|
| 35 |
app.register_blueprint(swaggerui_blueprint)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
-
# ----------------------
|
| 38 |
-
# Function to load all models before starting server
|
| 39 |
-
def load_models():
|
| 40 |
-
from routing.injectionRouter import init_injection_model
|
| 41 |
-
from routing.detoxifyRouter import init_detoxify_model
|
| 42 |
-
from routing.embedingRouter import init_embed_model
|
| 43 |
-
from routing.privacyRouter import init_privacy_model
|
| 44 |
-
from routing.topicRouter import init_topic_model
|
| 45 |
-
|
| 46 |
-
init_injection_model()
|
| 47 |
-
init_detoxify_model()
|
| 48 |
-
init_embed_model()
|
| 49 |
-
init_privacy_model()
|
| 50 |
-
init_topic_model()
|
| 51 |
-
# ----------------------
|
| 52 |
-
|
| 53 |
-
# ----------------------
|
| 54 |
-
# Function to register all routers
|
| 55 |
-
def register_routers():
|
| 56 |
-
from routing.injectionRouter import injection_router
|
| 57 |
-
from routing.detoxifyRouter import detoxify_router
|
| 58 |
-
from routing.embedingRouter import embed_router
|
| 59 |
-
from routing.privacyRouter import privacy_router
|
| 60 |
-
from routing.topicRouter import topic_router
|
| 61 |
-
from routing.sentimentRouter import sentiment_router
|
| 62 |
-
from routing.invisibletextRouter import invisibletext_router
|
| 63 |
-
from routing.gibberishRouter import gibberish_router
|
| 64 |
-
from routing.bancodeRouter import bancode_router
|
| 65 |
-
# from routing.safety_router import img_router
|
| 66 |
-
|
| 67 |
-
routers = [
|
| 68 |
-
injection_router,
|
| 69 |
-
detoxify_router,
|
| 70 |
-
embed_router,
|
| 71 |
-
privacy_router,
|
| 72 |
-
topic_router,
|
| 73 |
-
sentiment_router,
|
| 74 |
-
invisibletext_router,
|
| 75 |
-
gibberish_router,
|
| 76 |
-
bancode_router
|
| 77 |
-
# img_router
|
| 78 |
-
]
|
| 79 |
-
|
| 80 |
-
for r in routers:
|
| 81 |
-
app.register_blueprint(r, url_prefix='/rai/v1/raimoderationmodels')
|
| 82 |
-
# ----------------------
|
| 83 |
-
|
| 84 |
-
# ----------------------
|
| 85 |
-
# Error handling
|
| 86 |
def handle_http_exception(exc):
|
|
|
|
| 87 |
response = jsonify({"error": exc.description})
|
| 88 |
response.status_code = exc.code
|
| 89 |
return response
|
| 90 |
|
| 91 |
@app.errorhandler(HTTPException)
|
| 92 |
def handle_all_http_exceptions(exc):
|
|
|
|
| 93 |
return handle_http_exception(exc)
|
| 94 |
|
| 95 |
def handle_unsupported_mediatype(exc):
|
| 96 |
-
|
|
|
|
| 97 |
|
| 98 |
@app.errorhandler(UnsupportedMediaType)
|
| 99 |
def handle_all_unsupported_mediatype_exceptions(exc):
|
|
|
|
| 100 |
return handle_unsupported_mediatype(exc)
|
| 101 |
-
# ----------------------
|
| 102 |
|
| 103 |
-
if __name__ == "__main__":
|
| 104 |
-
load_models() # Load models before registering routes
|
| 105 |
-
register_routers() # Register routers after models are loaded
|
| 106 |
|
|
|
|
| 107 |
serve(
|
| 108 |
-
app,
|
| 109 |
-
host='0.0.0.0',
|
| 110 |
-
port=7860,
|
| 111 |
threads=int(os.getenv('THREADS', 1)),
|
| 112 |
-
connection_limit=int(os.getenv('CONNECTION_LIMIT', 500)),
|
| 113 |
channel_timeout=int(os.getenv('CHANNEL_TIMEOUT', 120))
|
| 114 |
)
|
|
|
|
|
|
|
| 115 |
|
| 116 |
|
|
|
|
| 11 |
import os
|
| 12 |
from flask import Flask, request, jsonify
|
| 13 |
from flask_swagger_ui import get_swaggerui_blueprint
|
| 14 |
+
|
| 15 |
+
from routing.injectionRouter import injection_router
|
| 16 |
+
from routing.detoxifyRouter import detoxify_router
|
| 17 |
+
from routing.embedingRouter import embed_router
|
| 18 |
+
from routing.privacyRouter import privacy_router
|
| 19 |
+
from routing.topicRouter import topic_router
|
| 20 |
+
from routing.sentimentRouter import sentiment_router
|
| 21 |
+
from routing.invisibletextRouter import invisibletext_router
|
| 22 |
+
from routing.gibberishRouter import gibberish_router
|
| 23 |
+
from routing.bancodeRouter import bancode_router
|
| 24 |
+
# from routing.safety_router import img_router
|
| 25 |
from config.logger import CustomLogger, request_id_var
|
| 26 |
from waitress import serve
|
| 27 |
+
from werkzeug.exceptions import HTTPException, UnsupportedMediaType, BadRequest
|
| 28 |
from mapper.mapper import *
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
SWAGGER_URL = '/rai/v1/raimoderationmodels/docs'
|
| 31 |
API_URL = '/static/swagger.json'
|
| 32 |
|
|
|
|
| 35 |
API_URL
|
| 36 |
)
|
| 37 |
|
| 38 |
+
# ------------------- LOG DIRECTORY FIX -------------------
|
| 39 |
+
# Use /tmp which is writable in Hugging Face Spaces
|
| 40 |
+
LOG_DIR_RESPONSIBLE_AI = os.path.join("/tmp", "responsible-ai", "logs")
|
| 41 |
+
LOG_DIR_AICLOUD = os.path.join("/tmp", "aicloud", "logs")
|
| 42 |
+
os.makedirs(LOG_DIR_RESPONSIBLE_AI, exist_ok=True)
|
| 43 |
+
os.makedirs(LOG_DIR_AICLOUD, exist_ok=True)
|
| 44 |
+
# Optional: pass these directories to your logger if needed
|
| 45 |
log = CustomLogger()
|
| 46 |
+
# ----------------------------------------------------------
|
| 47 |
+
|
| 48 |
app = Flask(__name__)
|
| 49 |
app.register_blueprint(swaggerui_blueprint)
|
| 50 |
+
app.register_blueprint(injection_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 51 |
+
app.register_blueprint(detoxify_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 52 |
+
app.register_blueprint(embed_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 53 |
+
app.register_blueprint(privacy_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 54 |
+
app.register_blueprint(topic_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 55 |
+
app.register_blueprint(sentiment_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 56 |
+
app.register_blueprint(invisibletext_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 57 |
+
app.register_blueprint(gibberish_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 58 |
+
app.register_blueprint(bancode_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 59 |
+
# app.register_blueprint(img_router, url_prefix='/rai/v1/raimoderationmodels')
|
| 60 |
+
|
| 61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
def handle_http_exception(exc):
|
| 63 |
+
"""Handles HTTP exceptions, returning a JSON response."""
|
| 64 |
response = jsonify({"error": exc.description})
|
| 65 |
response.status_code = exc.code
|
| 66 |
return response
|
| 67 |
|
| 68 |
@app.errorhandler(HTTPException)
|
| 69 |
def handle_all_http_exceptions(exc):
|
| 70 |
+
"""Global exception handler for HTTP errors."""
|
| 71 |
return handle_http_exception(exc)
|
| 72 |
|
| 73 |
def handle_unsupported_mediatype(exc):
|
| 74 |
+
"""Handles unsupported media type exceptions."""
|
| 75 |
+
return jsonify({"error": "Unsupported media type"}), 415 # 415 Unsupported Media Type
|
| 76 |
|
| 77 |
@app.errorhandler(UnsupportedMediaType)
|
| 78 |
def handle_all_unsupported_mediatype_exceptions(exc):
|
| 79 |
+
"""Global exception handler for unsupported media types."""
|
| 80 |
return handle_unsupported_mediatype(exc)
|
|
|
|
| 81 |
|
|
|
|
|
|
|
|
|
|
| 82 |
|
| 83 |
+
if __name__ == "__main__":
|
| 84 |
serve(
|
| 85 |
+
app,
|
| 86 |
+
host='0.0.0.0',
|
| 87 |
+
port=7860,
|
| 88 |
threads=int(os.getenv('THREADS', 1)),
|
| 89 |
+
connection_limit=int(os.getenv('CONNECTION_LIMIT', 500)),
|
| 90 |
channel_timeout=int(os.getenv('CHANNEL_TIMEOUT', 120))
|
| 91 |
)
|
| 92 |
+
# app.run()
|
| 93 |
+
|
| 94 |
|
| 95 |
|