code: def _define_special_tokens(self, opt):
      if opt["add_special_tokens"]:
          # Add additional start/end/pad tokens
          self.hf_tokenizer.add_special_tokens(SPECIAL_TOKENS)
          self.start_token = SPECIAL_TOKENS["bos_token"]
          self.end_token = SPECIAL_TOKENS["eos_token"]
          self.null_token = SPECIAL_TOKENS["pad_token"]
          self.unk_token = SPECIAL_TOKENS["unk_token"]
      else:
          # Only special token is end of text
          self.start_token = NO_OP  # hack, we cut off the start token
          self.end_token = "<|endoftext|>"
          self.null_token = "<|endoftext|>"
          self.unk_token = "<|endoftext|>"
  
imports: import os
  import re
  from abc import ABC, abstractmethod, abstractproperty
  from collections import defaultdict
  from typing import List
  from parlai.core.dict import DictionaryAgent
  from parlai.core.opt import Opt
  from parlai.utils.io import PathManager
label_desc: Use image node_id 5 for calling the Gpt2DictionaryAgent obj's underlying member method code with example usage: obj._define_special_tokens(opt) without return types