pub struct CompactingHandoffPolicy<P> { /* private fields */ }Expand description
A handoff policy wrapper that applies conversation compaction during handoffs.
This policy wraps another handoff policy and adds automatic conversation compaction when messages are transferred between agents. This helps manage context length and can improve performance with long conversations.
Implementations§
Source§impl<P> CompactingHandoffPolicy<P>
impl<P> CompactingHandoffPolicy<P>
Sourcepub fn new(
inner: P,
compaction_policy: CompactionPolicy,
provider: Arc<Mutex<OpenAIProvider>>,
) -> Self
pub fn new( inner: P, compaction_policy: CompactionPolicy, provider: Arc<Mutex<OpenAIProvider>>, ) -> Self
Create a new compacting handoff policy wrapping the given policy.
Trait Implementations§
Source§impl<P: Clone> Clone for CompactingHandoffPolicy<P>
impl<P: Clone> Clone for CompactingHandoffPolicy<P>
Source§fn clone(&self) -> CompactingHandoffPolicy<P>
fn clone(&self) -> CompactingHandoffPolicy<P>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<P> HandoffPolicy for CompactingHandoffPolicy<P>where
P: HandoffPolicy + Clone,
impl<P> HandoffPolicy for CompactingHandoffPolicy<P>where
P: HandoffPolicy + Clone,
Source§fn handoff_tools(&self) -> Vec<ChatCompletionTool>
fn handoff_tools(&self) -> Vec<ChatCompletionTool>
Generate handoff tools that the LLM can call.
These tools will be injected into the agent’s available tools.
Source§fn handle_handoff_tool(
&self,
invocation: &ToolInvocation,
) -> Result<HandoffRequest, BoxError>
fn handle_handoff_tool( &self, invocation: &ToolInvocation, ) -> Result<HandoffRequest, BoxError>
Handle a handoff tool call by converting it to a HandoffRequest.
This is called when the LLM invokes one of the handoff tools.
Source§fn should_handoff(
&self,
state: &LoopState,
outcome: &StepOutcome,
) -> Option<HandoffRequest>
fn should_handoff( &self, state: &LoopState, outcome: &StepOutcome, ) -> Option<HandoffRequest>
Make runtime handoff decisions based on agent state and step outcome.
This allows for automatic handoffs based on conditions (e.g., no tools called).
Source§fn is_handoff_tool(&self, tool_name: &str) -> bool
fn is_handoff_tool(&self, tool_name: &str) -> bool
Check if a tool call is a handoff tool managed by this policy.
Source§fn transform_on_handoff(
&self,
messages: Vec<ChatCompletionRequestMessage>,
from_agent: &str,
to_agent: &str,
handoff: &HandoffRequest,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChatCompletionRequestMessage>, BoxError>> + Send>>
fn transform_on_handoff( &self, messages: Vec<ChatCompletionRequestMessage>, from_agent: &str, to_agent: &str, handoff: &HandoffRequest, ) -> Pin<Box<dyn Future<Output = Result<Vec<ChatCompletionRequestMessage>, BoxError>> + Send>>
Transform messages during handoff. Read more
Auto Trait Implementations§
impl<P> Freeze for CompactingHandoffPolicy<P>where
P: Freeze,
impl<P> !RefUnwindSafe for CompactingHandoffPolicy<P>
impl<P> Send for CompactingHandoffPolicy<P>where
P: Send,
impl<P> Sync for CompactingHandoffPolicy<P>where
P: Sync,
impl<P> Unpin for CompactingHandoffPolicy<P>where
P: Unpin,
impl<P> UnsafeUnpin for CompactingHandoffPolicy<P>where
P: UnsafeUnpin,
impl<P> !UnwindSafe for CompactingHandoffPolicy<P>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 more