pub struct AiFallbackChainPolicy {
pub cheap: String,
pub escalate_to: String,
pub classifier_url: String,
pub classifier_model: String,
pub threshold: f64,
pub timeout_ms: u64,
pub api_key: Option<String>,
}Expand description
A fallback-chain routing policy (DW-085 kind: fallback_chain):
cheap-model-first with complexity-signal escalation. The
cheap and escalate_to fields name OTHER model aliases (plain
chain/canary aliases — a policy composes over DW-076 routing, so
it has no provider/model pair of its own).
Fields§
§cheap: StringThe model alias to use for simple prompts (the cheap model).
Must reference an existing alias in ai.models (validation
rejects a typo at publish time).
escalate_to: StringThe model alias to escalate to for complex prompts. Must
reference an existing alias in ai.models.
classifier_url: StringThe URL of the external classifier service. The service must
accept a POST with {"model": "...", "input": "..."} and
return {"data": [{"score": 0.0-1.0}]} (the OpenAI-compatible
embeddings response shape, with score in place of
embedding). Validation rejects an empty or non-http(s) URL.
classifier_model: StringThe model name to pass to the classifier service in the
model field of the POST body.
threshold: f64Complexity score threshold (0.0 to 1.0, inclusive). A score at or above the threshold triggers escalation to the costlier model; a score below the threshold uses the cheap model. Default 0.5.
timeout_ms: u64Timeout for the classifier HTTP call in milliseconds. Default 1000 (1 second). Validation rejects 0.
api_key: Option<String>Optional API key for the classifier service (sent as
Authorization: Bearer <key>). Can be a ${...} secret
reference (resolved at config-compile time). Inline values
are redacted in config echoes; never logged.
Trait Implementations§
Source§impl Clone for AiFallbackChainPolicy
impl Clone for AiFallbackChainPolicy
Source§fn clone(&self) -> AiFallbackChainPolicy
fn clone(&self) -> AiFallbackChainPolicy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AiFallbackChainPolicy
impl Debug for AiFallbackChainPolicy
Source§impl<'de> Deserialize<'de> for AiFallbackChainPolicy
impl<'de> Deserialize<'de> for AiFallbackChainPolicy
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 AiFallbackChainPolicy
impl JsonSchema for AiFallbackChainPolicy
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 AiFallbackChainPolicy
impl PartialEq for AiFallbackChainPolicy
Source§impl Serialize for AiFallbackChainPolicy
impl Serialize for AiFallbackChainPolicy
impl StructuralPartialEq for AiFallbackChainPolicy
Auto Trait Implementations§
impl Freeze for AiFallbackChainPolicy
impl RefUnwindSafe for AiFallbackChainPolicy
impl Send for AiFallbackChainPolicy
impl Sync for AiFallbackChainPolicy
impl Unpin for AiFallbackChainPolicy
impl UnwindSafe for AiFallbackChainPolicy
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