code: def parley(self):
      if self.episode_done():
          self._end_episode()
  
      if self.turn_cnt == 0:
          self.acts = [None, None]
          # get any context for the beginning of the conversation
          self.contexts = self.get_contexts()
  
      self.seed_utterances = self._get_seed_utt_acts(
          self.episode_cnt, self.agents
      )
  
      if self.contexts:
          assert len(self.contexts) == 2
          # initial context
          for i in range(0, 2):
              context = Message(
                  {
                      "text": self.contexts[i],
                      "episode_done": False,
                      "id": "context",
                  }
              )
              self.acts[i] = context
              self.agents[i].observe(validate(context))
          # clear contexts so they are only added once per episode
          self.contexts = None
      elif self.seed_utterances:
          # pop the next two seed messages (there may be less or more than 2 total)
          utts = self.seed_utterances[:2]
          self.seed_utterances = self.seed_utterances[2:]
          # process the turn
          for i in [0, 1]:
              # if we have a seed utterance, add it to the conversation
              if len(utts) > i:
                  self.acts[i] = utts[i]
                  if hasattr(self.agents[i], "self_observe"):
                      self.agents[i].observe({"episode_done": False})
                      self.agents[i].self_observe(self.acts[i])
              else:
                  self.acts[i] = self.agents[i].act()
              self.agents[1 - i].observe(validate(self.acts[i]))
      else:
          # do regular loop
          acts = self.acts
          agents = self.agents
          acts[0] = agents[0].act()
          agents[1].observe(validate(acts[0]))
          acts[1] = agents[1].act()
          agents[0].observe(validate(acts[1]))
  
      self.update_counters()
      self.turn_cnt += 1
  
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 9 for calling the SelfChatWorld obj's underlying member method code with example usage: obj.parley() without return types