class_docstr: Teacher that builds up Message objects based on child `question and answer` and
  `reason` classes.
  
  Also handles making exemplars.
class_docstr_tok: ["Teacher","that","builds","up","Message","objects","based","on","child","`","question","and","answer","`","and","`","reason","`","classes",".","Also","handles","making","exemplars","."]
code: def __init__(self, opt, shared=None):
      self.reason_instance = self.get_reason_class()(opt)
      self.question_answer_instance = self.get_question_answer_class()(
          opt
      )
      super().__init__(opt, shared)
      self.paraphrase_cache = {}
  
imports: from parlai.core.opt import Opt
  from parlai.core.message import Message
  from parlai.core.params import ParlaiParser
  from parlai.core.teachers import DialogTeacher
  from tqdm import tqdm
  from typing import Any, Dict, Iterable, List, Optional, Tuple
label_desc: Use image node_id 5 to create a new AbstractReasoningTeacher object from inherited base classes: DialogTeacher with example: obj = AbstractReasoningTeacher(opt, shared)