def load(cls, path: Text) -> "PolicyEnsemble": """Loads policy and domain specification from storage""" metadata = cls.load_metadata(path) cls.ensure_model_compatibility(metadata) policies = [] for i, policy_name in enumerate(metadata["policy_names"]): policy_cls = registry.policy_from_module_path(policy_name) dir_name = "policy_{}_{}".format(i, policy_cls.__name__) policy_path = os.path.join(path, dir_name) policy = policy_cls.load(policy_path) cls._ensure_loaded_policy(policy, policy_cls, policy_name) policies.append(policy) ensemble_cls = class_from_module_path(metadata["ensemble_name"]) fingerprints = metadata.get("action_fingerprints", {}) ensemble = ensemble_cls(policies, fingerprints) return ensemble
def from_dict(cls, dictionary: Dict[Text, Any]) -> List[Policy]: policies = dictionary.get("policies") or dictionary.get("policy") if policies is None: raise InvalidPolicyConfig("You didn't define any policies. " "Please define them under 'policies:' " "in your policy configuration file.") if len(policies) == 0: raise InvalidPolicyConfig( "The policy configuration file has to include at least one policy." ) parsed_policies = [] for policy in policies: policy_name = policy.pop("name") if policy.get("featurizer"): featurizer_func, featurizer_config = cls.get_featurizer_from_dict( policy) if featurizer_config.get("state_featurizer"): state_featurizer_func, state_featurizer_config = cls.get_state_featurizer_from_dict( featurizer_config) # override featurizer's state_featurizer # with real state_featurizer class featurizer_config[ "state_featurizer"] = state_featurizer_func( **state_featurizer_config) # override policy's featurizer with real featurizer class policy["featurizer"] = featurizer_func(**featurizer_config) try: constr_func = registry.policy_from_module_path(policy_name) policy_object = constr_func(**policy) parsed_policies.append(policy_object) except (ImportError, AttributeError): raise InvalidPolicyConfig("Module for policy '{}' could not " "be loaded. Please make sure the " "name is a valid policy." "".format(policy_name)) return parsed_policies
def load(cls, path: Union[Text, Path]) -> "PolicyEnsemble": """Loads policy and domain specification from storage""" metadata = cls.load_metadata(path) cls.ensure_model_compatibility(metadata) policies = [] for i, policy_name in enumerate(metadata["policy_names"]): policy_cls = registry.policy_from_module_path(policy_name) dir_name = f"policy_{i}_{policy_cls.__name__}" policy_path = os.path.join(path, dir_name) policy = policy_cls.load(policy_path) if policy is not None: cls._ensure_loaded_policy(policy, policy_cls, policy_name) policies.append(policy) ensemble_cls = rasa.shared.utils.common.class_from_module_path( metadata["ensemble_name"]) fingerprints = metadata.get("action_fingerprints", {}) ensemble = ensemble_cls(policies, fingerprints) return ensemble
def load(cls, path: Text) -> "PolicyEnsemble": """Loads policy and domain specification from storage""" metadata = cls.load_metadata(path) try: cls.ensure_model_compatibility(metadata) except UnsupportedDialogueModelError as e: logger.warning(e.message) return None policies = [] for i, policy_name in enumerate(metadata["policy_names"]): policy_cls = registry.policy_from_module_path(policy_name) dir_name = f"policy_{i}_{policy_cls.__name__}" policy_path = os.path.join(path, dir_name) policy = policy_cls.load(policy_path) cls._ensure_loaded_policy(policy, policy_cls, policy_name) policies.append(policy) ensemble_cls = class_from_module_path(metadata["ensemble_name"]) fingerprints = metadata.get("action_fingerprints", {}) ensemble = ensemble_cls(policies, fingerprints) return ensemble