feat: verify last non-system message is from user in sanity_check_messages

This commit is contained in:
Paul Gauthier (aider) 2025-01-20 08:35:21 -08:00
parent fc431df2b4
commit 7e5e180000

View file

@ -19,16 +19,24 @@ RETRY_TIMEOUT = 60
def sanity_check_messages(messages):
"""Check if messages alternate between user and assistant roles.
System messages can be interspersed anywhere.
Also verifies the last non-system message is from the user.
Returns True if valid, False otherwise."""
last_role = None
last_non_system_role = None
for msg in messages:
role = msg.get("role")
if role == "system":
continue
if last_role and role == last_role:
return False
last_role = role
return True
last_non_system_role = role
# Ensure last non-system message is from user
return last_non_system_role == "user"
def send_completion(