diff --git a/aider/args.py b/aider/args.py index 379034847..6709627bc 100644 --- a/aider/args.py +++ b/aider/args.py @@ -196,6 +196,12 @@ def get_parser(default_config_files, git_root): default=None, help="Specify the model to use for junior tasks (default depends on --model)", ) + group.add_argument( + "--junior-edit-format", + metavar="JUNIOR_EDIT_FORMAT", + default=None, + help="Specify the edit format for the junior model (default: depends on junior model)", + ) group.add_argument( "--show-model-warnings", action=argparse.BooleanOptionalAction, diff --git a/aider/main.py b/aider/main.py index 1fa07fc3c..6e411207b 100644 --- a/aider/main.py +++ b/aider/main.py @@ -534,7 +534,10 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F args.model = "claude-3-5-sonnet-20240620" main_model = models.Model( - args.model, weak_model=args.weak_model, junior_model=args.junior_model + args.model, + weak_model=args.weak_model, + junior_model=args.junior_model, + junior_edit_format=args.junior_edit_format ) if args.verbose: diff --git a/aider/models.py b/aider/models.py index a1e2adebd..eda233800 100644 --- a/aider/models.py +++ b/aider/models.py @@ -597,11 +597,12 @@ def get_model_info(model): class Model(ModelSettings): - def __init__(self, model, weak_model=None, junior_model=None): + def __init__(self, model, weak_model=None, junior_model=None, junior_edit_format=None): self.name = model self.max_chat_history_tokens = 1024 self.weak_model = None self.junior_model = None + self.junior_edit_format = junior_edit_format self.info = self.get_model_info(model) @@ -716,6 +717,11 @@ class Model(ModelSettings): weak_model=False, junior_model=False, ) + + # Use the provided junior_edit_format if available, otherwise use the ModelSettings value + if self.junior_edit_format is None: + self.junior_edit_format = self.junior_edit_format or self.junior_model.edit_format + return self.junior_model def tokenizer(self, text):