Skip to main content

ProtocolModelClient

Struct ProtocolModelClient 

Source
pub struct ProtocolModelClient { /* private fields */ }
Expand description

Shared production model client for a supported wire protocol family.

Implementations§

Source§

impl ProtocolModelClient

Source

pub fn openai_chat( model_name: impl Into<String>, token: impl Into<String>, ) -> Result<Self, ModelError>

Create an OpenAI Chat Completions client.

§Errors

Returns an error when the default HTTP client cannot be created.

Source

pub fn openai_responses( model_name: impl Into<String>, token: impl Into<String>, ) -> Result<Self, ModelError>

Create an OpenAI Responses client.

§Errors

Returns an error when the default HTTP client cannot be created.

Source

pub fn anthropic_messages( model_name: impl Into<String>, api_key: impl Into<String>, ) -> Result<Self, ModelError>

Create an Anthropic Messages client.

§Errors

Returns an error when the default HTTP client cannot be created.

Source

pub fn gemini_generate_content( model_name: impl Into<String>, api_key: impl Into<String>, ) -> Result<Self, ModelError>

Create a Gemini generateContent client.

§Errors

Returns an error when the default HTTP client cannot be created.

Source

pub fn bedrock_converse_gateway( model_name: impl Into<String>, http_config: HttpModelConfig, http_client: DynHttpClient, ) -> Self

Create a Bedrock Converse client for a gateway endpoint.

Bedrock production calls usually require AWS SigV4. Gateways and signed clients can inject the final endpoint and headers through HttpModelConfig and ModelHttpClient.

Source§

impl ProtocolModelClient

Source

pub fn new( provider_name: impl Into<String>, model_name: impl Into<String>, profile: ModelProfile, http_config: HttpModelConfig, http_client: DynHttpClient, ) -> Self

Create a protocol client with an injected HTTP client.

Source

pub fn with_default_settings(self, settings: ModelSettings) -> Self

Set adapter-level default settings.

Source

pub fn with_profile(self, profile: ModelProfile) -> Self

Override the model capability profile.

Source

pub fn with_sleeper(self, sleeper: DynSleeper) -> Self

Set a custom sleeper for retry policy execution.

Source

pub fn with_provider_request_audit( self, recorder: DynProviderRequestAuditRecorder, policy: ProviderRequestAuditPolicy, ) -> Self

Record provider HTTP request audit snapshots outside redacted trace events.

Trait Implementations§

Source§

impl ModelAdapter for ProtocolModelClient

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 start_run_session(&self) -> Box<dyn ModelRunSession + '_>

Create a run-scoped session for agent loops that may issue multiple model requests.
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.
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_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 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 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.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more