code: def function_chain(steps: List[Callable]) -> Callable:
      assert len(steps) != 0
  
      def chain_func(*args, **kw_argv):
          remote_tasks = list(map(ray.remote, steps))
          # Get the first function as a start
          wf_step = remote_tasks[0].bind(*args, **kw_argv)
          for i in range(1, len(steps)):
              # Convert each function inside steps into workflow step
              # function and then use the previous output as the input
              # for them.
              wf_step = remote_tasks[i].bind(wf_step)
          return wf_step
  
      return chain_func
  
label_desc: Use image node_id 1 for calling a global function with example usage: function_chain(steps) and returns: chain_func, wf_step