pub struct IntraInvocationCompactor { /* private fields */ }Available on crate feature
runner only.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>,
) -> IntraInvocationCompactor
pub fn new( config: IntraCompactionConfig, summarizer: Arc<dyn BaseEventsSummarizer>, ) -> IntraInvocationCompactor
Create a new compactor with the given config and summarizer.
Sourcepub async fn maybe_compact(
&self,
events: &[Event],
) -> Result<Option<Vec<Event>>, AdkError>
pub async fn maybe_compact( &self, events: &[Event], ) -> Result<Option<Vec<Event>>, AdkError>
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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.