from typing import Dict, Text, Any, List from rasa.engine.graph import GraphComponent, ExecutionContext from rasa.engine.recipes.default_recipe import DefaultV1Recipe from rasa.engine.storage.resource import Resource from rasa.engine.storage.storage import ModelStorage from rasa.shared.nlu.training_data.message import Message from rasa.shared.nlu.training_data.training_data import TrainingData from rasa.nlu.classifiers.fallback_classifier import FallbackClassifier @DefaultV1Recipe.register( [DefaultV1Recipe.ComponentType.INTENT_CLASSIFIER], is_trainable=True ) class MetaFallback(FallbackClassifier): def __init__( self, config: Dict[Text, Any], model_storage: ModelStorage, resource: Resource, execution_context: ExecutionContext, ) -> None: super().__init__(config) self._model_storage = model_storage self._resource = resource @classmethod def create( cls, config: Dict[Text, Any], model_storage: ModelStorage, resource: Resource, execution_context: ExecutionContext, ) -> FallbackClassifier: """Creates a new untrained component (see parent class for full docstring).""" return cls(config, model_storage, resource, execution_context) def train(self, training_data: TrainingData) -> Resource: # Do something here with the messages return self._resource