File size: 1,273 Bytes
38336e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import requests
import time
from typing import Any, Dict

class RevOpsEnvClient:
    def __init__(self, base_url: str = "http://localhost:8000"):
        self.base_url = base_url
        self.max_retries = 3

    def _request(self, method: str, endpoint: str, json: Dict = None) -> Dict:
        url = f"{self.base_url}{endpoint}"
        for attempt in range(self.max_retries):
            try:
                response = requests.request(method, url, json=json)
                response.raise_for_status()
                return response.json()
            except requests.exceptions.RequestException as e:
                time.sleep(1)
        raise Exception(f"Failed to reach env after {self.max_retries} attempts.")
        
    def reset(self, task_id: str) -> Dict[str, Any]:
        return self._request("POST", f"/reset?episode_id={task_id}&task_id={task_id}", json={"episode_id": task_id, "task_id": task_id})

    def step(self, action: Dict[str, Any]) -> Dict[str, Any]:
        return self._request("POST", "/step", json={"action": action})

    def state(self) -> Dict[str, Any]:
        return self._request("GET", "/state")

    def grader(self) -> float:
        res = self._request("GET", "/grader")
        return res.get("grader_score", 0.0)