From 3a79b6230b0ff5173bf2b0f92dd08ee3c8300dcd Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 6 May 2024 09:23:37 -0700 Subject: [PATCH] aider: Added a --max-chat-history-tokens switch and passed it to ChatSummary in Coder. # Aider chat conversation: USER: add a --max-chat-history-tokens switch, pass it into Coder to `ChatSummary` ASSISTANT: Here are the changes to add a --max-chat-history-tokens switch and pass it to ChatSummary in Coder: aider/args.py ```python <<<<<<< SEARCH parser.add_argument( "--map-tokens", type=int, default=1024, help="Number of tokens to use for the repo map. Set to 0 to disable.", ) ======= parser.add_argument( "--map-tokens", type=int, default=1024, help="Number of tokens to use for the repo map. Set to 0 to disable.", ) parser.add_argument( "--max-chat-history-tokens", type=int, default=None, help="Maximum number of tokens to use for chat history. If not specified, uses the model's max_chat_history_tokens.", ) >>>>>>> REPLACE ``` aider/coders/base_coder.py ```python <<<<<<< SEARCH self.summarizer = ChatSummary( self.main_model.weak_model, self.main_model.max_chat_history_tokens, ) ======= max_chat_history_tokens = self.main_model.max_chat_history_tokens if kwargs.get("max_chat_history_tokens") is not None: max_chat_history_tokens = kwargs["max_chat_history_tokens"] self.summarizer = ChatSummary( self.main_model.weak_model, max_chat_history_tokens, ) >>>>>>> REPLACE ``` aider/main.py ```python <<<<<<< SEARCH map_tokens=args.map_tokens, ======= map_tokens=args.map_tokens, max_chat_history_tokens=args.max_chat_history_tokens, >>>>>>> REPLACE ``` This adds the new command line argument `--max-chat-history-tokens` which defaults to None. If not specified, it will use the model's default `max_chat_history_tokens`. It passes this argument from `main()` into the `Coder` constructor. In the `Coder` constructor, it checks if `max_chat_history_tokens` was provided in the `kwargs`. If so, it uses that value, otherwise it falls back to the model's default. Let me know if you have any other questions! ASSISTANT: Here are the changes to add a --max-chat-history-tokens switch and pass it to ChatSummary in Coder: aider/args.py ```python <<<<<<< SEARCH parser.add_argument( "--map-tokens", type=int, default=1024, help="Number of tokens to use for the repo map. Set to 0 to disable.", ) ======= parser.add_argument( "--map-tokens", type=int, default=1024, help="Number of tokens to use for the repo map. Set to 0 to disable.", ) parser.add_argument( "--max-chat-history-tokens", type=int, default=None, help="Maximum number of tokens to use for chat history. If not specified, uses the model's max_chat_history_tokens.", ) >>>>>>> REPLACE ``` aider/coders/base_coder.py ```python <<<<<<< SEARCH self.summarizer = ChatSummary( self.main_model.weak_model, self.main_model.max_chat_history_tokens, ) ======= max_chat_history_tokens = self.main_model.max_chat_history_tokens if kwargs.get("max_chat_history_tokens") is not None: max_chat_history_tokens = kwargs["max_chat_history_tokens"] self.summarizer = ChatSummary( self.main_model.weak_model, max_chat_history_tokens, ) >>>>>>> REPLACE ``` aider/main.py ```python <<<<<<< SEARCH map_tokens=args.map_tokens, ======= map_tokens=args.map_tokens, max_chat_history_tokens=args.max_chat_history_tokens, >>>>>>> REPLACE ``` This adds the new command line argument `--max-chat-history-tokens` which defaults to None. If not specified, it will use the model's default `max_chat_history_tokens`. It passes this argument from `main()` into the `Coder` constructor. In the `Coder` constructor, it checks if `max_chat_history_tokens` was provided in the `kwargs`. If so, it uses that value, otherwise it falls back to the model's default. Let me know if you have any other questions! USER: InvalidEditBlock: edit failed! aider/args.py does not contain the *exact chunk* of SEARCH lines you specified. Try again. DO NOT skip blank lines, comments, docstrings, etc! The SEARCH block needs to be EXACTLY the same as the lines in aider/args.py with nothing missing! aider/args.py does not contain these 6 exact lines in a row: ``` parser.add_argument( "--map-tokens", type=int, default=1024, help="Number of tokens to use for the repo map. Set to 0 to disable.", ) ``` ASSISTANT: I apologize for the mistake. Here is the corrected change for aider/args.py: aider/args.py ```python <<<<<<< SEARCH group.add_argument( "--map-tokens", type=int, default=1024, help="Max number of tokens to use for repo map, use 0 to disable (default: 1024)", ) ======= group.add_argument( "--map-tokens", type=int, default=1024, help="Max number of tokens to use for repo map, use 0 to disable (default: 1024)", ) group.add_argument( "--max-chat-history-tokens", type=int, default=None, help="Maximum number of tokens to use for chat history. If not specified, uses the model's max_chat_history_tokens.", ) >>>>>>> REPLACE ``` --- aider/args.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/aider/args.py b/aider/args.py index b298fd8f8..6a7d0c7b6 100644 --- a/aider/args.py +++ b/aider/args.py @@ -151,6 +151,12 @@ def get_parser(default_config_files, git_root): default=1024, help="Max number of tokens to use for repo map, use 0 to disable (default: 1024)", ) + group.add_argument( + "--max-chat-history-tokens", + type=int, + default=None, + help="Maximum number of tokens to use for chat history. If not specified, uses the model's max_chat_history_tokens.", + ) default_env_file = os.path.join(git_root, ".env") if git_root else ".env" group.add_argument( "--env-file",