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",".",")"]
docstr: Given a dict object that includes all of the information necessary for an
  example, serialize Reason strings that will be used to construct the `text`
  object in a ParlAI Teacher Message. Called from `setup_data()` in
  `AbstractReasoningTeacher`.
  
  Perturbations to reasoning chains should be implemented in this function.
  
  Output is:
  
      str - reason prefix token
      str - reason string
      Dict - any metadata to append to the final Message object
  
  We return the `reason prefix token` as a string out of this class in case we want to
  prompt the message with it as the last line of the input, rather than as the first part of the label.
docstr_tok: ["Given","a","dict","object","that","includes","all","of","the","information","necessary","for","an","example",",","serialize","Reason","strings","that","will","be","used","to","construct","the","`","text","`","object","in","a","ParlAI","Teacher","Message",".","Called","from","`","setup_data","(",")","`","in","`","AbstractReasoningTeacher","`",".","Perturbations","to","reasoning","chains","should","be","implemented","in","this","function",".","Output","is",":","str","-","reason","prefix","token","str","-","reason","string","Dict","-","any","metadata","to","append","to","the","final","Message","object","We","return","the","`","reason","prefix","token","`","as","a","string","out","of","this","class","in","case","we","want","to","prompt","the","message","with","it","as","the","last","line","of","the","input",",","rather","than","as","the","first","part","of","the","label","."]
code: def get_full_reason_text(
      self, example_dict: Dict
  ) -> t_REASON_PROCESSED_RESULT:
      """
      Given a dict object that includes all of the information necessary for an
      example, serialize Reason strings that will be used to construct the `text`
      object in a ParlAI Teacher Message. Called from `setup_data()` in
      `AbstractReasoningTeacher`.
  
      Perturbations to reasoning chains should be implemented in this function.
  
      Output is:
  
          str - reason prefix token
          str - reason string
          Dict - any metadata to append to the final Message object
  
      We return the `reason prefix token` as a string out of this class in case we want to
      prompt the message with it as the last line of the input, rather than as the first part of the label.
      """
  
      raise NotImplementedError("Derived class must implement")
  
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 3 for calling the AbstractReason obj's underlying member method code with example usage: obj.get_full_reason_text(example_dict) without return types