Skip to content

Commit f382cbc

Browse files
committed
Refactor: move save_traj to player
1 parent cc50a87 commit f382cbc

1 file changed

Lines changed: 24 additions & 30 deletions

File tree

codeclash/agents/minisweagent.py

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,7 @@
88
import yaml
99
from jinja2 import Template
1010
from minisweagent import Environment, Model
11-
from minisweagent.agents.default import (
12-
AgentConfig,
13-
DefaultAgent,
14-
NonTerminatingException,
15-
TerminatingException,
16-
)
11+
from minisweagent.agents.default import AgentConfig, DefaultAgent
1712
from minisweagent.models.litellm_model import LitellmModel
1813
from minisweagent.run.utils.save import save_traj
1914
from rich.console import Console
@@ -44,6 +39,13 @@ def __init__(
4439
self.game = game
4540
self.console = Console()
4641

42+
def add_message(self, role: str, content: str, **kwargs):
43+
super().add_message(role, content, **kwargs)
44+
if role == "assistant":
45+
self.console.print(
46+
f"[{self.name}] Step taken (step {self.model.n_calls}, cost {self.model.cost:.2f})"
47+
)
48+
4749
def render_template(self, template: str, **kwargs) -> str:
4850
cs = (
4951
asdict(self.config)
@@ -59,27 +61,8 @@ def render_template(self, template: str, **kwargs) -> str:
5961

6062
def run(self) -> tuple[str, str]:
6163
"""Run step() until agent is finished. Return exit status & message"""
62-
self.messages = []
63-
self.add_message("system", self.render_template(self.config.system_template))
64-
self.add_message("user", self.render_template(self.config.instance_template))
65-
66-
# Start rich spinner
67-
with self.console.status(
68-
f"[bold green]{self.name} updating codebase..."
69-
) as status:
70-
while True:
71-
try:
72-
self.step()
73-
except NonTerminatingException as e:
74-
self.add_message("user", str(e))
75-
except TerminatingException as e:
76-
self.add_message("user", str(e))
77-
return type(e).__name__, str(e)
78-
79-
def has_finished(self, output: dict[str, str]):
80-
"""Raises Submitted exception with final output if the agent has finished its task."""
81-
save_traj(self, Path(f"{self.name}_r{self.game.round}.traj.json")) # type: ignore
82-
super().has_finished(output)
64+
with self.console.status(f"[bold green]{self.name} updating codebase..."):
65+
return super().run(task="")
8366

8467

8568
class MiniSWEAgent(Player):
@@ -99,9 +82,20 @@ def __init__(self, config: dict, game: CodeGame):
9982
)
10083

10184
def run(self):
85+
exit_status = None
86+
result = None
10287
try:
10388
exit_status, result = self.agent.run()
10489
except Exception as e:
105-
result = str(e)
106-
print(traceback.format_exc())
107-
self.commit()
90+
exit_status = str(e)
91+
exc_message = traceback.format_exc()
92+
result = exc_message
93+
print(exc_message)
94+
finally:
95+
save_traj(
96+
self.agent, # type: ignore
97+
Path(f"{self.name}_r{self.game.round}.traj.json"),
98+
exit_status=exit_status,
99+
result=result,
100+
)
101+
self.commit()

0 commit comments

Comments
 (0)