From 888d60d472b238b9e51e7f04f629cf17ef67ee86 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 25 Sep 2024 11:09:56 -0700 Subject: [PATCH] feat: Add --junior-edit-format argument and plumb it into Model() --- aider/args.py | 6 ++++++ aider/main.py | 5 ++++- aider/models.py | 8 +++++++- 3 files changed, 17 insertions(+), 2 deletions(-) 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):