code: def setup_data(self, datapath):
      data = self.load_data(datapath)
      for row in data:
          texts = [row["bot_role"]] + list(row["turns"])
          prompts, labels = texts[::2], texts[1::2]
          for i, (prompt, label) in enumerate(zip(prompts, labels)):
              yield {
                  "text": prompt,
                  "label": label,
                  "bot_role": row["bot_role"],
                  "bot_prompt": row["bot_prompt"],
                  "user_role": row["user_role"],
                  "user_prompt": row["user_prompt"],
                  "utterance_id": row["id"],
                  "domain": row["domain_x"],
                  "task_id": row["task_id"],
              }, i == 0
  
imports: from parlai.core.opt import Opt
  from parlai.core.params import ParlaiParser
  from parlai.core.teachers import DialogTeacher
  from parlai.utils.io import PathManager
  from parlai.utils.data import DatatypeHelper
  from .build import build
  import os
  import pandas
  from typing import Optional
label_desc: Use image node_id 1 for calling the SystemTeacher obj's underlying member method code with example usage: obj.setup_data(datapath) without return types