diff --git a/aider/args.py b/aider/args.py index 32f2a07bb..642858ec3 100644 --- a/aider/args.py +++ b/aider/args.py @@ -287,7 +287,7 @@ def get_parser(default_config_files, git_root): "--map-tokens", type=int, default=None, - help="Suggested number of tokens to use for repo map, use 0 to disable (default: 1024)", + help="Suggested number of tokens to use for repo map, use 0 to disable", ) group.add_argument( "--map-refresh", diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index aceb7f926..92a96ee7b 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -231,10 +231,10 @@ class Coder: if map_tokens > 0: refresh = self.repo_map.refresh lines.append(f"Repo-map: using {map_tokens} tokens, {refresh} refresh") - max_map_tokens = 2048 + max_map_tokens = self.main_model.get_repo_map_tokens() * 2 if map_tokens > max_map_tokens: lines.append( - f"Warning: map-tokens > {max_map_tokens} is not recommended as too much" + f"Warning: map-tokens > {max_map_tokens} is not recommended. Too much" " irrelevant code can confuse LLMs." ) else: diff --git a/aider/main.py b/aider/main.py index 87d977e24..89a94daff 100644 --- a/aider/main.py +++ b/aider/main.py @@ -636,8 +636,6 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F analytics.event("launched") - # ai - if args.gui and not return_coder: if not check_streamlit_install(io): analytics.event("exit", reason="Streamlit not installed") @@ -850,6 +848,8 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F ) args.stream = False + map_tokens = args.map_tokens or main_model.get_repo_map_tokens() + try: coder = Coder.create( main_model=main_model, @@ -862,7 +862,7 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F auto_commits=args.auto_commits, dirty_commits=args.dirty_commits, dry_run=args.dry_run, - map_tokens=args.map_tokens, + map_tokens=map_tokens, verbose=args.verbose, stream=args.stream, use_git=args.git, diff --git a/aider/models.py b/aider/models.py index a596c604d..98a996a86 100644 --- a/aider/models.py +++ b/aider/models.py @@ -1177,6 +1177,15 @@ class Model(ModelSettings): return res + def get_repo_map_tokens(self): + map_tokens = 1024 + max_inp_tokens = self.info.get("max_input_tokens") + if max_inp_tokens: + map_tokens = max_inp_tokens / 8 + map_tokens = min(map_tokens, 4096) + max_tokens = max(map_tokens, 1024) + return map_tokens + def register_models(model_settings_fnames): files_loaded = []