__init__() — langchain Function Reference
Architecture documentation for the __init__() function in summarization.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 27600a06_3568_45a8_ef8e_efda7e6f1a1a["__init__()"] a622f56b_f697_966d_5bc7_095699ccca34["SummarizationMiddleware"] 27600a06_3568_45a8_ef8e_efda7e6f1a1a -->|defined in| a622f56b_f697_966d_5bc7_095699ccca34 6a479650_75aa_0aa7_e9b5_b9a03e6639cf["_validate_context_size()"] 27600a06_3568_45a8_ef8e_efda7e6f1a1a -->|calls| 6a479650_75aa_0aa7_e9b5_b9a03e6639cf 65ce74ec_3821_4fcb_dac2_deac6f30763f["_get_profile_limits()"] 27600a06_3568_45a8_ef8e_efda7e6f1a1a -->|calls| 65ce74ec_3821_4fcb_dac2_deac6f30763f 1c1e5e7f_dd6a_7ef9_53fd_a81f47694626["_get_approximate_token_counter()"] 27600a06_3568_45a8_ef8e_efda7e6f1a1a -->|calls| 1c1e5e7f_dd6a_7ef9_53fd_a81f47694626 style 27600a06_3568_45a8_ef8e_efda7e6f1a1a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/langchain/agents/middleware/summarization.py lines 161–290
def __init__(
self,
model: str | BaseChatModel,
*,
trigger: ContextSize | list[ContextSize] | None = None,
keep: ContextSize = ("messages", _DEFAULT_MESSAGES_TO_KEEP),
token_counter: TokenCounter = count_tokens_approximately,
summary_prompt: str = DEFAULT_SUMMARY_PROMPT,
trim_tokens_to_summarize: int | None = _DEFAULT_TRIM_TOKEN_LIMIT,
**deprecated_kwargs: Any,
) -> None:
"""Initialize summarization middleware.
Args:
model: The language model to use for generating summaries.
trigger: One or more thresholds that trigger summarization.
Provide a single
[`ContextSize`][langchain.agents.middleware.summarization.ContextSize]
tuple or a list of tuples, in which case summarization runs when any
threshold is met.
!!! example
```python
# Trigger summarization when 50 messages is reached
("messages", 50)
# Trigger summarization when 3000 tokens is reached
("tokens", 3000)
# Trigger summarization either when 80% of model's max input tokens
# is reached or when 100 messages is reached (whichever comes first)
[("fraction", 0.8), ("messages", 100)]
```
See [`ContextSize`][langchain.agents.middleware.summarization.ContextSize]
for more details.
keep: Context retention policy applied after summarization.
Provide a [`ContextSize`][langchain.agents.middleware.summarization.ContextSize]
tuple to specify how much history to preserve.
Defaults to keeping the most recent `20` messages.
Does not support multiple values like `trigger`.
!!! example
```python
# Keep the most recent 20 messages
("messages", 20)
# Keep the most recent 3000 tokens
("tokens", 3000)
# Keep the most recent 30% of the model's max input tokens
("fraction", 0.3)
```
token_counter: Function to count tokens in messages.
summary_prompt: Prompt template for generating summaries.
trim_tokens_to_summarize: Maximum tokens to keep when preparing messages for
the summarization call.
Pass `None` to skip trimming entirely.
"""
# Handle deprecated parameters
if "max_tokens_before_summary" in deprecated_kwargs:
value = deprecated_kwargs["max_tokens_before_summary"]
warnings.warn(
"max_tokens_before_summary is deprecated. Use trigger=('tokens', value) instead.",
DeprecationWarning,
stacklevel=2,
)
if trigger is None and value is not None:
trigger = ("tokens", value)
if "messages_to_keep" in deprecated_kwargs:
value = deprecated_kwargs["messages_to_keep"]
warnings.warn(
"messages_to_keep is deprecated. Use keep=('messages', value) instead.",
Domain
Subdomains
Source
Frequently Asked Questions
What does __init__() do?
__init__() is a function in the langchain codebase, defined in libs/langchain_v1/langchain/agents/middleware/summarization.py.
Where is __init__() defined?
__init__() is defined in libs/langchain_v1/langchain/agents/middleware/summarization.py at line 161.
What does __init__() call?
__init__() calls 3 function(s): _get_approximate_token_counter, _get_profile_limits, _validate_context_size.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free