add features structure validate

This commit is contained in:
takatost
2024-02-29 22:20:27 +08:00
parent 8a8882ed8d
commit 7bff65304f
6 changed files with 49 additions and 58 deletions

View File

@ -9,12 +9,13 @@ from core.app.validators.text_to_speech import TextToSpeechValidator
class AdvancedChatAppConfigValidator:
@classmethod
def config_validate(cls, tenant_id: str, config: dict) -> dict:
def config_validate(cls, tenant_id: str, config: dict, only_structure_validate: bool = False) -> dict:
"""
Validate for advanced chat app model config
:param tenant_id: tenant id
:param config: app model config args
:param only_structure_validate: if True, only structure validation will be performed
"""
related_config_keys = []
@ -43,7 +44,11 @@ class AdvancedChatAppConfigValidator:
related_config_keys.extend(current_related_config_keys)
# moderation validation
config, current_related_config_keys = ModerationValidator.validate_and_set_defaults(tenant_id, config)
config, current_related_config_keys = ModerationValidator.validate_and_set_defaults(
tenant_id=tenant_id,
config=config,
only_structure_validate=only_structure_validate
)
related_config_keys.extend(current_related_config_keys)
related_config_keys = list(set(related_config_keys))

View File

@ -7,7 +7,8 @@ logger = logging.getLogger(__name__)
class ModerationValidator:
@classmethod
def validate_and_set_defaults(cls, tenant_id, config: dict) -> tuple[dict, list[str]]:
def validate_and_set_defaults(cls, tenant_id, config: dict, only_structure_validate: bool = False) \
-> tuple[dict, list[str]]:
if not config.get("sensitive_word_avoidance"):
config["sensitive_word_avoidance"] = {
"enabled": False
@ -23,13 +24,14 @@ class ModerationValidator:
if not config["sensitive_word_avoidance"].get("type"):
raise ValueError("sensitive_word_avoidance.type is required")
typ = config["sensitive_word_avoidance"]["type"]
config = config["sensitive_word_avoidance"]["config"]
if not only_structure_validate:
typ = config["sensitive_word_avoidance"]["type"]
config = config["sensitive_word_avoidance"]["config"]
ModerationFactory.validate_config(
name=typ,
tenant_id=tenant_id,
config=config
)
ModerationFactory.validate_config(
name=typ,
tenant_id=tenant_id,
config=config
)
return config, ["sensitive_word_avoidance"]

View File

@ -5,12 +5,13 @@ from core.app.validators.text_to_speech import TextToSpeechValidator
class WorkflowAppConfigValidator:
@classmethod
def config_validate(cls, tenant_id: str, config: dict) -> dict:
def config_validate(cls, tenant_id: str, config: dict, only_structure_validate: bool = False) -> dict:
"""
Validate for workflow app model config
:param tenant_id: tenant id
:param config: app model config args
:param only_structure_validate: only validate the structure of the config
"""
related_config_keys = []
@ -23,7 +24,11 @@ class WorkflowAppConfigValidator:
related_config_keys.extend(current_related_config_keys)
# moderation validation
config, current_related_config_keys = ModerationValidator.validate_and_set_defaults(tenant_id, config)
config, current_related_config_keys = ModerationValidator.validate_and_set_defaults(
tenant_id=tenant_id,
config=config,
only_structure_validate=only_structure_validate
)
related_config_keys.extend(current_related_config_keys)
related_config_keys = list(set(related_config_keys))