Shikhar Kumar Sanjay
Add files via upload
77a26f6
Raw
History Blame Contribute Delete
1.54 kB
"""Client for the Incident-Response-Detective OpenEnv environment."""
import requests
from typing import Optional
class IncidentResponseClient:
"""HTTP client for interacting with the Incident-Response-Detective environment."""
def __init__(self, base_url: str = "http://localhost:7860"):
self.base_url = base_url.rstrip("/")
def health(self) -> dict:
return requests.get(f"{self.base_url}/health").json()
def get_tasks(self) -> list[dict]:
return requests.get(f"{self.base_url}/tasks").json()["tasks"]
def reset(self, task_id: str = "task_easy") -> tuple[str, dict]:
resp = requests.post(f"{self.base_url}/reset", json={"task_id": task_id})
resp.raise_for_status()
data = resp.json()
return data["episode_id"], data["observation"]
def step(self, episode_id: str, action: str, reasoning: str = "") -> dict:
resp = requests.post(f"{self.base_url}/step", json={
"episode_id": episode_id,
"action": {"action": action, "reasoning": reasoning},
})
resp.raise_for_status()
return resp.json()["observation"]
def state(self, episode_id: str) -> dict:
resp = requests.get(f"{self.base_url}/state", params={"episode_id": episode_id})
resp.raise_for_status()
return resp.json()
def grade(self, episode_id: str) -> dict:
resp = requests.post(f"{self.base_url}/grader", json={"episode_id": episode_id})
resp.raise_for_status()
return resp.json()