code: def __call__(
      self, prompt, **kwargs
  ) -> ChainOfThoughtCompletionResult:
      # Ensure it is in string format
      prompt = ChatCompletionPrompt(prompt).to_formatted_prompt()
  
      cot_prompt = prompt + [
          {"role": "assistant", "content": self.cot_template}
      ]
      answer = self.cot_completion_fn_instance(
          prompt=cot_prompt, **kwargs
      ).get_completions()[0]
      record_sampling(prompt=cot_prompt, sampled=answer)
  
      extraction_prompt = cot_prompt + [
          {"role": "assistant", "content": answer},
          {
              "role": "assistant",
              "content": self.extract_answer_template,
          },
      ]
      extracted_answer = self.extract_completion_fn_instance(
          prompt=extraction_prompt, **kwargs
      ).get_completions()[0]
      record_sampling(
          prompt=extraction_prompt, sampled=extracted_answer
      )
  
      return ChainOfThoughtCompletionResult(extracted_answer)
  
file_path: evals/evals/completion_fns/cot.py
imports: from evals.api import CompletionFn, CompletionResult
  from evals.prompt.base import ChatCompletionPrompt
  from evals.record import record_sampling
  from evals.registry import Registry
label_desc: Use image node_id 2 for calling the ChainOfThoughtCompletionFn obj's underlying member method code with example usage: obj.__call__(prompt) and returns: ChainOfThoughtCompletionResult