class_docstr: prompt format was inspired by [日本語に特化した60億パラメータ規模のGPTモデルの構築と評価](https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/H9-4.pdf)
code: def construct_requests(self, doc, ctx):
      if DYNAMIC_MAX_LENGTH == "false" or not hasattr(
          self.tokenizer, "encode"
      ):
          lls = [
              rf.loglikelihood(ctx, " {}".format(choice))[0]
              for choice in doc["choices"]
          ]
      else:
          encode_fn = self.tokenizer.encode
          if (
              "add_special_tokens"
              in inspect.getfullargspec(encode_fn).args
          ):
              encode_params = dict(add_special_tokens=False)
          else:
              encode_params = {}
          max_num_tokens = max(
              [
                  len(encode_fn(choice, **encode_params))
                  for choice in doc["choices"]
              ]
          )
          ctx = self.preprocess_ctx(
              ctx, max_length=self.max_length - max_num_tokens
          )
          lls = [
              rf.loglikelihood(ctx, " {}".format(choice))[0]
              for choice in doc["choices"]
          ]
      return lls
  
imports: import os
  import inspect
  import datasets
  from lm_eval.base import MultipleChoiceTask, rf
  import numpy
label_desc: Use image node_id 15 for calling the JAQKETV1 obj's underlying member method code with example usage: obj.construct_requests(doc, ctx) and returns: lls