pub enum AiRoutingPolicy {
FallbackChain(AiFallbackChainPolicy),
LatencyCost(AiLatencyCostPolicy),
}Expand description
A routing policy (DW-085 ai.routing_policies.<name>):
within-request escalation or latency-vs-cost selection. Keyed by
name in ai.routing_policies. An alias declares
routing_policy: <name> to be served by one; the policy is
evaluated per request and composes over DW-076 routing (the
candidate aliases it names are themselves plain chain/canary
aliases). Internally tagged by kind so the YAML shape is:
routing_policies:
my-policy:
kind: fallback_chain
cheap: cheap-model
escalate_to: expensive-model
classifier_url: http://...
classifier_model: complexityVariants§
FallbackChain(AiFallbackChainPolicy)
Cheap-model-first with complexity-signal escalation (DW-085). Calls an external classifier service to estimate prompt complexity; simple prompts (score < threshold) use the cheap model, complex prompts (score >= threshold) escalate to the costlier model. On classifier error, fails open to the cheap model (the safe default).
LatencyCost(AiLatencyCostPolicy)
Latency-vs-cost routing (DW-085): static config-based selection. The operator declares cost/latency scores per candidate and a preference; the policy picks deterministically at compile time (no runtime metrics needed).
Trait Implementations§
Source§impl Clone for AiRoutingPolicy
impl Clone for AiRoutingPolicy
Source§fn clone(&self) -> AiRoutingPolicy
fn clone(&self) -> AiRoutingPolicy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AiRoutingPolicy
impl Debug for AiRoutingPolicy
Source§impl<'de> Deserialize<'de> for AiRoutingPolicy
impl<'de> Deserialize<'de> for AiRoutingPolicy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for AiRoutingPolicy
impl JsonSchema for AiRoutingPolicy
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for AiRoutingPolicy
impl PartialEq for AiRoutingPolicy
Source§impl Serialize for AiRoutingPolicy
impl Serialize for AiRoutingPolicy
impl StructuralPartialEq for AiRoutingPolicy
Auto Trait Implementations§
impl Freeze for AiRoutingPolicy
impl RefUnwindSafe for AiRoutingPolicy
impl Send for AiRoutingPolicy
impl Sync for AiRoutingPolicy
impl Unpin for AiRoutingPolicy
impl UnwindSafe for AiRoutingPolicy
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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