| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- import logging
 
- from typing import Optional
 
- from core.app.app_config.entities import AppConfig
 
- from core.moderation.base import ModerationAction, ModerationException
 
- from core.moderation.factory import ModerationFactory
 
- from core.ops.entities.trace_entity import TraceTaskName
 
- from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
 
- from core.ops.utils import measure_time
 
- logger = logging.getLogger(__name__)
 
- class InputModeration:
 
-     def check(
 
-         self, app_id: str,
 
-         tenant_id: str,
 
-         app_config: AppConfig,
 
-         inputs: dict,
 
-         query: str,
 
-         message_id: str,
 
-         trace_manager: Optional[TraceQueueManager] = None
 
-     ) -> tuple[bool, dict, str]:
 
-         """
 
-         Process sensitive_word_avoidance.
 
-         :param app_id: app id
 
-         :param tenant_id: tenant id
 
-         :param app_config: app config
 
-         :param inputs: inputs
 
-         :param query: query
 
-         :param message_id: message id
 
-         :param trace_manager: trace manager
 
-         :return:
 
-         """
 
-         if not app_config.sensitive_word_avoidance:
 
-             return False, inputs, query
 
-         sensitive_word_avoidance_config = app_config.sensitive_word_avoidance
 
-         moderation_type = sensitive_word_avoidance_config.type
 
-         moderation_factory = ModerationFactory(
 
-             name=moderation_type,
 
-             app_id=app_id,
 
-             tenant_id=tenant_id,
 
-             config=sensitive_word_avoidance_config.config
 
-         )
 
-         with measure_time() as timer:
 
-             moderation_result = moderation_factory.moderation_for_inputs(inputs, query)
 
-         if trace_manager:
 
-             trace_manager.add_trace_task(
 
-                 TraceTask(
 
-                     TraceTaskName.MODERATION_TRACE,
 
-                     message_id=message_id,
 
-                     moderation_result=moderation_result,
 
-                     inputs=inputs,
 
-                     timer=timer
 
-                 )
 
-             )
 
-         if not moderation_result.flagged:
 
-             return False, inputs, query
 
-         if moderation_result.action == ModerationAction.DIRECT_OUTPUT:
 
-             raise ModerationException(moderation_result.preset_response)
 
-         elif moderation_result.action == ModerationAction.OVERRIDED:
 
-             inputs = moderation_result.inputs
 
-             query = moderation_result.query
 
-         return True, inputs, query
 
 
  |