class_docstr: This is the multi-agent version of ExternalEnv.
class_docstr_tok: ["This","is","the","multi-agent","version","of","ExternalEnv","."]
docstr: Record an observation and get the on-policy action.
  
  Thereby, observation_dict is expected to contain the observation
  of all agents acting in this episode step.
  
  Args:
      episode_id: Episode id returned from start_episode().
      observation_dict: Current environment observation.
  
  Returns:
      action: Action from the env action space.
docstr_tok: ["Record","an","observation","and","get","the","on-policy","action",".","Thereby",",","observation_dict","is","expected","to","contain","the","observation","of","all","agents","acting","in","this","episode","step",".","Args",":","episode_id",":","Episode","id","returned","from","start_episode","(",")",".","observation_dict",":","Current","environment","observation",".","Returns",":","action",":","Action","from","the","env","action","space","."]
code: def get_action(
      self, episode_id: str, observation_dict: MultiAgentDict
  ) -> MultiAgentDict:
      """Record an observation and get the on-policy action.
  
      Thereby, observation_dict is expected to contain the observation
      of all agents acting in this episode step.
  
      Args:
          episode_id: Episode id returned from start_episode().
          observation_dict: Current environment observation.
  
      Returns:
          action: Action from the env action space.
      """
  
      episode = self._get(episode_id)
      return episode.wait_for_action(observation_dict)
  
file_path: ray/rllib/env/external_multi_agent_env.py
imports: import uuid
  import gymnasium
  from typing import Optional
  from ray.rllib.utils.annotations import override, PublicAPI
  from ray.rllib.env.external_env import ExternalEnv, _ExternalEnvEpisode
  from ray.rllib.utils.typing import MultiAgentDict
label_desc: Use image node_id 4 for calling the ExternalMultiAgentEnv obj's underlying member method code with example usage: obj.get_action(episode_id, observation_dict) and returns: episode