code: def unique_key(self):
      key = (
          f"{self.task_id}_{self.task_name}_{self.output_artifact_key}"
      )
      if self.output_index is not None:
          key = f"{key}_index_{self.output_index}"
      return key
  
imports: import re
  from typing import Dict, List, Optional, Union
  import pydantic
  from .model import MLModelSpec
label_desc: Use image node_id 1 for calling the ArtifactSource obj's underlying member method code with example usage: obj.unique_key() and returns: key