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): def sanity_check_messages(messages):
"""Check if messages alternate between user and assistant roles. """Check if messages alternate between user and assistant roles.
System messages can be interspersed anywhere. System messages can be interspersed anywhere.
Also verifies the last non-system message is from the user.
Returns True if valid, False otherwise.""" Returns True if valid, False otherwise."""
last_role = None last_role = None
last_non_system_role = None
for msg in messages: for msg in messages:
role = msg.get("role") role = msg.get("role")
if role == "system": if role == "system":
continue continue
if last_role and role == last_role: if last_role and role == last_role:
return False return False
last_role = role 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( def send_completion(