mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-24 15:43:54 +00:00
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:
parent
7091a1a798
commit
121e79b1f0
@ -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()
|
||||
|
@ -332,6 +332,19 @@ def test_trim_messages_allow_partial_text_splitter() -> None:
|
||||
assert _MESSAGES_TO_TRIM == _MESSAGES_TO_TRIM_COPY
|
||||
|
||||
|
||||
def test_trim_messages_include_system_strategy_last_empty_messages() -> None:
|
||||
expected: list[BaseMessage] = []
|
||||
|
||||
actual = trim_messages(
|
||||
max_tokens=10,
|
||||
token_counter=dummy_token_counter,
|
||||
strategy="last",
|
||||
include_system=True,
|
||||
).invoke([])
|
||||
|
||||
assert actual == expected
|
||||
|
||||
|
||||
def test_trim_messages_invoke() -> None:
|
||||
actual = trim_messages(max_tokens=10, token_counter=dummy_token_counter).invoke(
|
||||
_MESSAGES_TO_TRIM
|
||||
|
Loading…
Reference in New Issue
Block a user