code: def perform_interactive_learning(
      args: argparse.Namespace,
      zipped_model: Union[Text, "Path"],
      file_importer: TrainingDataImporter,
  ) -> None:
      """Performs interactive learning.
  
      Args:
          args: Namespace arguments.
          zipped_model: Path to zipped model.
          file_importer: File importer which provides the training data and model config.
      """
      from rasa.core.train import do_interactive_learning
  
      args.model = str(zipped_model)
  
      metadata = LocalModelStorage.metadata_from_archive(zipped_model)
      if metadata.training_type == TrainingType.NLU:
          rasa.shared.utils.cli.print_error_and_exit(
              "Can not run interactive learning on an NLU-only model."
          )
  
      args.endpoints = rasa.cli.utils.get_validated_path(
          args.endpoints, "endpoints", DEFAULT_ENDPOINTS_PATH, True
      )
  
      do_interactive_learning(args, file_importer)
  
imports: import argparse
  import logging
  import os
  from pathlib import Path
  from typing import List, Optional, Text, Union
  from rasa import model
  from rasa.cli import SubParsersAction
  from rasa.cli.arguments import interactive
  import rasa.cli.train
  import rasa.cli.utils
  from rasa.engine.storage.local_model_storage import LocalModelStorage
  from rasa.shared.constants import ASSISTANT_ID_DEFAULT_VALUE, ASSISTANT_ID_KEY, DEFAULT_ENDPOINTS_PATH, DEFAULT_MODELS_PATH
  from rasa.shared.data import TrainingType
  from rasa.shared.importers.importer import TrainingDataImporter
  import rasa.shared.utils.cli
  import rasa.utils.common
label_desc: Use image node_id 4 for calling a global function with example usage: perform_interactive_learning(args, zipped_model, file_importer) without return types