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§
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§
Sourcefn 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 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.
Sourcefn pricing(&self) -> Option<Pricing>
fn pricing(&self) -> Option<Pricing>
Prices for this model, if configured. Required for USD budgets.
Sourcefn cost_usd(&self, response: &ModelResponse) -> Option<f64>
fn cost_usd(&self, response: &ModelResponse) -> Option<f64>
Cost of a response in USD, if pricing is configured.
Sourcefn max_call_cost(&self, input_tokens: u64, output_tokens: u64) -> Option<f64>
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.
Sourcefn unpriced_models(&self) -> Vec<String>
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".