Skip to main content

Classifier

Trait Classifier 

Source
pub trait Classifier<S = ()>: Send + Sync {
    // Required method
    fn score<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 self,
        state: &'life1 mut S,
        request: &'life2 mut Request,
        driver: Option<&'life3 Driver>,
    ) -> Pin<Box<dyn Future<Output = Result<(Classification, Option<Response>)>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait;

    // Provided method
    fn routing_tier(&self, _selected_model: &str) -> Option<&'static str> { ... }
}
Expand description

Scores targets from the current request and the composition’s state.

Required Methods§

Source

fn score<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, state: &'life1 mut S, request: &'life2 mut Request, driver: Option<&'life3 Driver>, ) -> Pin<Box<dyn Future<Output = Result<(Classification, Option<Response>)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Score the classifier’s targets given the current state and request.

When present, driver lets a classifier offload model calls. It is None when the classifier is evaluated outside an algorithm run.

request is borrowed mutably so a classifier may rewrite it in place — inject a system prompt, drop tools, compact history. The edit is not scoped to this call: later classifiers in the cascade score the rewritten request, and it is the rewritten request that is finally sent to the selected model. Most classifiers only read it.

Provided Methods§

Source

fn routing_tier(&self, _selected_model: &str) -> Option<&'static str>

Stable tier represented by selected_model, when this classifier defines one.

Implementors§

Source§

impl Classifier<State> for LlmTaskClassifier

Source§

impl Classifier<State> for StageClassifier

Source§

impl<S> Classifier<S> for AffinityRouter
where S: Send + 'static,

Source§

impl<S> Classifier<S> for RandomClassifier
where S: Send + 'static,

Source§

impl<S> Classifier<S> for SubagentOverride
where S: Send + 'static,