feat: add `should_summarize_callback` param to LLMContextSummarizer
Problem Statement
Currently, LLMContextSummarizer._should_summarize() runs on every LLMFullResponseStartFrame and always performs token estimation (LLMContextSummarizationUtil.estimate_context_tokens()), even when thresholds are far from being reached. There is no way to override or customize this trigger logic without subclassing.
Proposed Solution
Add a should_summarize_callback parameter that, when
provided, replaces the built-in threshold checks entirely — giving
users full control over when summarization triggers and avoiding
unnecessary token estimation overhead.
Alternative Solutions
Current Workaround
Subclassing LLMContextSummarizer and overriding _should_summarize()
is technically possible since it uses a single underscore:
class CustomContextSummarizer(LLMContextSummarizer): def init(self, *, context, should_summarize_fn=None, **kwargs): super().init(context=context, **kwargs) self._should_summarize_fn = should_summarize_fn
def _should_summarize(self) -> bool:
if self._should_summarize_fn:
return self._should_summarize_fn(self._context)
return super()._should_summarize()Why This Is Not Ideal
_should_summarizeis a private method (single underscore), not a documented extension point- Subclassing is fragile — internal changes to the method signature or behavior in future versions would silently break it
- Users shouldn't need to subclass just to customize trigger logic
- No way to inject
CustomContextSummarizerintoLLMAssistantAggregatorwithout patching internals
Additional Context
No response
Would you be willing to help implement this feature?
- Yes, I'd like to contribute
- No, I'm just suggesting
Source: pipecat-ai/pipecat