Spaces:
Sleeping
Sleeping
File size: 1,492 Bytes
4f129c9 181758b 4f129c9 | 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 35 36 37 38 39 | """HTTP client for interacting with a deployed SupportDesk environment."""
from __future__ import annotations
from models import SupportDeskAction, SupportDeskObservation, SupportDeskState
from openenv_compat import EnvClient, StepResult
def _validate(model_cls, payload):
if hasattr(model_cls, "model_validate"):
return model_cls.model_validate(payload)
return model_cls(**payload) # pragma: no cover - pydantic v1 fallback
class SupportDeskEnv(EnvClient[SupportDeskAction, SupportDeskObservation, SupportDeskState]):
"""Typed client for a locally running or deployed OpenEnv server."""
def _step_payload(self, action: SupportDeskAction) -> dict:
"""Convert a typed action into the JSON payload expected by the server."""
if hasattr(action, "model_dump"):
return action.model_dump()
return action.dict()
def _parse_state(self, payload) -> SupportDeskState:
return _validate(SupportDeskState, payload)
def _parse_reset(self, payload) -> SupportDeskObservation:
return _validate(SupportDeskObservation, payload)
def _parse_result(self, payload) -> StepResult[SupportDeskObservation]:
observation = _validate(SupportDeskObservation, payload["observation"])
# OpenEnv StepResult only accepts observation/reward/done in this runtime.
return StepResult(
observation=observation,
reward=payload["reward"],
done=payload["done"],
)
|