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_summarize is 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
CustomContextSummarizer into
LLMAssistantAggregator without patching internals
Additional Context
No response
Would you be willing to help implement this feature?
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_callbackparameter that, whenprovided, 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
LLMContextSummarizerand 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
Why This Is Not Ideal
_should_summarizeis a private method (single underscore),not a documented extension point
signature or behavior in future versions would silently break it
CustomContextSummarizerintoLLMAssistantAggregatorwithout patching internalsAdditional Context
No response
Would you be willing to help implement this feature?