pub trait StreamingProvider: Sized {
type Metadata;
Show 13 methods
// Required methods
fn name(&self) -> &'static str;
fn load_status(&self) -> String;
fn request_status(&self, model: &str) -> String;
fn from_env_or_dotenv(root: &Path) -> Result<Self>;
fn load_metadata(&self) -> Result<Self::Metadata>;
fn token_budget(
&self,
model: &str,
metadata: Option<&Self::Metadata>,
) -> u32;
fn serialized_request_body(
&self,
model: &str,
messages: &[ProviderMessage],
request: &StreamingRequest<'_>,
) -> Result<Vec<u8>>;
fn send_streaming_request(
&self,
model: &str,
messages: &[ProviderMessage],
request: &StreamingRequest<'_>,
) -> Result<Response<Body>>;
fn stream_format(&self, model: &str) -> Result<StreamFormat>;
fn request_error_message(error: &ProviderError) -> String;
fn is_retryable_request_error(error: &ProviderError) -> bool;
// Provided methods
fn metadata_loaded_event(
&self,
_metadata: &Self::Metadata,
) -> Option<AgentEvent> { ... }
fn metadata_status(
&self,
_model: &str,
_metadata: &Self::Metadata,
) -> Option<String> { ... }
}Expand description
Minimal provider trait used by the agent loop.
This trait intentionally stops at provider concerns: auth, metadata, request dispatch, retry/error policy, and which stream format to parse.
The agent loop still owns cancellation, tool dispatch, and transcript events.
Required Associated Types§
Required Methods§
fn name(&self) -> &'static str
fn load_status(&self) -> String
fn request_status(&self, model: &str) -> String
fn from_env_or_dotenv(root: &Path) -> Result<Self>
fn load_metadata(&self) -> Result<Self::Metadata>
fn token_budget(&self, model: &str, metadata: Option<&Self::Metadata>) -> u32
Sourcefn serialized_request_body(
&self,
model: &str,
messages: &[ProviderMessage],
request: &StreamingRequest<'_>,
) -> Result<Vec<u8>>
fn serialized_request_body( &self, model: &str, messages: &[ProviderMessage], request: &StreamingRequest<'_>, ) -> Result<Vec<u8>>
Serialize exactly the request body that the adapter sends.
fn send_streaming_request( &self, model: &str, messages: &[ProviderMessage], request: &StreamingRequest<'_>, ) -> Result<Response<Body>>
fn stream_format(&self, model: &str) -> Result<StreamFormat>
fn request_error_message(error: &ProviderError) -> String
fn is_retryable_request_error(error: &ProviderError) -> bool
Provided Methods§
fn metadata_loaded_event( &self, _metadata: &Self::Metadata, ) -> Option<AgentEvent>
fn metadata_status( &self, _model: &str, _metadata: &Self::Metadata, ) -> Option<String>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".