pub struct ConditionalAgent { /* private fields */ }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>, ) -> Self
pub fn with_description(self, desc: impl Into<String>) -> Self
pub fn with_else(self, else_agent: Arc<dyn Agent>) -> Self
pub fn before_callback(self, callback: BeforeAgentCallback) -> Self
pub fn after_callback(self, callback: AfterAgentCallback) -> Self
pub fn with_skills(self, index: SkillIndex) -> Self
pub fn with_auto_skills(self) -> Result<Self>
pub fn with_skills_from_root(self, root: impl AsRef<Path>) -> Result<Self>
pub fn with_skill_policy(self, policy: SelectionPolicy) -> Self
pub fn with_skill_budget(self, max_chars: usize) -> Self
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<EventStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: '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> 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::Request