Skip to main content

Client

Struct Client 

Source
pub struct Client<Ext = Nothing, H = Client> { /* private fields */ }
Expand description

Generic provider client shared by Rig provider integrations.

Ext stores provider-specific behavior such as URL construction, request customization, and capabilities. H is the HTTP backend and defaults to reqwest::Client.

Implementations§

Source§

impl<Ext> Client<Ext, Client>
where Ext: Provider, Ext::Builder: ProviderBuilder<Extension<Client> = Ext> + Default,

new is pinned to H = reqwest::Client so the call site infers without an explicit H annotation. Callers who want a different backend should go through Client::builder and chain ClientBuilder::http_client before ClientBuilder::build.

Source

pub fn new( api_key: impl Into<<Ext::Builder as ProviderBuilder>::ApiKey>, ) -> Result<Self>

Construct a provider client using the default reqwest::Client backend.

Source§

impl<Ext, H> Client<Ext, H>

Source

pub fn base_url(&self) -> &str

Returns the configured provider base URL.

Source

pub fn headers(&self) -> &HeaderMap

Returns default headers applied to outgoing provider requests.

Source

pub fn ext(&self) -> &Ext

Returns the provider extension.

Source

pub fn with_ext<NewExt>(self, new_ext: NewExt) -> Client<NewExt, H>

Reuse this client’s base URL, headers, and HTTP backend with a different extension.

Source§

impl<Ext> Client<Ext, Client>

builder() is anchored on Client<Ext, reqwest::Client> purely as an inference hook so that provider::Client::builder() resolves without a H annotation. The returned builder itself has H = Missing, accurately reflecting that no backend has been chosen yet; the eventual Client produced by build() may end up with any HTTP backend depending on whether ClientBuilder::http_client was called.

Source

pub fn builder() -> ClientBuilder<Ext::Builder, Missing, Missing>

Start constructing a provider client.

Source§

impl<Ext, H> Client<Ext, H>
where Ext: Provider,

Source

pub fn post<S>(&self, path: S) -> Result<Builder>
where S: AsRef<str>,

Build a provider-customized POST request for a regular HTTP endpoint.

Source

pub fn post_sse<S>(&self, path: S) -> Result<Builder>
where S: AsRef<str>,

Build a provider-customized POST request for an SSE endpoint.

Source

pub fn get_sse<S>(&self, path: S) -> Result<Builder>
where S: AsRef<str>,

Build a provider-customized GET request for an SSE endpoint.

Source

pub fn get<S>(&self, path: S) -> Result<Builder>
where S: AsRef<str>,

Build a provider-customized GET request for a regular HTTP endpoint.

Source§

impl<H> Client<ChatGPTExt, H>

Source

pub async fn authorize(&self) -> Result<(), AuthError>

Source§

impl<T> Client<CohereExt, T>

Source

pub fn embeddings<D: Embed>( &self, model: impl Into<String>, input_type: &str, ) -> EmbeddingsBuilder<EmbeddingModel<T>, D>

Source

pub fn embedding_model( &self, model: impl Into<String>, input_type: &str, ) -> EmbeddingModel<T>

Note: default embedding dimension of 0 will be used if model is not known. If this is the case, it’s better to use function embedding_model_with_ndims

Source

pub fn embedding_model_with_ndims( &self, model: impl Into<String>, input_type: &str, ndims: usize, ) -> EmbeddingModel<T>

Create an embedding model with the given name and the number of dimensions in the embedding generated by the model.

Source§

impl<H> Client<CopilotExt, H>

Source

pub async fn authorize(&self) -> Result<(), AuthError>

Source§

impl<H> Client<GeminiExt, H>

Source

pub fn interactions_api(self) -> InteractionsClient<H>

Create an Interactions API client from this GenerateContent client.

Source§

impl<H> Client<GeminiInteractionsExt, H>

Source

pub fn generate_content_api(self) -> Client<H>

Create a GenerateContent API client from this Interactions client.

Source§

impl<T> Client<GeminiInteractionsExt, T>
where T: HttpClientExt + Clone + Debug + Default + 'static,

Source

pub async fn create_interaction( &self, request: CreateInteractionRequest, ) -> Result<Interaction, CompletionError>

Create a new interaction and return the raw response payload.

Source

pub async fn get_interaction( &self, interaction_id: impl AsRef<str>, ) -> Result<Interaction, CompletionError>

Fetch an interaction by ID (useful for polling background tasks).

Source

pub async fn stream_interaction_events( &self, request: CreateInteractionRequest, ) -> Result<InteractionEventStream, CompletionError>

