code: def main(config="../config.yaml", namespace=""):
      if isinstance(config, str):
          config = test_utils.load_job_config(config)
      parties = config.parties
      guest = parties.guest[0]
      host = parties.host[0]
  
      pipeline = FateFlowPipeline().set_parties(guest=guest, host=host)
  
      reader_0 = Reader("reader_0")
      reader_0.guest.task_parameters(
          namespace=f"experiment{namespace}", name="breast_hetero_guest"
      )
      reader_0.hosts[0].task_parameters(
          namespace=f"experiment{namespace}", name="breast_hetero_host"
      )
      psi_0 = PSI("psi_0", input_data=reader_0.outputs["output_data"])
  
      hetero_sbt_0 = HeteroSecureBoost(
          "sbt_0",
          num_trees=2,
          max_bin=32,
          max_depth=3,
          he_param={"kind": "paillier", "key_length": 1024},
          train_data=psi_0.outputs["output_data"],
      )
      hetero_sbt_1 = HeteroSecureBoost(
          "sbt_1",
          num_trees=2,
          max_bin=32,
          max_depth=3,
          he_param={"kind": "paillier", "key_length": 1024},
          train_data=psi_0.outputs["output_data"],
          train_model_input=hetero_sbt_0.outputs["train_model_output"],
      )
      hetero_sbt_2 = HeteroSecureBoost(
          "sbt_2",
          num_trees=4,
          max_bin=32,
          max_depth=3,
          he_param={"kind": "paillier", "key_length": 1024},
          train_data=psi_0.outputs["output_data"],
      )
      evaluation_0 = Evaluation(
          "eval_0",
          runtime_parties=dict(guest=guest),
          metrics=["auc"],
          input_data=[
              hetero_sbt_0.outputs["train_data_output"],
              hetero_sbt_1.outputs["train_data_output"],
              hetero_sbt_2.outputs["train_data_output"],
          ],
      )
  
      pipeline.add_tasks(
          [
              reader_0,
              psi_0,
              hetero_sbt_0,
              hetero_sbt_1,
              hetero_sbt_2,
              evaluation_0,
          ]
      )
      pipeline.compile()
      pipeline.fit()
  
      # pipeline.get_task_info('sbt_0').get_output_model()
      print(pipeline.get_task_info("eval_0").get_output_metric())
      return pipeline
  
imports: import argparse
  from fate_client.pipeline.components.fate import HeteroSecureBoost, PSI, Evaluation, Reader
  from fate_client.pipeline import FateFlowPipeline
  from fate_client.pipeline.utils import test_utils
label_desc: Use image node_id 1 for calling a global function with example usage: main(config, namespace) and returns: pipeline