core: Fix IndexError when trim_messages invoked with empty list (#26896)

This prevents `trim_messages` from raising an `IndexError` when invoked
with `include_system=True`, `strategy="last"`, and an empty message
list.

Fixes #26895

Dependencies: none
This commit is contained in:
Julius Stopforth
2024-09-26 17:29:58 +02:00
committed by GitHub
parent 7091a1a798
commit 121e79b1f0
2 changed files with 16 additions and 0 deletions

View File

@@ -819,6 +819,7 @@ def trim_messages(
def list_token_counter(messages: Sequence[BaseMessage]) -> int:
return sum(token_counter(msg) for msg in messages) # type: ignore[arg-type, misc]
else:
list_token_counter = token_counter # type: ignore[assignment]
else:
@@ -956,6 +957,8 @@ def _last_max_tokens(
] = None,
) -> list[BaseMessage]:
messages = list(messages)
if len(messages) == 0:
return []
if end_on:
while messages and not _is_message_type(messages[-1], end_on):
messages.pop()