Start an interaction and stream raw SSE events.

Source

pub async fn stream_interaction_events_by_id( &self, interaction_id: impl AsRef<str>, last_event_id: Option<&str>, ) -> Result<InteractionEventStream, CompletionError>

Resume an interaction stream by ID and optional last event ID.

Source§

impl Client<LlamafileExt>

Source

pub fn from_url(base_url: &str) -> ProviderClientResult<Self>

Create a client pointing at the given llamafile base URL (e.g. http://localhost:8080).

Source§

impl<T> Client<MiraExt, T>
where T: HttpClientExt + 'static,

Source

pub async fn list_models(&self) -> Result<Vec<String>, MiraError>

List available models

Source§

impl<H> Client<OpenAIResponsesExt, H>

Source

pub fn with_system_instructions_placement( self, placement: SystemInstructionsPlacement, ) -> Self

Sets where Rig system instructions are placed in Responses requests for every completion model created from this client. Models capture the placement when they are created, so models built before this call are unaffected. See SystemInstructionsPlacement for when each placement applies.

Source

pub fn with_system_instructions_as_messages(self) -> Self

Sends Rig system instructions as system messages in input instead of as top-level Responses API instructions for every completion model created from this client. Models built before this call are unaffected.

OpenAI’s Responses API supports instructions, and Rig uses it by default. Use this compatibility fallback for OpenAI-compatible providers that reject or ignore top-level instructions.

Source

pub fn completions_api(self) -> CompletionsClient<H>

Create a Completions API client from this Responses API client. Useful for switching to the traditional Chat Completions API.

Source§

impl Client<OpenAIResponsesExt>

Source

pub fn responses_websocket_builder( &self, model: impl Into<String>, ) -> ResponsesWebSocketSessionBuilder

Available on crate feature websocket and non-target_family=wasm only.

WebSocket mode currently uses a native tokio-tungstenite transport and does not reuse custom HttpClientExt backends, so this API is only exposed for the default reqwest::Client transport.

Source

pub async fn responses_websocket( &self, model: impl Into<String>, ) -> Result<ResponsesWebSocketSession, CompletionError>

Available on crate feature websocket and non-target_family=wasm only.

This API is OpenAI-specific and only available on non-wasm targets in rig-core.

Source§

impl<H> Client<OpenAICompletionsExt, H>

Source

pub fn responses_api(self) -> Client<H>

Create a Responses API client from this Completions API client. Useful for switching to the newer Responses API. A system-instructions placement configured before switching to the Completions API is restored.

Trait Implementations§

Source§

impl<M, Ext, H> AudioGenerationClient for Client<Ext, H>
where Ext: Capabilities<H, AudioGeneration = Capable<M>>, M: AudioGenerationModel<Client = Self>,

Available on crate feature audio only.
Source§

type AudioGenerationModel = M

The AudioGenerationModel used by the Client
Source§

fn audio_generation_model( &self, model: impl Into<String>, ) -> Self::AudioGenerationModel

Create an audio generation model with the given name. Read more
Source§

impl<Ext: Clone, H: Clone> Clone for Client<Ext, H>

Source§

fn clone(&self) -> Client<Ext, H>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<M, Ext, H> CompletionClient for Client<Ext, H>
where Ext: Capabilities<H, Completion = Capable<M>>, M: CompletionModel<Client = Self>,

Source§

type CompletionModel = M

The type of CompletionModel used by the client.
Source§

fn completion_model(&self, model: impl Into<String>) -> Self::CompletionModel

Create a completion model with the given model. Read more
Source§

impl<Ext, H> Debug for Client<Ext, H>
where Ext: DebugExt, H: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<M, Ext, H> EmbeddingsClient for Client<Ext, H>
where Ext: Capabilities<H, Embeddings = Capable<M>>, M: EmbeddingModel<Client = Self>,

Source§

type EmbeddingModel = M

The type of EmbeddingModel used by the Client
Source§

fn embedding_model(&self, model: impl Into<String>) -> Self::EmbeddingModel

Create an embedding model with the given model. Read more
Source§

fn embedding_model_with_ndims( &self, model: impl Into<String>, ndims: usize, ) -> Self::EmbeddingModel

Create an embedding model with the given model identifier string and the number of dimensions in the embedding generated by the model. Use this when the provider supports a model whose dimensionality is not known by Rig. Read more
Source§

fn embeddings<D: Embed>( &self, model: impl Into<String>, ) -> EmbeddingsBuilder<Self::EmbeddingModel, D>

Create an embedding builder with the given embedding model. Read more
Source§

fn embeddings_with_ndims<D: Embed>( &self, model: &str, ndims: usize, ) -> EmbeddingsBuilder<Self::EmbeddingModel, D>

Create an embedding builder with the given name and the number of dimensions in the embedding generated by the model. Read more
Source§

impl<Ext, H> HttpClientExt for Client<Ext, H>
where H: HttpClientExt + 'static, Ext: WasmCompatSend + WasmCompatSync + 'static,

Source§

fn send<T, U>( &self, req: Request<T>, ) -> impl Future<Output = Result<Response<LazyBody<U>>>> + WasmCompatSend + 'static
where T: Into<Bytes> + WasmCompatSend, U: From<Bytes> + WasmCompatSend + 'static,

Send a HTTP request, get a response back (as bytes). Response must be able to be turned back into Bytes.
Source§

fn send_multipart<U>( &self, req: Request<MultipartForm>, ) -> impl Future<Output = Result<Response<LazyBody<U>>>> + WasmCompatSend + 'static
where U: From<Bytes> + WasmCompatSend + 'static,

Send a HTTP request with a multipart body, get a response back (as bytes). Response must be able to be turned back into Bytes (although usually for the response, you will probably want to specify Bytes anyway).
Source§

fn send_streaming<T>( &self, req: Request<T>, ) -> impl Future<Output = Result<StreamingResponse>> + WasmCompatSend

Send a HTTP request, get a streamed response back (as a stream of bytes::Bytes.)
Source§

impl<M, Ext, H> ImageGenerationClient for Client<Ext, H>
where Ext: Capabilities<H, ImageGeneration = Capable<M>>, M: ImageGenerationModel<Client = Self>,

Available on crate feature image only.
Source§

type ImageGenerationModel = M

The ImageGenerationModel used by the Client
Source§

fn image_generation_model( &self, model: impl Into<String>, ) -> Self::ImageGenerationModel

Create an image generation model with the given name. Read more
Source§

fn custom_image_generation_model( &self, model: impl Into<String>, ) -> Self::ImageGenerationModel

Create an image generation model with the given name. Read more
Source§

impl<M, Ext, H> ModelListingClient for Client<Ext, H>
where Ext: Capabilities<H, ModelListing = Capable<M>> + Clone, M: ModelLister<H, Client = Self> + WasmCompatSend + WasmCompatSync + Clone + 'static, H: WasmCompatSend + WasmCompatSync + Clone,

Source§

fn list_models( &self, ) -> impl Future<Output = Result<ModelList, ModelListingError>> + WasmCompatSend

List all available models from the provider. Read more
Source§

impl<M, Ext, H> RerankingClient for Client<Ext, H>
where Ext: Capabilities<H, Rerank = Capable<M>>, M: RerankModel<Client = Self>,

Source§

type RerankModel = M

The type of RerankModel used by the Client.
Source§

fn rerank_model(&self, model: impl Into<String>) -> Self::RerankModel

Create a reranking model with the given model identifier.
Source§

impl<M, Ext, H> TranscriptionClient for Client<Ext, H>
where Ext: Capabilities<H, Transcription = Capable<M>>, M: TranscriptionModel<Client = Self> + WasmCompatSend,

Source§

type TranscriptionModel = M

The type of TranscriptionModel used by the Client
Source§

fn transcription_model( &self, model: impl Into<String>, ) -> Self::TranscriptionModel

Create a transcription model with the given name. Read more
Source§

impl<Ext, H> VerifyClient for Client<Ext, H>

Source§

async fn verify(&self) -> Result<(), VerifyError>

Verify the configuration.

Auto Trait Implementations§

§

impl<Ext, H> Freeze for Client<Ext, H>
where H: Freeze, Ext: Freeze,

§

impl<Ext, H> RefUnwindSafe for Client<Ext, H>

§

impl<Ext, H> Send for Client<Ext, H>
where H: Send, Ext: Send,

§

impl<Ext, H> Sync for Client<Ext, H>
where H: Sync, Ext: Sync,

§

impl<Ext, H> Unpin for Client<Ext, H>
where H: Unpin, Ext: Unpin,

§

impl<Ext, H> UnsafeUnpin for Client<Ext, H>
where H: UnsafeUnpin, Ext: UnsafeUnpin,

§

impl<Ext, H> UnwindSafe for Client<Ext, H>
where H: UnwindSafe, Ext: UnwindSafe,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> WasmCompatSend for T
where T: Send,

Source§

impl<T> WasmCompatSync for T
where T: Sync,

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
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