Somuai12's picture
Fix inference.py: async OpenEnv pattern, from_docker_image, proper error handling
4c68ece
# client.py
from typing import Any, Dict
from openenv.core.env_client import EnvClient
from openenv.core.client_types import StepResult
from models import Action, Observation, State
class PolicyEvolverEnv(EnvClient):
"""
Client for PolicyEvolverEnv.
Usage:
async with PolicyEvolverEnv(base_url="https://your-space.hf.space") as env:
obs = await env.reset(task_id="task_easy")
result = await env.step(action)
"""
observation_class = Observation
state_class = State
def _step_payload(self, action: Any) -> Dict[str, Any]:
"""Convert an Action to the JSON payload expected by the server."""
if isinstance(action, dict):
return action
if hasattr(action, "model_dump"):
return action.model_dump()
if hasattr(action, "__dict__"):
return vars(action)
return dict(action)
def _parse_result(self, payload: Dict[str, Any]) -> StepResult:
"""Convert server JSON response to a StepResult."""
obs_data = payload.get("observation", {})
return StepResult(
observation=obs_data,
reward=payload.get("reward"),
done=payload.get("done", False),
)
def _parse_state(self, payload: Dict[str, Any]) -> Dict[str, Any]:
"""Parse state response from the server."""
return payload