pub struct IntraInvocationCompactor { /* private fields */ }Expand description
Intra-invocation compactor that monitors token usage during a single invocation and triggers summarization when the context exceeds a threshold.
The compactor enforces at-most-once compaction per LLM call cycle via an
AtomicBool guard. Call reset_cycle at the start
of each LLM call to re-arm the guard.
§Example
ⓘ
use adk_runner::IntraInvocationCompactor;
use adk_core::IntraCompactionConfig;
let compactor = IntraInvocationCompactor::new(
IntraCompactionConfig::default(),
summarizer,
);
// Before each LLM call:
compactor.reset_cycle();
if let Some(compacted) = compactor.maybe_compact(&events).await? {
events = compacted;
}Implementations§
Source§impl IntraInvocationCompactor
impl IntraInvocationCompactor
Sourcepub fn new(
config: IntraCompactionConfig,
summarizer: Arc<dyn BaseEventsSummarizer>,
) -> Self
pub fn new( config: IntraCompactionConfig, summarizer: Arc<dyn BaseEventsSummarizer>, ) -> Self
Create a new compactor with the given config and summarizer.
Sourcepub async fn maybe_compact(
&self,
events: &[Event],
) -> Result<Option<Vec<Event>>>
pub async fn maybe_compact( &self, events: &[Event], ) -> Result<Option<Vec<Event>>>
Check if compaction is needed and perform it if so.
Returns Some(compacted_events) if compaction was triggered, or None
if no compaction was needed (below threshold or already compacted this cycle).
On summarizer error, logs a warning and returns None (uncompacted history
is used).
Sourcepub fn reset_cycle(&self)
pub fn reset_cycle(&self)
Reset the per-cycle guard. Call this at the start of each LLM call.
Auto Trait Implementations§
impl !Freeze for IntraInvocationCompactor
impl !RefUnwindSafe for IntraInvocationCompactor
impl Send for IntraInvocationCompactor
impl Sync for IntraInvocationCompactor
impl Unpin for IntraInvocationCompactor
impl UnsafeUnpin for IntraInvocationCompactor
impl !UnwindSafe for IntraInvocationCompactor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more