Skip to main content

Model

Trait Model 

Source
pub trait Model: Send + Sync {
    // Required methods
    fn id(&self) -> String;
    fn complete<'life0, 'life1, 'async_trait>(
        &'life0 self,
        request: &'life1 ModelRequest,
    ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;

    // Provided methods
    fn stream<'life0, 'life1, 'async_trait>(
        &'life0 self,
        request: &'life1 ModelRequest,
    ) -> Pin<Box<dyn Future<Output = Result<ModelStream, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn pricing(&self) -> Option<Pricing> { ... }
    fn cost_usd(&self, response: &ModelResponse) -> Option<f64> { ... }
    fn max_call_cost(
        &self,
        input_tokens: u64,
        output_tokens: u64,
    ) -> Option<f64> { ... }
    fn unpriced_models(&self) -> Vec<String> { ... }
}

Required Methods§

Source

fn id(&self) -> String

Identifier such as anthropic:claude-opus-5-5.

Source

fn complete<'life0, 'life1, 'async_trait>( &'life0 self, request: &'life1 ModelRequest, ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Provided Methods§

Source

fn stream<'life0, 'life1, 'async_trait>( &'life0 self, request: &'life1 ModelRequest, ) -> Pin<Box<dyn Future<Output = Result<ModelStream, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Stream the response as it is generated. The stream always ends with StreamEvent::Completed carrying the full response. The default implementation calls Model::complete and replays it as deltas.

Source

fn pricing(&self) -> Option<Pricing>

Prices for this model, if configured. Required for USD budgets.

Source

fn cost_usd(&self, response: &ModelResponse) -> Option<f64>

Cost of a response in USD, if pricing is configured.

Source

fn max_call_cost(&self, input_tokens: u64, output_tokens: u64) -> Option<f64>

Upper bound in USD for one call with this many input and output tokens, counting every attempt a composite model might make. Input is priced at the higher of the input and cache-write rates.

Source

fn unpriced_models(&self) -> Vec<String>

Ids of models (including any inside a composite) that have no pricing. A USD budget cannot be enforced while this is non-empty.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<M: Model + ?Sized> Model for Arc<M>

Source§

fn id(&self) -> String

Source§

fn complete<'life0, 'life1, 'async_trait>( &'life0 self, request: &'life1 ModelRequest, ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn stream<'life0, 'life1, 'async_trait>( &'life0 self, request: &'life1 ModelRequest, ) -> Pin<Box<dyn Future<Output = Result<ModelStream, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn pricing(&self) -> Option<Pricing>

Source§

fn cost_usd(&self, response: &ModelResponse) -> Option<f64>

Source§

fn unpriced_models(&self) -> Vec<String>

Source§

fn max_call_cost(&self, input_tokens: u64, output_tokens: u64) -> Option<f64>

Implementors§