wordgame / client.py
Prithvigg's picture
Upload folder using huggingface_hub
4636859 verified
Raw
History Blame Contribute Delete
1.32 kB
from openenv.core import EnvClient
from openenv.core.client_types import StepResult
from .models import WordGameAction, WordGameObservation, WordGameState
class WordGameEnv(EnvClient[WordGameAction, WordGameObservation, WordGameState]):
def _step_payload(self, action: WordGameAction) -> dict:
return {"guess": action.guess}
def _parse_result(self, payload: dict) -> StepResult[WordGameObservation]:
obs_data = payload.get("observation", {})
return StepResult(
observation=WordGameObservation(
masked_word=obs_data.get("masked_word", ""),
guessed_letters=obs_data.get("guessed_letters", []),
attempts_remaining=obs_data.get("attempts_remaining", 6),
message=obs_data.get("message", ""),
done=payload.get("done", False),
reward=payload.get("reward"),
),
reward=payload.get("reward"),
done=payload.get("done", False),
)
def _parse_state(self, payload: dict) -> WordGameState:
return WordGameState(
episode_id=payload.get("episode_id"),
step_count=payload.get("step_count", 0),
target_word=payload.get("target_word", ""),
max_attempts=payload.get("max_attempts", 6),
)