diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 9edf78b02..f97edf47d 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -34,7 +34,13 @@ class Coder: @classmethod def create( - self, main_model, io, openai_api_key, openai_api_base="https://api.openai.com/v1", **kwargs + self, + main_model, + edit_format, + io, + openai_api_key, + openai_api_base="https://api.openai.com/v1", + **kwargs, ): from . import EditBlockCoder, WholeFileCoder @@ -50,9 +56,12 @@ class Coder: ) main_model = models.GPT35_16k - if main_model.edit_format == "diff": + if edit_format is None: + edit_format = main_model.edit_format + + if edit_format == "diff": return EditBlockCoder(main_model, io, **kwargs) - elif main_model.edit_format == "whole": + elif edit_format == "whole": return WholeFileCoder(main_model, io, **kwargs) else: raise ValueError(f"{main_model} has unknown edit format {main_model.edit_format}") diff --git a/aider/main.py b/aider/main.py index 161406858..a7b6c91d2 100644 --- a/aider/main.py +++ b/aider/main.py @@ -93,6 +93,12 @@ def main(args=None, input=None, output=None): const=models.GPT35_16k.name, help=f"Use {models.GPT35_16k.name} model for the main chat (gpt-4 is better)", ) + parser.add_argument( + "--edit-format", + metavar="EDIT_FORMAT", + default=None, + help="Specify what edit format GPT should use (default depends on model)", + ) parser.add_argument( "--pretty", action="store_true", @@ -231,6 +237,7 @@ def main(args=None, input=None, output=None): coder = Coder.create( main_model, + args.edit_format, io, args.openai_api_key, args.openai_api_base,