before_model() — langchain Function Reference
Architecture documentation for the before_model() function in summarization.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 833a9d39_5a26_a8d9_09c7_26020ad85079["before_model()"] a622f56b_f697_966d_5bc7_095699ccca34["SummarizationMiddleware"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|defined in| a622f56b_f697_966d_5bc7_095699ccca34 bfb2ef4c_03ef_fa38_3c61_04aca1af6ed5["_ensure_message_ids()"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|calls| bfb2ef4c_03ef_fa38_3c61_04aca1af6ed5 bbfcb116_81e5_842d_5e50_6e8f55a69bc4["_should_summarize()"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|calls| bbfcb116_81e5_842d_5e50_6e8f55a69bc4 1de03e59_b58a_edd7_ef83_95d7ab3cd1da["_determine_cutoff_index()"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|calls| 1de03e59_b58a_edd7_ef83_95d7ab3cd1da 8f5f7cdc_45ed_18ec_b82b_23e574f9bd4c["_partition_messages()"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|calls| 8f5f7cdc_45ed_18ec_b82b_23e574f9bd4c 40a663ff_b47c_1a50_7cb4_9d28251f14e6["_create_summary()"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|calls| 40a663ff_b47c_1a50_7cb4_9d28251f14e6 92208811_f4d6_b832_02e2_b45867badb82["_build_new_messages()"] 833a9d39_5a26_a8d9_09c7_26020ad85079 -->|calls| 92208811_f4d6_b832_02e2_b45867badb82 style 833a9d39_5a26_a8d9_09c7_26020ad85079 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/langchain/agents/middleware/summarization.py lines 293–328
def before_model(
self, state: AgentState[Any], runtime: Runtime[ContextT]
) -> dict[str, Any] | None:
"""Process messages before model invocation, potentially triggering summarization.
Args:
state: The agent state.
runtime: The runtime environment.
Returns:
An updated state with summarized messages if summarization was performed.
"""
messages = state["messages"]
self._ensure_message_ids(messages)
total_tokens = self.token_counter(messages)
if not self._should_summarize(messages, total_tokens):
return None
cutoff_index = self._determine_cutoff_index(messages)
if cutoff_index <= 0:
return None
messages_to_summarize, preserved_messages = self._partition_messages(messages, cutoff_index)
summary = self._create_summary(messages_to_summarize)
new_messages = self._build_new_messages(summary)
return {
"messages": [
RemoveMessage(id=REMOVE_ALL_MESSAGES),
*new_messages,
*preserved_messages,
]
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does before_model() do?
before_model() is a function in the langchain codebase, defined in libs/langchain_v1/langchain/agents/middleware/summarization.py.
Where is before_model() defined?
before_model() is defined in libs/langchain_v1/langchain/agents/middleware/summarization.py at line 293.
What does before_model() call?
before_model() calls 6 function(s): _build_new_messages, _create_summary, _determine_cutoff_index, _ensure_message_ids, _partition_messages, _should_summarize.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free