feat(core): eager validation for trim_messages configuration #34528
+65
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Title
feat(core): eager validation for trim_messages configuration
Description
This PR addresses a TODO in langchain_core/messages/utils.py to ensure that validation errors for trim_messages arguments (such as invalid token_counter shortcuts or incompatible strategy parameters) are raised at initialization time rather than at runtime.
Issue Addressed
Previously, trim_messages was decorated with
@_runnable_support. When used to create a Runnable (i.e., called without messages), validation was deferred until invoke() was called. This delayed feedback for invalid configurations.Changes
@_runnable_supportdecorator from trim_messages.None.None, aRunnableLambdais returned with the already-validated arguments bound.ValueErroris raised at initialization.Verification
uv run --group test pytest tests/unit_tests/messages/test_utils.py