test_summarization_middleware_profile_inference_triggers_summary() — langchain Function Reference
Architecture documentation for the test_summarization_middleware_profile_inference_triggers_summary() function in test_summarization.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 34aa2d9e_92f0_1dc5_8296_b283b6a6b2d8["test_summarization_middleware_profile_inference_triggers_summary()"] 1911a463_b67d_0301_5ef1_5c535dafc14a["test_summarization.py"] 34aa2d9e_92f0_1dc5_8296_b283b6a6b2d8 -->|defined in| 1911a463_b67d_0301_5ef1_5c535dafc14a style 34aa2d9e_92f0_1dc5_8296_b283b6a6b2d8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_summarization.py lines 240–343
def test_summarization_middleware_profile_inference_triggers_summary() -> None:
"""Ensure automatic profile inference triggers summarization when limits are exceeded."""
def token_counter(messages: Iterable[MessageLikeRepresentation]) -> int:
return len(list(messages)) * 200
middleware = SummarizationMiddleware(
model=ProfileChatModel(),
trigger=("fraction", 0.81),
keep=("fraction", 0.5),
token_counter=token_counter,
)
state = AgentState[Any](
messages=[
HumanMessage(content="Message 1"),
AIMessage(content="Message 2"),
HumanMessage(content="Message 3"),
AIMessage(content="Message 4"),
]
)
# Test we don't engage summarization
# we have total_tokens = 4 * 200 = 800
# and max_input_tokens = 1000
# since 0.81 * 1000 == 810 > 800 -> summarization not triggered
result = middleware.before_model(state, Runtime())
assert result is None
# Engage summarization
# since 0.80 * 1000 == 800 <= 800
middleware = SummarizationMiddleware(
model=ProfileChatModel(),
trigger=("fraction", 0.80),
keep=("fraction", 0.5),
token_counter=token_counter,
)
result = middleware.before_model(state, Runtime())
assert result is not None
assert isinstance(result["messages"][0], RemoveMessage)
summary_message = result["messages"][1]
assert isinstance(summary_message, HumanMessage)
assert summary_message.text.startswith("Here is a summary of the conversation")
assert len(result["messages"][2:]) == 2 # Preserved messages
assert [message.content for message in result["messages"][2:]] == [
"Message 3",
"Message 4",
]
# With keep=("fraction", 0.6) the target token allowance becomes 600,
# so the cutoff shifts to keep the last three messages instead of two.
middleware = SummarizationMiddleware(
model=ProfileChatModel(),
trigger=("fraction", 0.80),
keep=("fraction", 0.6),
token_counter=token_counter,
)
result = middleware.before_model(state, Runtime())
assert result is not None
assert [message.content for message in result["messages"][2:]] == [
"Message 2",
"Message 3",
"Message 4",
]
# Once keep=("fraction", 0.8) the inferred limit equals the full
# context (target tokens = 800), so token-based retention keeps everything
# and summarization is skipped entirely.
middleware = SummarizationMiddleware(
model=ProfileChatModel(),
trigger=("fraction", 0.80),
keep=("fraction", 0.8),
token_counter=token_counter,
)
assert middleware.before_model(state, Runtime()) is None
# Test with tokens_to_keep as absolute int value
middleware_int = SummarizationMiddleware(
model=ProfileChatModel(),
trigger=("fraction", 0.80),
keep=("tokens", 400), # Keep exactly 400 tokens (2 messages)
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does test_summarization_middleware_profile_inference_triggers_summary() do?
test_summarization_middleware_profile_inference_triggers_summary() 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_profile_inference_triggers_summary() defined?
test_summarization_middleware_profile_inference_triggers_summary() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_summarization.py at line 240.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free