pub struct PricingTable { /* private fields */ }Expand description
The compiled pricing table (DW-079): provider model -> rates. Built at dataplane refresh from the published config; immutable once built. Stored on the dataplane behind an ArcSwap and swapped on reload, so a pricing change applies to the next request with no restart.
Implementations§
Source§impl PricingTable
impl PricingTable
Sourcepub fn compile(cfg: Option<&AiConfig>) -> Self
pub fn compile(cfg: Option<&AiConfig>) -> Self
Compile from the ai: config block’s pricing map. Absent or
empty pricing yields an empty table (every model is unknown ->
the caller applies the unknown-model policy).
Sourcepub fn has_pricing(&self, provider_model: &str) -> bool
pub fn has_pricing(&self, provider_model: &str) -> bool
Whether the table carries a pricing entry for provider_model.
Cheap lookup used by the dataplane to apply the unknown-model
policy (DW-AI-03) without computing the full cost.
Sourcepub fn cost_micros(
&self,
provider_model: &str,
usage: Usage,
batch: bool,
) -> Option<u64>
pub fn cost_micros( &self, provider_model: &str, usage: Usage, batch: bool, ) -> Option<u64>
Micro-USD for one call’s usage against this pricing table.
Returns None when the model has no pricing entry (the caller
applies the unknown-model policy); Some(cost) when it does.
Integer micro-USD, saturating. When batch is true, batch rates
replace the standard rates when declared. When
usage.cached_tokens is present and a cached rate is declared,
the cached portion of the prompt is priced at the cached rate
(not combined with batch — a batch request uses the batch rate
for all input tokens).
Trait Implementations§
Source§impl Clone for PricingTable
impl Clone for PricingTable
Source§fn clone(&self) -> PricingTable
fn clone(&self) -> PricingTable
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PricingTable
impl Debug for PricingTable
Source§impl Default for PricingTable
impl Default for PricingTable
Source§fn default() -> PricingTable
fn default() -> PricingTable
Auto Trait Implementations§
impl Freeze for PricingTable
impl RefUnwindSafe for PricingTable
impl Send for PricingTable
impl Sync for PricingTable
impl Unpin for PricingTable
impl UnwindSafe for PricingTable
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