class_docstr: Mixin for agents used within BB2.
  
  agents: list of agents
  agent_dict: dictionary for the agent
  input_type: for logging purposes.
class_docstr_tok: ["Mixin","for","agents","used","within","BB2",".","agents",":","list","of","agents","agent_dict",":","dictionary","for","the","agent","input_type",":","for","logging","purposes","."]
docstr: Tokenize input for the sub agent.
  
  Assumes that the sub agent has been instantiated.
  
  :param input:
      input to the sub agent
  
  :return tokens:
      return tokenized input
docstr_tok: ["Tokenize","input","for","the","sub","agent",".","Assumes","that","the","sub","agent","has","been","instantiated",".",":","param","input",":","input","to","the","sub","agent",":","return","tokens",":","return","tokenized","input"]
code: def tokenize_input(self, input: str) -> List[int]:
      """
      Tokenize input for the sub agent.
  
      Assumes that the sub agent has been instantiated.
  
      :param input:
          input to the sub agent
  
      :return tokens:
          return tokenized input
      """
      assert self.agents and self.agent_dict is not None
      return self.agent_dict.txt2vec(input)
  
imports: from enum import Enum, auto
  import os
  import string
  import time
  import torch
  import torch.nn
  from typing import List, Tuple, Dict, Optional, Any
  from parlai.agents.rag.retrievers import clean_vec
  from parlai.core.agents import create_agent_from_model_file, create_agent_from_shared
  from parlai.core.build_data import modelzoo_path
  from parlai.core.dict import DictionaryAgent
  from parlai.core.message import Message
  from parlai.core.opt import Opt
  from parlai.core.torch_agent import TorchAgent
  from parlai.tasks.msc.agents import NOPERSONA
  import parlai.utils.logging
label_desc: Use image node_id 1 for calling the BB2SubmoduleMixin obj's underlying member method code with example usage: obj.tokenize_input(input) and returns: self