diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index fed054920..bf82b9ee6 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -821,20 +821,20 @@ class Coder: except KeyboardInterrupt: interrupted = True break - except litellm.ContextWindowExceededError as cwe_err: - # the input is overflowing the context window + except litellm.ContextWindowExceededError: + # The input is overflowing the context window! exhausted = True - dump(cwe_err) break except litellm.exceptions.BadRequestError as br_err: - dump(br_err) self.io.tool_error(f"BadRequestError: {br_err}") return - except FinishReasonLength as frl_err: - # finish_reason=length means 4k output limit? - dump(frl_err) - # exhausted = True + except FinishReasonLength: + # We hit the 4k output limit! + if not self.main_model.can_prefill: + exhausted = True + break + # Use prefill to continue the response multi_response_content += self.partial_response_content if messages[-1]["role"] == "assistant": messages[-1]["content"] = multi_response_content diff --git a/aider/models.py b/aider/models.py index be2ec9149..5f211518a 100644 --- a/aider/models.py +++ b/aider/models.py @@ -167,6 +167,7 @@ MODEL_SETTINGS = [ weak_model_name="claude-3-haiku-20240307", use_repo_map=True, send_undo_reply=True, + can_prefill=True, ), ModelSettings( "openrouter/anthropic/claude-3-opus", @@ -174,6 +175,7 @@ MODEL_SETTINGS = [ weak_model_name="openrouter/anthropic/claude-3-haiku", use_repo_map=True, send_undo_reply=True, + can_prefill=True, ), ModelSettings( "claude-3-sonnet-20240229", @@ -187,6 +189,7 @@ MODEL_SETTINGS = [ weak_model_name="claude-3-haiku-20240307", use_repo_map=True, examples_as_sys_msg=True, + can_prefill=True, ), ModelSettings( "anthropic/claude-3-5-sonnet-20240620", @@ -194,6 +197,7 @@ MODEL_SETTINGS = [ weak_model_name="claude-3-haiku-20240307", use_repo_map=True, examples_as_sys_msg=True, + can_prefill=True, ), ModelSettings( "openrouter/anthropic/claude-3.5-sonnet", @@ -201,6 +205,7 @@ MODEL_SETTINGS = [ weak_model_name="openrouter/anthropic/claude-3-haiku-20240307", use_repo_map=True, examples_as_sys_msg=True, + can_prefill=True, ), # Vertex AI Claude models ModelSettings( @@ -208,6 +213,8 @@ MODEL_SETTINGS = [ "diff", weak_model_name="vertex_ai/claude-3-haiku@20240307", use_repo_map=True, + examples_as_sys_msg=True, + can_prefill=True, ), ModelSettings( "vertex_ai/claude-3-opus@20240229", @@ -215,11 +222,13 @@ MODEL_SETTINGS = [ weak_model_name="vertex_ai/claude-3-haiku@20240307", use_repo_map=True, send_undo_reply=True, + can_prefill=True, ), ModelSettings( "vertex_ai/claude-3-sonnet@20240229", "whole", weak_model_name="vertex_ai/claude-3-haiku@20240307", + can_prefill=True, ), # Cohere ModelSettings( @@ -377,6 +386,16 @@ class Model: if "gpt-3.5" in model or "gpt-4" in model: self.reminder_as_sys_msg = True + if "anthropic" in model: + self.can_prefill = True + + if "3.5-sonnet" in model or "3-5-sonnet" in model: + self.edit_format = "diff" + self.use_repo_map = True + self.examples_as_sys_msg = True + self.can_prefill = (True,) + self.can_prefill = True + # use the defaults if self.edit_format == "diff": self.use_repo_map = True