Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
factory.py49 linesDownload Raw Back to moderation
1from core.extension.extensible import ExtensionModule2from core.moderation.base import Moderation, ModerationInputsResult, ModerationOutputsResult3from extensions.ext_code_based_extension import code_based_extension4 5 6class ModerationFactory:7    __extension_instance: Moderation8 9    def __init__(self, name: str, app_id: str, tenant_id: str, config: dict) -> None:10        extension_class = code_based_extension.extension_class(ExtensionModule.MODERATION, name)11        self.__extension_instance = extension_class(app_id, tenant_id, config)12 13    @classmethod14    def validate_config(cls, name: str, tenant_id: str, config: dict) -> None:15        """16        Validate the incoming form config data.17 18        :param name: the name of extension19        :param tenant_id: the id of workspace20        :param config: the form config data21        :return:22        """23        code_based_extension.validate_form_schema(ExtensionModule.MODERATION, name, config)24        extension_class = code_based_extension.extension_class(ExtensionModule.MODERATION, name)25        extension_class.validate_config(tenant_id, config)26 27    def moderation_for_inputs(self, inputs: dict, query: str = "") -> ModerationInputsResult:28        """29        Moderation for inputs.30        After the user inputs, this method will be called to perform sensitive content review31        on the user inputs and return the processed results.32 33        :param inputs: user inputs34        :param query: query string (required in chat app)35        :return:36        """37        return self.__extension_instance.moderation_for_inputs(inputs, query)38 39    def moderation_for_outputs(self, text: str) -> ModerationOutputsResult:40        """41        Moderation for outputs.42        When LLM outputs content, the front end will pass the output content (may be segmented)43        to this method for sensitive content review, and the output content will be shielded if the review fails.44 45        :param text: LLM output content46        :return:47        """48        return self.__extension_instance.moderation_for_outputs(text)49