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 extractor<U>( &self, model: impl Into<String>, ) -> ExtractorBuilder<ResponsesCompletionModel<H>, U>

Create an extractor builder with the given completion model. Uses the OpenAI Responses API (default behavior).

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 non-target_family=wasm and crate feature websocket 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 non-target_family=wasm and crate feature websocket 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 extractor<U>( &self, model: impl Into<String>, ) -> ExtractorBuilder<CompletionModel<H>, U>

Create an extractor builder with the given completion model. Uses the OpenAI Chat Completions API.

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.

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§

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

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

fn extractor<T>( &self, model: impl Into<String>, ) -> ExtractorBuilder<Self::CompletionModel, T>
where T: JsonSchema + for<'a> Deserialize<'a> + Serialize + Send + Sync,

Create an extractor builder with the given completion model.
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> 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<T> CloneDebuggableStorage for T

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> CloneableStorage for T
where T: Any + Send + Sync + Clone,

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: 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: 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> 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> 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
Source§

impl<T> DebuggableStorage for T
where T: Any + Send + Sync + Debug,

Source§

impl<T> WasmCompatSend for T
where T: Send,

Source§

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