code: def get_conditional_loglikelihood_batch(
      self,
      texts: list,
      completion_offset: torch.Tensor,
      tokens_to_explain: list = [],
      progress_bar=None,
  ):
      if progress_bar is None:
          progress_bar = tqdm
      completion_offset = list(completion_offset)
      lls, pplxts = [], []
  
      for i in progress_bar(range(len(texts))):
          prompt = texts[i]
          offset = completion_offset[i]
          (
              perplexity,
              loglikelihood,
          ) = self.get_conditional_loglikelihood([prompt], offset)
          lls.append(loglikelihood)
          pplxts.append(perplexity)
  
      ll = np.array(lls)
      ppl = np.array(pplxts)
      return ppl, ll
  
file_path: interpret-text/python/interpret_text/generative/model_lib/openai_tooling.py
imports: import tiktoken
  import openai
  from tqdm import tqdm
  import time
  import torch
  import numpy
  from scipy.special import logsumexp, log_softmax
label_desc: Use image node_id 5 for calling the CompletionsOpenAI obj's underlying member method code with example usage: obj.get_conditional_loglikelihood_batch(texts, completion_offset, tokens_to_explain, progress_bar) and returns: ppl,  ll