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§
Sourcefn model_name(&self) -> &str
fn model_name(&self) -> &str
Provider model name.
Sourcefn provider_name(&self) -> Option<&str>
fn provider_name(&self) -> Option<&str>
Provider name.
Sourcefn profile(&self) -> &ModelProfile
fn profile(&self) -> &ModelProfile
Model capability profile.
Sourcefn default_settings(&self) -> Option<&ModelSettings>
fn default_settings(&self) -> Option<&ModelSettings>
Default generation settings.
Sourcefn 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,
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§
Sourcefn start_run_session(&self) -> Box<dyn ModelRunSession + '_>
fn start_run_session(&self) -> Box<dyn ModelRunSession + '_>
Create a run-scoped session for agent loops that may issue multiple model requests.
Sourcefn 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<'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.
Sourcefn 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_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.
Sourcefn 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 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.
Sourcefn 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,
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".