Download agent_interface.py from rishiad/default_submission: direct link, hf CLI and curl.
- Browser
- Download file 1.57 kB
-
https://huggingface.co/rishiad/default_submission/resolve/main/agent_interface.py
- Command line
-
hf download hf://rishiad/default_submission/agent_interface.py
-
curl -L -o agent_interface.py https://huggingface.co/rishiad/default_submission/resolve/main/agent_interface.py
1.57 kB
| """ | |
| Abstract base class defining the standard interface for all agents. | |
| All miner-submitted agents must implement this interface to be evaluated. | |
| """ | |
| from abc import ABC, abstractmethod | |
| import gymnasium as gym | |
| import numpy as np | |
| import torch | |
| class AgentInterface(ABC): | |
| """ | |
| Standard interface that all miner implementations must follow. | |
| This ensures a consistent contract between the evaluator and any submitted agent, | |
| regardless of the underlying model architecture or implementation details. | |
| """ | |
| def __init__( | |
| self, | |
| observation_space: gym.Space | None = None, | |
| action_space: gym.Space | None = None, | |
| seed: int | None = None, | |
| **kwargs, | |
| ): | |
| self.observation_space = observation_space or gym.spaces.Box( | |
| low=-1, high=1, shape=(100,), dtype=np.float32 | |
| ) | |
| self.action_space = action_space or gym.spaces.Box( | |
| low=-1, high=1, shape=(4,), dtype=np.float32 | |
| ) | |
| self.seed = seed or np.random.randint(0, 1000000) | |
| self.rng = np.random.default_rng(seed) | |
| def act(self, obs: dict, **kwargs) -> torch.Tensor: | |
| """ | |
| Take action given current observation and any additional arguments. | |
| """ | |
| pass | |
| def reset(self) -> None: | |
| """ | |
| Reset agent state for new episode. | |
| This is called at the beginning of each episode. Stateless agents | |
| can implement this as a no-op. Agents with internal memory/history | |
| should reset their state here. | |
| """ | |
| pass | |