diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index ad75e8ebe..2c811ae84 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -547,11 +547,21 @@ class Coder: total_tokens = 0 messages += self.cur_messages - messages[-1]["content"] += "\n\n" + self.fmt_system_prompt(self.gpt_prompts.system_reminder) + + final = messages[-1] # Add the reminder prompt if we still have room to include it. - # if total_tokens < self.main_model.info.get("max_input_tokens", 0): - # messages += reminder_message + if total_tokens < self.main_model.info.get("max_input_tokens", 0): + if self.main_model.accepts_multi_system_msgs: + messages += reminder_message + elif final["role"] == "user": + # stuff it into the user message + new_content = ( + final["content"] + + "\n\n" + + self.fmt_system_prompt(self.gpt_prompts.system_reminder) + ) + messages[-1] = dict(role=final["role"], content=new_content) return messages diff --git a/aider/models.py b/aider/models.py index 6c0e8b057..68af6e5db 100644 --- a/aider/models.py +++ b/aider/models.py @@ -235,6 +235,9 @@ class Model: self.send_undo_reply = True return # <-- + if "gpt-3.5" in model or "gpt-4" in model: + self.accepts_multi_system_msgs = True + # use the defaults if self.edit_format == "diff": self.use_repo_map = True