Spaces:
Running
Running
File size: 2,022 Bytes
5d2f027 047aab1 5d2f027 047aab1 5d2f027 047aab1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | """Data models for the KantBench game theory environment."""
from typing import Any, Optional
from pydantic import Field
from openenv.core.env_server.types import Action, Observation
class KantBenchAction(Action):
"""Action for the KantBench environment — a move in a 2-player or N-player game."""
move: str = Field(..., description="Your move (e.g. 'cooperate', 'defect', 'hawk', 'dove')")
class KantBenchObservation(Observation):
"""Observation from the KantBench environment after one round."""
game_name: str = Field(default="", description="Name of the current game")
game_description: str = Field(default="", description="Description of the game")
available_moves: list[str] = Field(default_factory=list, description="Valid moves for this game")
your_move: str = Field(default="", description="Your move this round")
opponent_move: str = Field(default="", description="Opponent's move this round")
your_payoff: float = Field(default=0.0, description="Your payoff this round")
opponent_payoff: float = Field(default=0.0, description="Opponent's payoff this round")
cumulative_score: float = Field(default=0.0, description="Your total score so far")
round_number: int = Field(default=0, description="Current round number")
max_rounds: int = Field(default=10, description="Total rounds in this episode")
opponent_strategy: str = Field(default="", description="Opponent's strategy name")
history: list[dict[str, Any]] = Field(default_factory=list, description="Round history")
message: str = Field(default="", description="Status message")
# N-player fields (only populated for multiplayer games)
num_players: Optional[int] = Field(default=None, description="Number of players (set for N-player games)")
player_index: Optional[int] = Field(default=None, description="Your player index (set for N-player games)")
all_scores: Optional[list[float]] = Field(default=None, description="Scores for all players (set for N-player games)")
|