The fundamental reason why this happens is because the ML model itself becomes more diverse in terms of input/output. So in this case the model have a tuple output, or nested tuple.
Putting into a broader context, the input/output types of ML models becomes richer. A single flow with assumption (that input output sits in a more restricted form) would work for certain cases, but not all cases. For example, LLM inference would require us to pass in tuples of KV cache object, and run that in a loop that interacts with other components.
That is why Universal Deployment Runtime and open interpolated and integrated approach becomes much more important, see reference below
For a model that do have richer input/output. The best course course of action is to enable such universal deployment runtime interface and enable a python API to build and runtime apis(in languages of interest) to interact with the result, that allows us to handle a richer set of input/outputs in runtime.