code: def __forward(self, model_inputs, **generate_kwargs):
      input_ids = model_inputs["input_ids"]
      attention_mask = model_inputs.get("attention_mask", None)
      # Allow empty prompts
      if input_ids.shape[1] == 0:
          input_ids = None
          attention_mask = None
          in_b = 1
      else:
          in_b = input_ids.shape[0]
      prompt_text = model_inputs.pop("prompt_text")
  
      ## If there is a prefix, we may need to adjust the generation length. Do so without permanently modifying
      ## generate_kwargs, as some of the parameterization may come from the initialization of the pipeline.
      # generate_kwargs = copy.deepcopy(generate_kwargs)
      prefix_length = generate_kwargs.pop("prefix_length", 0)
      if prefix_length > 0:
          has_max_new_tokens = "max_new_tokens" in generate_kwargs or (
              "generation_config" in generate_kwargs
              and generate_kwargs["generation_config"].max_new_tokens
              is not None
          )
          if not has_max_new_tokens:
              generate_kwargs["max_length"] = (
                  generate_kwargs.get("max_length")
                  or self.model.config.max_length
              )
              generate_kwargs["max_length"] += prefix_length
          has_min_new_tokens = "min_new_tokens" in generate_kwargs or (
              "generation_config" in generate_kwargs
              and generate_kwargs["generation_config"].min_new_tokens
              is not None
          )
          if not has_min_new_tokens and "min_length" in generate_kwargs:
              generate_kwargs["min_length"] += prefix_length
  
      # BS x SL
      generated_sequence = self.model.generate(
          input_ids=input_ids,
          attention_mask=attention_mask,
          **generate_kwargs,
      )
      out_b = generated_sequence.shape[0]
      if self.framework == "pt":
          generated_sequence = generated_sequence.reshape(
              in_b, out_b // in_b, *generated_sequence.shape[1:]
          )
      elif self.framework == "tf":
          from transformers import is_tf_available
  
          if is_tf_available():
              import tensorflow as tf
  
              generated_sequence = tf.reshape(
                  generated_sequence,
                  (in_b, out_b // in_b, *generated_sequence.shape[1:]),
              )
          else:
              raise ValueError("TF not avaialble.")
      return {
          "generated_sequence": generated_sequence,
          "input_ids": input_ids,
          "prompt_text": prompt_text,
      }
  
file_path: h2ogpt/src/h2oai_pipeline.py
imports: import os
  from transformers import TextGenerationPipeline
  from transformers.pipelines.text_generation import ReturnType
  from stopping import get_stopping
  from prompter import Prompter
label_desc: Use image node_id 8 for calling the H2OTextGenerationPipeline obj's underlying member method code with example usage: obj.__forward(model_inputs) and returns: dict