pub struct ExplicitHandoffPolicy { /* private fields */ }Expand description
Explicit handoff policy - generates a handoff tool for specific target agent. The LLM can call this tool to explicitly handoff to the target agent.
Implementations§
Source§impl ExplicitHandoffPolicy
impl ExplicitHandoffPolicy
Sourcepub fn new(target_agent: impl Into<String>) -> Self
pub fn new(target_agent: impl Into<String>) -> Self
Create new explicit handoff policy for target agent.
Sourcepub fn with_tool_name(self, name: impl Into<String>) -> Self
pub fn with_tool_name(self, name: impl Into<String>) -> Self
Set custom tool name (default: “handoff_to_{target}”)
Sourcepub fn with_description(self, desc: impl Into<String>) -> Self
pub fn with_description(self, desc: impl Into<String>) -> Self
Set custom tool description
Trait Implementations§
Source§impl Clone for ExplicitHandoffPolicy
impl Clone for ExplicitHandoffPolicy
Source§fn clone(&self) -> ExplicitHandoffPolicy
fn clone(&self) -> ExplicitHandoffPolicy
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 Debug for ExplicitHandoffPolicy
impl Debug for ExplicitHandoffPolicy
Source§impl From<ExplicitHandoffPolicy> for AnyHandoffPolicy
impl From<ExplicitHandoffPolicy> for AnyHandoffPolicy
Source§fn from(policy: ExplicitHandoffPolicy) -> Self
fn from(policy: ExplicitHandoffPolicy) -> Self
Converts to this type from the input type.
Source§impl HandoffPolicy for ExplicitHandoffPolicy
impl HandoffPolicy for ExplicitHandoffPolicy
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 Freeze for ExplicitHandoffPolicy
impl RefUnwindSafe for ExplicitHandoffPolicy
impl Send for ExplicitHandoffPolicy
impl Sync for ExplicitHandoffPolicy
impl Unpin for ExplicitHandoffPolicy
impl UnsafeUnpin for ExplicitHandoffPolicy
impl UnwindSafe for ExplicitHandoffPolicy
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