code: def __init__(
      self,
      cot_template: str = DEFAULT_COT_TEMPLATE,
      extract_answer_template: str = DEFAULT_EXTRACT_ANSWER_TEMPLATE,
      cot_completion_fn: str = None,
      extract_completion_fn: str = None,
      registry: Registry = None,
      registry_path: str = None,
      **kwargs,
  ) -> None:
      registry = Registry() if not registry else registry
      if registry_path:
          registry.add_registry_paths(registry_path)
  
      if extract_completion_fn is None:
          extract_completion_fn = cot_completion_fn
  
      # This model will use chain of thought to answer the question
      self.cot_template = cot_template
      self.cot_completion_fn_instance = registry.make_completion_fn(
          cot_completion_fn
      )
  
      # This model will extract the answer from the chain of thought
      self.extract_answer_template = extract_answer_template
      self.extract_completion_fn_instance = registry.make_completion_fn(
          extract_completion_fn
      )
  
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 1 to create a new ChainOfThoughtCompletionFn object from inherited base classes: CompletionFn with example: obj = ChainOfThoughtCompletionFn(cot_template, extract_answer_template, cot_completion_fn, extract_completion_fn, registry, registry_path)