Spaces:
Build error
Build error
| from __future__ import annotations | |
| from typing import TYPE_CHECKING, Any, List | |
| from . import describer_registry as DescriberRegistry | |
| from .base import BaseDescriber | |
| if TYPE_CHECKING: | |
| from agentverse.environments import BaseEnvironment | |
| class PrisonerDescriber(BaseDescriber): | |
| switch_func: dict = { | |
| "Both Suspects": "Suspect2", | |
| "Suspect1": "Suspect2", | |
| "Suspect2": "Suspect1", | |
| } | |
| receiver: str = "Both Suspects" | |
| def get_env_description(self, environment: BaseEnvironment) -> List[str]: | |
| if environment.cnt_turn == 0: | |
| environment.agents[0].set_receiver({"all"}) | |
| environment.agents[1].set_receiver({"Police", "Suspect1"}) | |
| environment.agents[2].set_receiver({"Police", "Suspect2"}) | |
| # only police have to choose to talk to suspect1 or suspect | |
| description = [] | |
| for i, agent in enumerate(environment.agents): | |
| if i == 0: | |
| # police -> suspect1 -> police -> suspect2 | |
| if environment.cnt_turn % 2 == 1: | |
| description.append("") | |
| continue | |
| # Police will have to choose talk to which suspect | |
| description.append(f"You are now talking to {self.receiver}") | |
| receiver = "all" if self.receiver == "Both Suspects" else self.receiver | |
| self.receiver = self.switch_func[self.receiver] | |
| agent.set_receiver({receiver}) | |
| else: | |
| description.append("") | |
| return description | |
| def reset(self) -> None: | |
| pass | |