Home / Function/ _find_token_based_cutoff() — langchain Function Reference

_find_token_based_cutoff() — langchain Function Reference

Architecture documentation for the _find_token_based_cutoff() function in summarization.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  82390de3_387f_3a0a_61c0_4eb09524c027["_find_token_based_cutoff()"]
  a622f56b_f697_966d_5bc7_095699ccca34["SummarizationMiddleware"]
  82390de3_387f_3a0a_61c0_4eb09524c027 -->|defined in| a622f56b_f697_966d_5bc7_095699ccca34
  1de03e59_b58a_edd7_ef83_95d7ab3cd1da["_determine_cutoff_index()"]
  1de03e59_b58a_edd7_ef83_95d7ab3cd1da -->|calls| 82390de3_387f_3a0a_61c0_4eb09524c027
  65ce74ec_3821_4fcb_dac2_deac6f30763f["_get_profile_limits()"]
  82390de3_387f_3a0a_61c0_4eb09524c027 -->|calls| 65ce74ec_3821_4fcb_dac2_deac6f30763f
  6bd2bf47_a4ef_fe6f_a2a2_89f8125a4eaa["_find_safe_cutoff_point()"]
  82390de3_387f_3a0a_61c0_4eb09524c027 -->|calls| 6bd2bf47_a4ef_fe6f_a2a2_89f8125a4eaa
  style 82390de3_387f_3a0a_61c0_4eb09524c027 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain_v1/langchain/agents/middleware/summarization.py lines 427–474

    def _find_token_based_cutoff(self, messages: list[AnyMessage]) -> int | None:
        """Find cutoff index based on target token retention."""
        if not messages:
            return 0

        kind, value = self.keep
        if kind == "fraction":
            max_input_tokens = self._get_profile_limits()
            if max_input_tokens is None:
                return None
            target_token_count = int(max_input_tokens * value)
        elif kind == "tokens":
            target_token_count = int(value)
        else:
            return None

        if target_token_count <= 0:
            target_token_count = 1

        if self.token_counter(messages) <= target_token_count:
            return 0

        # Use binary search to identify the earliest message index that keeps the
        # suffix within the token budget.
        left, right = 0, len(messages)
        cutoff_candidate = len(messages)
        max_iterations = len(messages).bit_length() + 1
        for _ in range(max_iterations):
            if left >= right:
                break

            mid = (left + right) // 2
            if self._partial_token_counter(messages[mid:]) <= target_token_count:
                cutoff_candidate = mid
                right = mid
            else:
                left = mid + 1

        if cutoff_candidate == len(messages):
            cutoff_candidate = left

        if cutoff_candidate >= len(messages):
            if len(messages) == 1:
                return 0
            cutoff_candidate = len(messages) - 1

        # Advance past any ToolMessages to avoid splitting AI/Tool pairs
        return self._find_safe_cutoff_point(messages, cutoff_candidate)

Domain

Subdomains

Frequently Asked Questions

What does _find_token_based_cutoff() do?
_find_token_based_cutoff() is a function in the langchain codebase, defined in libs/langchain_v1/langchain/agents/middleware/summarization.py.
Where is _find_token_based_cutoff() defined?
_find_token_based_cutoff() is defined in libs/langchain_v1/langchain/agents/middleware/summarization.py at line 427.
What does _find_token_based_cutoff() call?
_find_token_based_cutoff() calls 2 function(s): _find_safe_cutoff_point, _get_profile_limits.
What calls _find_token_based_cutoff()?
_find_token_based_cutoff() is called by 1 function(s): _determine_cutoff_index.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free