test_summarization_middleware_keep_messages() — langchain Function Reference
Architecture documentation for the test_summarization_middleware_keep_messages() function in test_summarization.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD fb2dd4c4_4892_2ad1_7d16_9b4de9730d37["test_summarization_middleware_keep_messages()"] 1911a463_b67d_0301_5ef1_5c535dafc14a["test_summarization.py"] fb2dd4c4_4892_2ad1_7d16_9b4de9730d37 -->|defined in| 1911a463_b67d_0301_5ef1_5c535dafc14a style fb2dd4c4_4892_2ad1_7d16_9b4de9730d37 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_summarization.py lines 530–579
def test_summarization_middleware_keep_messages() -> None:
"""Test SummarizationMiddleware with keep parameter specifying messages."""
# Test that summarization is triggered when message count reaches threshold
middleware = SummarizationMiddleware(
model=MockChatModel(), trigger=("messages", 5), keep=("messages", 2)
)
# Below threshold - no summarization
messages_below: list[AnyMessage] = [
HumanMessage(content="1"),
HumanMessage(content="2"),
HumanMessage(content="3"),
HumanMessage(content="4"),
]
state_below = AgentState[Any](messages=messages_below)
result = middleware.before_model(state_below, Runtime())
assert result is None
# At threshold - should trigger summarization
messages_at_threshold: list[AnyMessage] = [
HumanMessage(content="1"),
HumanMessage(content="2"),
HumanMessage(content="3"),
HumanMessage(content="4"),
HumanMessage(content="5"),
]
state_at = AgentState[Any](messages=messages_at_threshold)
result = middleware.before_model(state_at, Runtime())
assert result is not None
assert "messages" in result
expected_types = ["remove", "human", "human", "human"]
actual_types = [message.type for message in result["messages"]]
assert actual_types == expected_types
assert [message.content for message in result["messages"][2:]] == ["4", "5"]
# Above threshold - should also trigger summarization
messages_above: list[AnyMessage] = [*messages_at_threshold, HumanMessage(content="6")]
state_above = AgentState[Any](messages=messages_above)
result = middleware.before_model(state_above, Runtime())
assert result is not None
assert "messages" in result
expected_types = ["remove", "human", "human", "human"]
actual_types = [message.type for message in result["messages"]]
assert actual_types == expected_types
assert [message.content for message in result["messages"][2:]] == ["5", "6"]
# Test with both parameters disabled
middleware_disabled = SummarizationMiddleware(model=MockChatModel(), trigger=None)
result = middleware_disabled.before_model(state_above, Runtime())
assert result is None
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does test_summarization_middleware_keep_messages() do?
test_summarization_middleware_keep_messages() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_summarization.py.
Where is test_summarization_middleware_keep_messages() defined?
test_summarization_middleware_keep_messages() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_summarization.py at line 530.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free