Files
microsoft-SkillOpt/docs/reference/api.md
2026-06-01 19:38:17 +00:00

2.0 KiB

API Reference

Core Classes

EnvAdapter

Abstract base class for benchmark environments (skillopt/envs/base.py).

class EnvAdapter(ABC):
    def setup(self, cfg: dict) -> None
    def get_dataloader(self) -> BaseDataLoader | None
    def build_train_env(self, batch_size: int, seed: int, **kwargs)
    def build_eval_env(self, env_num: int, split: str, seed: int, **kwargs)
    def rollout(self, env_manager, skill_content: str, out_dir: str, **kwargs) -> list[dict]
    def reflect(self, results: list[dict], skill_content: str, out_dir: str, **kwargs) -> list[dict | None]
    def get_task_types(self) -> list[str]

The rollout contract expects result rows with at least:

{"id": str, "hard": int, "soft": float}

BaseDataLoader / SplitDataLoader

Data loader abstractions (skillopt/datasets/base.py).

class BaseDataLoader(ABC):
    def setup(self, cfg: dict) -> None
    def build_train_batch(self, batch_size: int, seed: int, **kwargs) -> BatchSpec
    def build_eval_batch(self, env_num: int, split: str, seed: int, **kwargs) -> BatchSpec

class SplitDataLoader(BaseDataLoader):
    def load_raw_items(self, data_path: str) -> list[dict]
    def load_split_items(self, split_path: str) -> list[dict]
    def get_split_items(self, split: str) -> list[dict]

BatchSpec

Represents one concrete batch request.

@dataclass(slots=True)
class BatchSpec:
    phase: str
    split: str
    seed: int
    batch_size: int
    payload: object | None = None
    metadata: dict[str, Any] = field(default_factory=dict)

RolloutResult / RawPatch

Typed helpers for stage I/O in skillopt/types.py.

@dataclass
class RolloutResult:
    id: str
    hard: int
    soft: float
    # optional benchmark-specific fields

@dataclass
class RawPatch:
    patch: Patch
    source_type: Literal["failure", "success"] = "failure"

For detailed source code, see the skillopt/ directory.