Update src/main_MM.py
Browse files- src/main_MM.py +73 -34
src/main_MM.py
CHANGED
|
@@ -9,24 +9,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
| 9 |
'''
|
| 10 |
|
| 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
|
| 28 |
from mapper.mapper import *
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
SWAGGER_URL = '/rai/v1/raimoderationmodels/docs'
|
| 31 |
API_URL = '/static/swagger.json'
|
| 32 |
|
|
@@ -35,43 +30,87 @@ swaggerui_blueprint = get_swaggerui_blueprint(
|
|
| 35 |
API_URL
|
| 36 |
)
|
| 37 |
|
| 38 |
-
log=CustomLogger()
|
| 39 |
app = Flask(__name__)
|
| 40 |
app.register_blueprint(swaggerui_blueprint)
|
| 41 |
-
app.register_blueprint(injection_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 42 |
-
app.register_blueprint(detoxify_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 43 |
-
app.register_blueprint(embed_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 44 |
-
app.register_blueprint(privacy_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 45 |
-
app.register_blueprint(topic_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 46 |
-
app.register_blueprint(sentiment_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 47 |
-
app.register_blueprint(invisibletext_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 48 |
-
app.register_blueprint(gibberish_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 49 |
-
app.register_blueprint(bancode_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 50 |
-
# app.register_blueprint(img_router,url_prefix='/rai/v1/raimoderationmodels')
|
| 51 |
-
|
| 52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
def handle_http_exception(exc):
|
| 54 |
-
"""Handles HTTP exceptions, returning a JSON response."""
|
| 55 |
response = jsonify({"error": exc.description})
|
| 56 |
response.status_code = exc.code
|
| 57 |
return response
|
| 58 |
|
| 59 |
@app.errorhandler(HTTPException)
|
| 60 |
def handle_all_http_exceptions(exc):
|
| 61 |
-
"""Global exception handler for HTTP errors."""
|
| 62 |
return handle_http_exception(exc)
|
| 63 |
|
| 64 |
def handle_unsupported_mediatype(exc):
|
| 65 |
-
"""
|
| 66 |
-
return jsonify({"error": "Unsupported media type"}), 415 # 415 Unsupported Media Type
|
| 67 |
|
| 68 |
@app.errorhandler(UnsupportedMediaType)
|
| 69 |
def handle_all_unsupported_mediatype_exceptions(exc):
|
| 70 |
-
"""Global exception handler for unsupported media types."""
|
| 71 |
return handle_unsupported_mediatype(exc)
|
| 72 |
-
|
| 73 |
|
| 74 |
if __name__ == "__main__":
|
| 75 |
-
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
|
|
|
|
| 9 |
'''
|
| 10 |
|
| 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 |
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 |
+
return jsonify({"error": "Unsupported media type"}), 415
|
|
|
|
| 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 |
|