code: def add_cmdline_args(
      cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
  ) -> ParlaiParser:
      super().add_cmdline_args(parser, partial_opt)
      agent = parser.add_argument_group("Friends Corpus Arguments")
      agent.add_argument(
          "--character",
          type=str,
          default="All",
          choices=[
              "All",
              "Rachel Green",
              "Monica Geller",
              "Phoebe Buffay",
              "Joey Tribbiani",
              "Chandler Bing",
              "Ross Geller",
          ],
          help="Which speaker labels to train on",
      )
      agent.add_argument(
          "--characters",
          type=str,
          default="Rachel Green,Monica Geller,Phoebe Buffay,Joey Tribbiani,Chandler Bing,Ross Geller",
          help="A comma-separated list of characters to train on when `--character` == `All`",
      )
      agent.add_argument(
          "--utterance-delimiter",
          type=str,
          default="\n",
          help="A string used to separate each utterance in the context. Defaults to newline. For example, 'A: Hello\nB: Hi there'.",
      )
      agent.add_argument(
          "--include-speaker-in-context",
          type="bool",
          default=True,
          help="Whether to include speaker labels in the context. For example, message = { text: 'Rachel: Hi' } instead of message = { text: 'Hi' }",
      )
      agent.add_argument(
          "--add-speaker-to-context-end",
          type="bool",
          default=True,
          help="Append speaker to the end of each context. Defaults to True.",
      )
      agent.add_argument(
          "--silence-token-dropout",
          type=float,
          default=1,
          help="Dropout probability for using silence token to generate training example for sentences where the chosen speaker is not speaking. When set to 0, all silence tokens will generate training examples. When set to 1, no silence tokens will generate training examples. Defaults to 1.",
      )
      agent.add_argument(
          "--silence-token",
          type=str,
          default=SILENCE_TOKEN,
          help="The token to use to indicate the chosen speaker is silent. Defaults to __SILENCE__",
      )
      agent.add_argument(
          "--use-start-token",
          type="bool",
          default=False,
          help="Use start token at the beginning of each conversation, and include the first sentence as a training example. Defaults to False.",
      )
      agent.add_argument(
          "--start-token",
          type=str,
          default=START_TOKEN,
          help="The token to use to indicate the beginning of a conversation. Defaults to __START__",
      )
      return parser
  
imports: from typing import Optional
  from parlai.core.opt import Opt
  from parlai.core.teachers import DialogTeacher
  from parlai.core.params import ParlaiParser
  from .build import build
  from collections import defaultdict
  import jsonlines
  from parlai.utils.data import DatatypeHelper
  import random
  import copy
  import os
label_desc: Use image node_id 5 for calling the DefaultTeacher obj's underlying member method code with example usage: obj.add_cmdline_args(cls, parser, partial_opt) and returns: parser