mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
	
	
		
			51 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import logging | ||
|  | from typing import Tuple | ||
|  | 
 | ||
|  | from core.entities.application_entities import AppOrchestrationConfigEntity | ||
|  | from core.moderation.base import ModerationAction, ModerationException | ||
|  | from core.moderation.factory import ModerationFactory | ||
|  | 
 | ||
|  | logger = logging.getLogger(__name__) | ||
|  | 
 | ||
|  | 
 | ||
|  | class ModerationFeature: | ||
|  |     def check(self, app_id: str, | ||
|  |               tenant_id: str, | ||
|  |               app_orchestration_config_entity: AppOrchestrationConfigEntity, | ||
|  |               inputs: dict, | ||
|  |               query: str) -> Tuple[bool, dict, str]: | ||
|  |         """
 | ||
|  |         Process sensitive_word_avoidance. | ||
|  |         :param app_id: app id | ||
|  |         :param tenant_id: tenant id | ||
|  |         :param app_orchestration_config_entity: app orchestration config entity | ||
|  |         :param inputs: inputs | ||
|  |         :param query: query | ||
|  |         :return: | ||
|  |         """
 | ||
|  |         if not app_orchestration_config_entity.sensitive_word_avoidance: | ||
|  |             return False, inputs, query | ||
|  | 
 | ||
|  |         sensitive_word_avoidance_config = app_orchestration_config_entity.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 | ||
|  |         ) | ||
|  | 
 | ||
|  |         moderation_result = moderation_factory.moderation_for_inputs(inputs, query) | ||
|  | 
 | ||
|  |         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 |