code: def load_openers(opt) -> Optional[List[str]]:
      if opt["task"].startswith("internal:") or opt["task"].startswith(
          "fb:"
      ):
          base_task = opt["task"]
      else:
          base_task = opt["task"].split(":")[0]
  
      if base_task == "self_chat":
          # TODO(#2284): Load default openers from s3
          return None
  
      print("[ loading conversation openers... ]")
      # create dummy task so we can get openers from the data
      task_opt = copy.deepcopy(opt)
      task_opt["task"] = base_task
  
      # default train will loop forever, but evalmode will stop after one epoch
      datatype = task_opt["datatype"]
      if "train" in datatype and "evalmode" not in datatype:
          task_opt["datatype"] = f"{datatype}:evalmode"
      task_opt["interactive_task"] = False
      task_opt["selfchat_task"] = False
      task_opt["fixed_response"] = None
      task_agent = FixedResponseAgent(task_opt)
      task_world = create_task(task_opt, task_agent)
  
      # run through task data, collecting all first messages
      openers = []
      is_first_turn = True
      while not task_world.epoch_done():
          task_world.parley()
          msg = task_world.get_acts()[0]
          # add only the first message in the episode
          if is_first_turn and msg.get("text"):
              openers.append(msg["text"])
          is_first_turn = msg.get("episode_done", False)
  
      # remove duplicates while preserving the ordering of the loaded openers
      openers = list(dict.fromkeys(openers))
  
      print(f"[ loaded {len(openers)} openers ]")
      return openers
  
imports: import copy
  import random
  from typing import Any, Dict, List, Optional
  from parlai.agents.fixed_response.fixed_response import FixedResponseAgent
  from parlai.core.agents import Agent
  from parlai.core.worlds import create_task, DialogPartnerWorld, validate
  from parlai.core.message import Message
label_desc: Use image node_id 1 for calling a global function with example usage: load_openers(opt) and returns: openers, None