Skip to content

Commit b81a9ae

Browse files
authored
Use real parallel tool calls for mini-swe-agent (#1505)
1 parent 5963875 commit b81a9ae

3 files changed

Lines changed: 17 additions & 4 deletions

File tree

packages/harnesses/harnesses/mini_swe_agent.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
MINI_SWE_AGENT_DEFAULT_PACKAGE_SHA256 = (
1919
"694df4de1337e665e3cd82e99f93374f573bf52b8e7c362ac5d8045ad9f7c37c"
2020
)
21-
MINI_SWE_AGENT_DEFAULT_CONFIG_SPEC = "mini_textbased"
22-
MINI_SWE_AGENT_DEFAULT_MODEL_CLASS = "litellm_textbased"
21+
MINI_SWE_AGENT_DEFAULT_CONFIG_SPEC = "mini"
22+
MINI_SWE_AGENT_DEFAULT_MODEL_CLASS = "litellm"
2323
MINI_SWE_AGENT_DEFAULT_ENVIRONMENT_TIMEOUT = 120
2424

2525

@@ -71,6 +71,7 @@ class MiniSWEAgentProgramConfig(vf.ProgramConfig):
7171
config_spec: str = MINI_SWE_AGENT_DEFAULT_CONFIG_SPEC
7272
model_class: str = MINI_SWE_AGENT_DEFAULT_MODEL_CLASS
7373
environment_timeout: int = MINI_SWE_AGENT_DEFAULT_ENVIRONMENT_TIMEOUT
74+
parallel_tool_calls: bool = True
7475
extra_config_specs: list[str] | None = None
7576
sandbox: vf.SandboxConfig | None = vf.SandboxConfig()
7677

@@ -117,6 +118,8 @@ def resolve(self) -> vf.ProgramConfig:
117118
"model.cost_tracking=ignore_errors",
118119
"-c",
119120
"model.model_kwargs.custom_llm_provider=openai",
121+
"-c",
122+
f"model.model_kwargs.parallel_tool_calls={str(self.parallel_tool_calls).lower()}",
120123
]
121124
for spec in self.extra_config_specs or []:
122125
config_args.extend(["-c", shlex.quote(spec)])

tests/test_v1_mini_swe_agent.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,15 @@ def test_mini_swe_agent_builds_sandbox_program():
6969
)
7070
)
7171
program = cast(dict[str, Any], harness.config.program.data())
72+
command = cast(list[str], program["command"])
73+
script = command[-1]
7274

7375
assert isinstance(harness, vf.Harness)
7476
assert program["sandbox"] is not False
7577
assert "OPENAI_MODEL" in cast(dict[str, object], program["env"])
78+
assert "-c mini " in script
79+
assert "model.model_class=litellm" in script
80+
assert "model.model_kwargs.parallel_tool_calls=true" in script
7681
assert "apt-get -o Acquire::Retries=3 update" in cast(str, program["setup"])
7782
assert "apt-get -o Acquire::Retries=3 install" in cast(str, program["setup"])
7883
assert "/mini-swe-agent/prompt.txt" in cast(dict[str, object], program["files"])

verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
DEFAULT_LOG_PATH = f"{DEFAULT_LOG_DIR}/mini-swe-agent.log"
2525
DEFAULT_TRAJECTORY_PATH = f"{DEFAULT_LOG_DIR}/mini-swe-agent.traj.json"
2626
DEFAULT_AGENT_WORKDIR = "${AGENT_WORKDIR:-/app}"
27-
DEFAULT_CONFIG_SPEC = "mini_textbased"
28-
DEFAULT_MODEL_CLASS = "litellm_textbased"
27+
DEFAULT_CONFIG_SPEC = "mini"
28+
DEFAULT_MODEL_CLASS = "litellm"
2929
DEFAULT_ENVIRONMENT_TIMEOUT = 120
3030

3131

@@ -52,6 +52,7 @@ def build_mini_swe_agent_run_command(
5252
config_spec: str = DEFAULT_CONFIG_SPEC,
5353
model_class: str = DEFAULT_MODEL_CLASS,
5454
environment_timeout: int = DEFAULT_ENVIRONMENT_TIMEOUT,
55+
parallel_tool_calls: bool = True,
5556
extra_config_specs: list[str] | None = None,
5657
) -> str:
5758
"""Build the shell command that configures and runs mini-SWE-agent.
@@ -80,6 +81,8 @@ def build_mini_swe_agent_run_command(
8081
"model.cost_tracking=ignore_errors",
8182
"-c",
8283
"model.model_kwargs.custom_llm_provider=openai",
84+
"-c",
85+
f"model.model_kwargs.parallel_tool_calls={str(parallel_tool_calls).lower()}",
8386
]
8487
# Config specs are the mini CLI's native override format; use them for cwd,
8588
# timeout, model class, and optional system prompt wiring.
@@ -141,6 +144,7 @@ def mini_swe_agent_harness(
141144
config_spec: str = DEFAULT_CONFIG_SPEC,
142145
model_class: str = DEFAULT_MODEL_CLASS,
143146
environment_timeout: int = DEFAULT_ENVIRONMENT_TIMEOUT,
147+
parallel_tool_calls: bool = True,
144148
extra_config_specs: list[str] | None = None,
145149
):
146150
"""Create a Harness configured for mini-SWE-agent."""
@@ -168,6 +172,7 @@ def mini_swe_agent_harness(
168172
config_spec=config_spec,
169173
model_class=model_class,
170174
environment_timeout=environment_timeout,
175+
parallel_tool_calls=parallel_tool_calls,
171176
extra_config_specs=extra_config_specs,
172177
),
173178
system_prompt=system_prompt,

0 commit comments

Comments
 (0)