code: def set_tags(self, source, experiment_custom_tags, runtime, USI=None):
      # Get active run to log as tag
      with set_active_mlflow_run(self.active_run):
          RunID = self.active_run.info.run_id
  
          # set tag of compare_models
          mlflow.set_tag("Source", source)
  
          # set custom tags if applicable
          if isinstance(experiment_custom_tags, dict):
              mlflow.set_tags(experiment_custom_tags)
  
          URI = secrets.token_hex(nbytes=4)
          mlflow.set_tag("URI", URI)
          mlflow.set_tag("USI", USI)
          mlflow.set_tag("Run Time", runtime)
          mlflow.set_tag("Run ID", RunID)
          if self.parent_run and not source == "setup":
              mlflow.set_tag(
                  MLFLOW_PARENT_RUN_ID, self.parent_run.info.run_id
              )
  
imports: import secrets
  from contextlib import contextmanager
  from pycaret.loggers.base_logger import BaseLogger
  from pycaret.utils.generic import mlflow_remove_bad_chars
label_desc: Use image node_id 9 for calling the MlflowLogger obj's underlying member method code with example usage: obj.set_tags(source, experiment_custom_tags, runtime, USI) without return types