Enigma / client.py
IshwaM's picture
Upload folder using huggingface_hub
7cb6044 verified
Raw
History Blame Contribute Delete
1.73 kB
from openenv.core.env_client import EnvClient
from openenv.core.client_types import StepResult
from models import ToolCallAction, ToolCallObservation, ToolCallState, Scenario, ToolDefinition
class ToolCallEnvClient(EnvClient[ToolCallAction, ToolCallObservation, ToolCallState]):
"""Client for interacting with the Tool Call RL Environment."""
def _step_payload(self, action: ToolCallAction) -> dict:
"""Convert action to JSON payload."""
return {
"scenario_id": action.scenario_id,
"tool_calls": action.tool_calls,
"should_refuse": action.should_refuse,
"reasoning": action.reasoning,
}
def _parse_result(self, payload: dict) -> StepResult:
"""Parse server JSON response into StepResult."""
tool_defs = [ToolDefinition(**td) for td in payload.get("tool_definitions", [])]
obs = ToolCallObservation(
scenario=Scenario(**payload["scenario"]),
tool_definitions=tool_defs,
queue_size=payload["queue_size"],
current_step=payload["current_step"],
reward=payload["reward"],
done=payload["done"],
)
return StepResult(
observation=obs,
reward=payload["reward"],
done=payload["done"],
)
def _parse_state(self, payload: dict) -> ToolCallState:
"""Parse server JSON response into ToolCallState."""
return ToolCallState(
current_index=payload["current_index"],
total_scenarios=payload["total_scenarios"],
processed_scenario_ids=payload["processed_scenario_ids"],
score=payload["score"],
done=payload["done"],
)