MiniSWEAgent
LLM-powered coding agent using the mini-SWE-agent framework.
Resources
Configuration
players:
- name: GPTAgent
type: minisweagent
model: gpt-4-turbo
temperature: 0.7
max_tokens: 4000
- name: ClaudeAgent
type: minisweagent
model: claude-3-opus-20240229
temperature: 0.7
max_tokens: 4000
Implementation
codeclash.agents.minisweagent.MiniSWEAgent
MiniSWEAgent(config: dict, environment: DockerEnvironment, game_context: GameContext, push: bool = False)
Bases: Player
Player with agentic code editing capabilities
Source code in codeclash/agents/minisweagent.py
| def __init__(self, config: dict, environment: DockerEnvironment, game_context: GameContext, push: bool = False):
super().__init__(config, environment=environment, game_context=game_context, push=push)
|
run
Source code in codeclash/agents/minisweagent.py
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 | def run(self):
# temporary workaround around https://github.com/SWE-agent/mini-swe-agent/issues/477
if "DeterministicModel" not in self.config["config"]["model"].get("model_class", ""):
model = get_model(config=self.config["config"]["model"])
else:
model = DeterministicModel(outputs=self.config["config"]["model"]["outputs"])
self.agent = ClashAgent(
model=model,
env=self.environment,
logger=self.logger,
**self.config["config"]["agent"],
)
exit_status = None
result = None
exc_message = None
try:
exit_status, result = self.agent.run(task="", **self.game_context.to_template_vars())
except Exception as e:
exit_status = str(e)
exc_message = traceback.format_exc()
result = exc_message
self.logger.critical(exc_message)
finally:
traj_path = (
self.game_context.log_local
/ "players"
/ self.name
/ f"{self.name}_r{self.game_context.round}.traj.json"
)
save_traj(
self.agent, # type: ignore
traj_path,
exit_status=exit_status,
result=result,
print_fct=self.logger.debug,
)
copy_to_container(
self.environment,
traj_path,
self.game_context.log_env / "edits" / traj_path.name,
)
self._metadata["agent_stats"][self.game_context.round] = {
"exit_status": exit_status,
"cost": self.agent.model.cost,
"api_calls": self.agent.model.n_calls,
}
if exit_status.lower().strip() not in ["", "submitted", "limitsexceeded"] and exc_message is not None:
raise RuntimeError(f"Agent {self.name} failed with exit status: {exit_status} and exception: {exc_message}")
|