class_docstr: Base world for running TOD model-model chats. Includes the following agents:
  
  * User utt agent
  * API call agent
      * Currently assumed to be same as system utt agent in script code, though used as if separate in this world for clarity
  * API responder agent
  * System utt agent
  * API schema groundinger agent (given to api call + response agent)
  * Goal groundinger agent (given to user)
  
  As is standard for ParlAI, these agents may be models or may be standalone classes that extend the "Agent" class. The models for these *are* expected to have their utterances in a standard format.
  
  We do expect these agents to be passed in with a set order (see above), since some assumptions of regular ParlAI Worlds (ex. task = agent[0], model = agent[1]) are broken here since there is no "task agent" and one agent can be two "roles" (ex. system agent also making API calls)
docstr: Resets state of world; also sets up episode metrics.
docstr_tok: ["Resets","state","of","world",";","also","sets","up","episode","metrics","."]
code: def reset(self):
      """
      Resets state of world; also sets up episode metrics.
      """
      super().reset()
      self.need_grounding = True
      self.turns = 0
  
      self.last_batch_episode_metrics = []
      self.batch_acts = []
      for i in range(self.batchsize):
          for agent in self.batch_agents[i]:
              agent.reset()
          self.batch_acts.append([None] * 4)
  
          self.batch_tod_world_metrics[i].episode_reset()
          metrics = self.batch_tod_world_metrics[
              i
          ].get_last_episode_metrics()
          if metrics:
              self.last_batch_episode_metrics.append(metrics)
      self.end_episode = [False] * self.batchsize
  
imports: from parlai.core.metrics import Metric, LegacyMetric
  from parlai.core.message import Message
  from parlai.core.opt import Opt
  from parlai.core.worlds import World
  from parlai.agents.local_human.local_human import LocalHumanAgent
  from parlai.utils.misc import display_messages
  import parlai.core.tod.tod_core
  import parlai.core.tod.world_metrics
  import sys
  import copy
label_desc: Use image node_id 6 for calling the TodWorld obj's underlying member method code with example usage: obj.reset() without return types