ShauryaDamathia's picture
Update environment.py
7b883fa verified
Raw
History Blame Contribute Delete
1.65 kB
import json
import random
from pathlib import Path
from agent_contract import build_agent_context
from grader import grade_response
BASE_DIR = Path(__file__).resolve().parent
DEFAULT_DATASET_PATH = BASE_DIR / "dataset.json"
class SecurityEnv:
def __init__(self, dataset_path=None):
dataset_file = Path(dataset_path) if dataset_path else DEFAULT_DATASET_PATH
# only join if relative
if not dataset_file.exists():
dataset_file = BASE_DIR / dataset_file
if not dataset_file.exists():
raise FileNotFoundError(f"Dataset not found: {dataset_file}")
with dataset_file.open("r", encoding="utf-8") as handle:
self.data = json.load(handle)
self.current_sample = None
def reset(self):
self.current_sample = random.choice(self.data)
self.step_count = 0
observation = {
"log": self.current_sample["log"],
"system": self.current_sample["system"],
}
observation.update(
build_agent_context(
log=self.current_sample["log"],
system=self.current_sample["system"],
)
)
return observation
def step(self, action):
expected = self.current_sample["expected"]
reward = grade_response(action, expected)
self.step_count += 1
return {
"observation": None,
"reward": reward,
"done": True,
"info": {
"expected": expected,
},
}
def state(self):
return {
"step_count": self.step_count,
}