pub struct ModelCosts {
    pub version: u16,
    pub models: HashMap<Pattern, ModelCostV2>,
}Expand description
A mapping of AI model types (like GPT-4) to their respective costs.
This struct uses a dictionary-based cost structure with exact model ID keys and granular token pricing.
Example JSON:
{
  "version": 2,
  "models": {
    "gpt-4": {
      "inputPerToken": 0.03,
      "outputPerToken": 0.06,
      "outputReasoningPerToken": 0.12,
      "inputCachedPerToken": 0.015
    }
  }
}Fields§
§version: u16The version of the model cost struct
models: HashMap<Pattern, ModelCostV2>The mappings of model ID => cost as a dictionary
Implementations§
Source§impl ModelCosts
 
impl ModelCosts
Sourcepub fn is_enabled(&self) -> bool
 
pub fn is_enabled(&self) -> bool
false if measurement and metrics extraction should be skipped.
Sourcepub fn cost_per_token(&self, model_id: &str) -> Option<&ModelCostV2>
 
pub fn cost_per_token(&self, model_id: &str) -> Option<&ModelCostV2>
Gets the cost per token, if defined for the given model.
Trait Implementations§
Source§impl Clone for ModelCosts
 
impl Clone for ModelCosts
Source§fn clone(&self) -> ModelCosts
 
fn clone(&self) -> ModelCosts
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from 
source. Read moreSource§impl Debug for ModelCosts
 
impl Debug for ModelCosts
Source§impl Default for ModelCosts
 
impl Default for ModelCosts
Source§fn default() -> ModelCosts
 
fn default() -> ModelCosts
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for ModelCosts
 
impl<'de> Deserialize<'de> for ModelCosts
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>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ModelCosts
impl RefUnwindSafe for ModelCosts
impl Send for ModelCosts
impl Sync for ModelCosts
impl Unpin for ModelCosts
impl UnwindSafe for ModelCosts
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> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
§impl<T> FutureExt for T
 
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
 
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
 
fn with_current_context(self) -> WithContext<Self>
§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>
Converts 
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>
Converts 
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§impl<T> IntoRequest<T> for T
 
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
 
fn into_request(self) -> Request<T>
Wrap the input message 
T in a tonic::Request§impl<L> LayerExt<L> for L
 
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
    L: Layer<S>,
 
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
    L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].