pub struct ConditionalAgent { /* private fields */ }Available on crate feature
agents only.Expand description
Rule-based conditional routing agent.
Executes one of two sub-agents based on a synchronous condition function.
For LLM-based intelligent routing, use crate::LlmConditionalAgent instead.
§Example
ⓘ
// Route based on session state flag
let router = ConditionalAgent::new(
"premium_router",
|ctx| ctx.session().state().get("is_premium").map(|v| v.as_bool()).flatten().unwrap_or(false),
Arc::new(premium_agent),
).with_else(Arc::new(basic_agent));Implementations§
Source§impl ConditionalAgent
impl ConditionalAgent
pub fn new<F>( name: impl Into<String>, condition: F, if_agent: Arc<dyn Agent>, ) -> ConditionalAgent
pub fn with_description(self, desc: impl Into<String>) -> ConditionalAgent
pub fn with_else(self, else_agent: Arc<dyn Agent>) -> ConditionalAgent
pub fn before_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>) -> Pin<Box<dyn Future<Output = Result<Option<Content>, AdkError>> + Send>> + Send + Sync>, ) -> ConditionalAgent
pub fn after_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>) -> Pin<Box<dyn Future<Output = Result<Option<Content>, AdkError>> + Send>> + Send + Sync>, ) -> ConditionalAgent
pub fn with_skills(self, index: SkillIndex) -> ConditionalAgent
pub fn with_auto_skills(self) -> Result<ConditionalAgent, AdkError>
pub fn with_skills_from_root( self, root: impl AsRef<Path>, ) -> Result<ConditionalAgent, AdkError>
pub fn with_skill_policy(self, policy: SelectionPolicy) -> ConditionalAgent
pub fn with_skill_budget(self, max_chars: usize) -> ConditionalAgent
Trait Implementations§
Source§impl Agent for ConditionalAgent
impl Agent for ConditionalAgent
fn name(&self) -> &str
fn description(&self) -> &str
fn sub_agents(&self) -> &[Arc<dyn Agent>]
fn run<'life0, 'async_trait>(
&'life0 self,
ctx: Arc<dyn InvocationContext>,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
ConditionalAgent: 'async_trait,
Auto Trait Implementations§
impl Freeze for ConditionalAgent
impl !RefUnwindSafe for ConditionalAgent
impl Send for ConditionalAgent
impl Sync for ConditionalAgent
impl Unpin for ConditionalAgent
impl UnsafeUnpin for ConditionalAgent
impl !UnwindSafe for ConditionalAgent
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.