pub struct OpenAiCompatibleDriver { /* private fields */ }Expand description
Driver for OpenAI-compatible chat completions APIs.
Works with OpenAI, Groq, DeepSeek, Together, Fireworks,
Cerebras, xAI, Mistral, and any other provider exposing the
/v1/chat/completions endpoint.
Implementations§
Source§impl OpenAiCompatibleDriver
impl OpenAiCompatibleDriver
Sourcepub fn new(api_key: String, base_url: String, provider_name: String) -> Self
pub fn new(api_key: String, base_url: String, provider_name: String) -> Self
Create a new OpenAI-compatible driver.
Sourcepub fn with_client(
client: Client,
api_key: String,
base_url: String,
provider_name: String,
) -> Self
pub fn with_client( client: Client, api_key: String, base_url: String, provider_name: String, ) -> Self
Create a new OpenAI-compatible driver with a shared HTTP client.
Sourcepub fn build_request_body(&self, request: &CompletionRequest) -> Value
pub fn build_request_body(&self, request: &CompletionRequest) -> Value
Build the OpenAI chat completions request body.
Sourcepub fn parse_response(&self, body: &Value) -> PunchResult<CompletionResponse>
pub fn parse_response(&self, body: &Value) -> PunchResult<CompletionResponse>
Parse the OpenAI chat completions response.
Source§impl OpenAiCompatibleDriver
impl OpenAiCompatibleDriver
Sourcepub fn parse_openai_stream(
&self,
raw: &str,
callback: &StreamCallback,
) -> PunchResult<CompletionResponse>
pub fn parse_openai_stream( &self, raw: &str, callback: &StreamCallback, ) -> PunchResult<CompletionResponse>
Parse an OpenAI-style SSE stream into a CompletionResponse, invoking
the callback for each chunk.
Trait Implementations§
Source§impl LlmDriver for OpenAiCompatibleDriver
impl LlmDriver for OpenAiCompatibleDriver
Source§fn complete<'life0, 'async_trait>(
&'life0 self,
request: CompletionRequest,
) -> Pin<Box<dyn Future<Output = PunchResult<CompletionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn complete<'life0, 'async_trait>(
&'life0 self,
request: CompletionRequest,
) -> Pin<Box<dyn Future<Output = PunchResult<CompletionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Send a completion request and return the response.
Source§fn stream_complete_with_callback<'life0, 'async_trait>(
&'life0 self,
request: CompletionRequest,
callback: StreamCallback,
) -> Pin<Box<dyn Future<Output = PunchResult<CompletionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stream_complete_with_callback<'life0, 'async_trait>(
&'life0 self,
request: CompletionRequest,
callback: StreamCallback,
) -> Pin<Box<dyn Future<Output = PunchResult<CompletionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Streaming completion with per-chunk callback.
Returns the final assembled
CompletionResponse.Source§fn stream_complete<'life0, 'async_trait>(
&'life0 self,
request: CompletionRequest,
) -> Pin<Box<dyn Future<Output = PunchResult<CompletionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stream_complete<'life0, 'async_trait>(
&'life0 self,
request: CompletionRequest,
) -> Pin<Box<dyn Future<Output = PunchResult<CompletionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Streaming variant. Default implementation falls back to
complete.Auto Trait Implementations§
impl Freeze for OpenAiCompatibleDriver
impl !RefUnwindSafe for OpenAiCompatibleDriver
impl Send for OpenAiCompatibleDriver
impl Sync for OpenAiCompatibleDriver
impl Unpin for OpenAiCompatibleDriver
impl UnsafeUnpin for OpenAiCompatibleDriver
impl !UnwindSafe for OpenAiCompatibleDriver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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