class_docstr: Used inside of an `AbstractReasoningTeacher` to define how the "Reason" part of an
  example should be serialized out to a string, given a dict object that includes all
  necessary information for the example.
  
  Downstream classes can also implement `perturbations` on these reasons. (See
  `reason_types/step_by_step.py` for examples of this.)
class_docstr_tok: ["Used","inside","of","an","`","AbstractReasoningTeacher","`","to","define","how","the","``","Reason","''","part","of","an","example","should","be","serialized","out","to","a","string",",","given","a","dict","object","that","includes","all","necessary","information","for","the","example",".","Downstream","classes","can","also","implement","`","perturbations","`","on","these","reasons",".","(","See","`","reason_types\/step_by_step.py","`","for","examples","of","this",".",")"]
code: def __init__(self, opt: Opt):
      self.opt = opt
      self.inner_separator = opt.get("inner_separator_token", "\t")
  
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 1 to create a new AbstractReason object  with example: obj = AbstractReason(opt)