Skip to main content

ModelAdapter

Trait ModelAdapter 

Source
pub trait ModelAdapter: Send + Sync {
    // Required methods
    fn model_name(&self) -> &str;
    fn provider_name(&self) -> Option<&str>;
    fn profile(&self) -> &ModelProfile;
    fn default_settings(&self) -> Option<&ModelSettings>;
    fn request<'life0, 'async_trait>(
        &'life0 self,
        messages: Vec<ModelMessage>,
        settings: Option<ModelSettings>,
        params: ModelRequestParameters,
        context: ModelRequestContext,
    ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;

    // Provided methods
    fn start_run_session(&self) -> Box<dyn ModelRunSession + '_> { ... }
    fn request_stream<'life0, 'async_trait>(
        &'life0 self,
        messages: Vec<ModelMessage>,
        settings: Option<ModelSettings>,
        params: ModelRequestParameters,
        context: ModelRequestContext,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<ModelResponseStreamEvent>, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn request_stream_final<'life0, 'async_trait>(
        &'life0 self,
        messages: Vec<ModelMessage>,
        settings: Option<ModelSettings>,
        params: ModelRequestParameters,
        context: ModelRequestContext,
    ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn request_stream_incremental<'life0, 'async_trait>(
        &'life0 self,
        messages: Vec<ModelMessage>,
        settings: Option<ModelSettings>,
        params: ModelRequestParameters,
        context: ModelRequestContext,
    ) -> Pin<Box<dyn Future<Output = Result<ModelResponseEventStream, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn count_tokens<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 self,
        _messages: &'life1 [ModelMessage],
        _settings: Option<&'life2 ModelSettings>,
        _params: &'life3 ModelRequestParameters,
    ) -> Pin<Box<dyn Future<Output = Result<Usage, ModelError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait { ... }
}
Expand description

Provider-neutral model adapter.

Required Methods§

Source

fn model_name(&self) -> &str

Provider model name.

Source

fn provider_name(&self) -> Option<&str>

Provider name.

Source

fn profile(&self) -> &ModelProfile

Model capability profile.

Source

fn default_settings(&self) -> Option<&ModelSettings>

Default generation settings.

Source

fn request<'life0, 'async_trait>( &'life0 self, messages: Vec<ModelMessage>, settings: Option<ModelSettings>, params: ModelRequestParameters, context: ModelRequestContext, ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Perform a complete model request.

Provided Methods§

Source

fn start_run_session(&self) -> Box<dyn ModelRunSession + '_>

Create a run-scoped session for agent loops that may issue multiple model requests.

Source

fn request_stream<'life0, 'async_trait>( &'life0 self, messages: Vec<ModelMessage>, settings: Option<ModelSettings>, params: ModelRequestParameters, context: ModelRequestContext, ) -> Pin<Box<dyn Future<Output = Result<Vec<ModelResponseStreamEvent>, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stream a model request as canonical response part deltas.

Source

fn request_stream_final<'life0, 'async_trait>( &'life0 self, messages: Vec<ModelMessage>, settings: Option<ModelSettings>, params: ModelRequestParameters, context: ModelRequestContext, ) -> Pin<Box<dyn Future<Output = Result<ModelResponse, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stream a model request and return the assembled final response.

Source

fn request_stream_incremental<'life0, 'async_trait>( &'life0 self, messages: Vec<ModelMessage>, settings: Option<ModelSettings>, params: ModelRequestParameters, context: ModelRequestContext, ) -> Pin<Box<dyn Future<Output = Result<ModelResponseEventStream, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stream a model request and yield canonical events as they arrive.

Source

fn count_tokens<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, _messages: &'life1 [ModelMessage], _settings: Option<&'life2 ModelSettings>, _params: &'life3 ModelRequestParameters, ) -> Pin<Box<dyn Future<Output = Result<Usage, ModelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Count tokens for a request where provider support exists.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§