Skip to main content

Client

Struct Client 

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

Asynchronous API client for querying OpenAI and OpenRouter endpoints.

Implementations§

Source§

impl Client

Source

pub fn new(api_key: impl Into<String>) -> Result<Self, ClientError>

Create a new client targeting OpenAI with an API key.

Source

pub fn openai(api_key: impl Into<String>) -> Result<Self, ClientError>

Create a client targeting the official OpenAI API.

Source

pub fn openrouter(api_key: impl Into<String>) -> Result<Self, ClientError>

Create a client targeting the OpenRouter API.

Source

pub fn openrouter_with_attribution( api_key: impl Into<String>, app_url: impl Into<String>, app_name: impl Into<String>, ) -> Result<Self, ClientError>

Create a client targeting OpenRouter with application attribution metadata.

Source

pub fn custom( base_url: impl Into<String>, api_key: Option<String>, ) -> Result<Self, ClientError>

Create a client targeting a custom OpenAI-compatible server.

Source

pub fn from_env() -> Result<Self, ClientError>

Automatically configure a client from available environment variables.

Checks OPENROUTER_API_KEY first; if present, connects to OpenRouter. Then checks OPENAI_BASE_URL; if present, connects to that custom endpoint with optional OPENAI_API_KEY. Otherwise checks OPENAI_API_KEY to connect to OpenAI.

Source

pub fn builder(provider: Provider) -> ClientBuilder

Initialize a builder with a specific provider.

Source

pub fn provider(&self) -> &Provider

Returns a reference to the active provider.

Source

pub fn api_key(&self) -> Option<&str>

Returns the configured API key if any.

Source

pub async fn chat( &self, request: ChatCompletionRequest, ) -> Result<ChatCompletionResponse, ClientError>

Sends a non-streaming chat completion request to /chat/completions.

Source

pub async fn chat_stream( &self, request: ChatCompletionRequest, ) -> Result<ChatCompletionStream<impl Stream<Item = Result<Bytes, Error>> + Unpin>, ClientError>

Sends a streaming chat completion request to /chat/completions, returning an SSE chunk stream.

The request handshake awaits HTTP response headers. Once headers arrive and status is validated, the connection remains open for streaming tokens. Total request timeout is omitted to support long generations; connection timeout is governed by ClientBuilder::connect_timeout.

§Stalls and Inactivity Timeouts

Because total request timeouts are omitted during streaming to permit long generations, a network disruption or hung server connection mid-stream may not terminate automatically. Callers in production environments should wrap stream consumption in an inactivity or idle timeout (for example, using tokio::time::timeout between successive chunk yields) so that mid-stream stalls can be detected and recovered from.

Source

pub async fn embeddings( &self, request: EmbeddingRequest, ) -> Result<EmbeddingResponse, ClientError>

Generates vector embeddings for input text via /embeddings.

Source

pub async fn models(&self) -> Result<ListModelsResponse, ClientError>

Lists models available from the provider via /models.

Trait Implementations§

Source§

impl Clone for Client

Source§

fn clone(&self) -> Client

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 Debug for Client

Source§

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

Formats the value using the given formatter. Read more

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

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

fn try_from(value: U) -> Result<T, !>

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