Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions examples/harnesses/compact/compact/harness.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ class CompactingHarnessConfig(HarnessConfig):


class CompactingHarness(Harness[CompactingHarnessConfig]):
SUPPORTS_TASK_TOOLS = True

async def launch(
self,
ctx: RolloutContext,
Expand Down
5 changes: 2 additions & 3 deletions packages/harnesses/harnesses/rlm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,8 @@ class RLMHarnessConfig(HarnessConfig):


class RLMHarness(Harness[RLMHarnessConfig]):
APPENDS_SYSTEM_PROMPT = (
True # rlm appends it to its prompt via RLM_APPEND_TO_SYSTEM_PROMPT
)
APPENDS_SYSTEM_PROMPT = True
SUPPORTS_TASK_TOOLS = False

async def launch(
self,
Expand Down
10 changes: 10 additions & 0 deletions verifiers/v1/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,20 @@ def _resolve_plugins(cls, data):
class Environment:
def __init__(self, config: EnvConfig) -> None:
from verifiers.v1.loaders import load_harness, load_taskset
from verifiers.v1.taskset import Taskset

self.config = config
self.taskset = load_taskset(config.taskset)
self.harness = load_harness(config.harness)
if (
not self.harness.SUPPORTS_TASK_TOOLS
and type(self.taskset).tools is not Taskset.tools
):
raise ValueError(
f"Harness {self.harness.config.id!r} does not support task tools, but taskset "
f"{self.taskset.config.id!r} exposes tool servers (MCP). Run it with a harness "
f"that supports task tools (e.g. --harness.id default), or use a taskset without tools."
)
self.harness_timeout = config.timeout.rollout
self.scoring_timeout = config.timeout.scoring
self.limits = RolloutLimits(
Expand Down
3 changes: 3 additions & 0 deletions verifiers/v1/harness.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ class Harness(ABC, Generic[ConfigT]):
APPENDS_SYSTEM_PROMPT: ClassVar[bool] = (
False # emit task.system_prompt as a system message (else fold into the user message)
)
SUPPORTS_TASK_TOOLS: ClassVar[bool] = (
True # expose a task's MCP tool servers to the model; set False for harnesses without an MCP client
)

def __init__(self, config: ConfigT) -> None:
self.config = config
Expand Down
Loading