Skip to content

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)

Bases: Player

Player with agentic code editing capabilities

Source code in codeclash/agents/minisweagent.py
47
48
def __init__(self, config: dict, environment: DockerEnvironment, game_context: GameContext):
    super().__init__(config, environment=environment, game_context=game_context)

run

run()
Source code in codeclash/agents/minisweagent.py
50
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
def run(self):
    model = get_model(config=self.config["config"]["model"])
    self.agent = ClashAgent(
        model=model,
        env=self.environment,
        logger=self.logger,
        **self.config["config"]["agent"],
    )
    exit_status = None
    exc_message = None
    try:
        result = self.agent.run(task="", **self.game_context.to_template_vars())
        exit_status = result.get("exit_status", "")
    except Exception as e:
        exit_status = str(e)
        exc_message = traceback.format_exc()
        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"
        )
        self.agent.save(traj_path)
        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.cost,
            "api_calls": self.agent.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}")