text: def random_action(self):        obs = self.obs_buffer[-1]        action = self.env.action_space(self.name).sample(obs["action_mask"])        return action    def reset(self):        self.message_history = [            SystemMessage(content=self.docs),            SystemMessage(content=self.instructions),        ]    def observe(self, obs, rew=0, term=False, trunc=False, info=None):        self.obs_buffer.append(obs)        return super().observe(obs, rew, term, trunc, info)    def _act(self):        valid_action_instruction = "Generate a valid action given by the indices of the `action_mask` that are not 0, according to the action formatting rules."        self.message_history.append(HumanMessage(content=valid_action_instruction))        return super()._act()Tic-Tac-Toeâ€‹Here is an example of a Tic-Tac-Toe game that uses the ActionMaskAgent.from pettingzoo.classic import tictactoe_v3env = tictactoe_v3.env(render_mode="human")agents = {    name: ActionMaskAgent(name=name, model=ChatOpenAI(temperature=0.2), env=env)    for name in env.possible_agents}main(agents, env)        Observation: {'observation': array([[[0, 0],            [0, 0],