pub struct OpenAiCompatibleProvider { /* private fields */ }Expand description
A provider that speaks the OpenAI-compatible chat completions API.
Used by: Venice, Vercel AI Gateway, Cloudflare AI Gateway, Moonshot,
Synthetic, OpenCode Zen, Z.AI, GLM, MiniMax, Bedrock, Qianfan, Groq, Mistral, xAI, etc.
Implementations§
Trait Implementations§
Source§impl ModelProvider for OpenAiCompatibleProvider
impl ModelProvider for OpenAiCompatibleProvider
Source§fn chat<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: ChatRequest<'life1>,
model: &'life2 str,
temperature: f64,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn chat<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: ChatRequest<'life1>,
model: &'life2 str,
temperature: f64,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Structured chat API — the single required method. Read more
Source§fn context_window(&self, model: &str) -> Option<usize>
fn context_window(&self, model: &str) -> Option<usize>
Context window size in tokens for the given model. Read more
Source§fn supports_native_tools(&self) -> bool
fn supports_native_tools(&self) -> bool
Whether provider supports native tool calls over API.
Source§fn supports_developer_role(&self, model: &str) -> bool
fn supports_developer_role(&self, model: &str) -> bool
Whether the given model supports the
developer message role (OpenAI-spec).
When true, app-owned instructions are sent as a developer message.
When false, they are folded into the provider’s system-equivalent role.Source§fn chat_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: ChatRequest<'life1>,
model: &'life2 str,
temperature: f64,
events: UnboundedSender<ProviderStreamEvent>,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn chat_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
request: ChatRequest<'life1>,
model: &'life2 str,
temperature: f64,
events: UnboundedSender<ProviderStreamEvent>,
) -> Pin<Box<dyn Future<Output = Result<ChatResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Optional streaming chat API. Read more
Source§fn native_capabilities(&self) -> Option<ProviderNativeCapabilities>
fn native_capabilities(&self) -> Option<ProviderNativeCapabilities>
Provider-native capabilities outside the chat/tool turn loop. Read more
Source§fn submit_media<'life0, 'async_trait>(
&'life0 self,
request: NativeMediaRequest,
) -> Pin<Box<dyn Future<Output = Result<NativeMediaResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn submit_media<'life0, 'async_trait>(
&'life0 self,
request: NativeMediaRequest,
) -> Pin<Box<dyn Future<Output = Result<NativeMediaResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Submit a provider-native media operation.
Source§fn poll_media_job<'life0, 'life1, 'async_trait>(
&'life0 self,
job: &'life1 NativeMediaJob,
) -> Pin<Box<dyn Future<Output = Result<NativeMediaResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn poll_media_job<'life0, 'life1, 'async_trait>(
&'life0 self,
job: &'life1 NativeMediaJob,
) -> Pin<Box<dyn Future<Output = Result<NativeMediaResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Poll an async provider-native media job.
Source§fn warmup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn warmup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Warm up the HTTP connection pool (TLS handshake, DNS, HTTP/2 setup).
Default implementation is a no-op; providers with HTTP clients should override.
Auto Trait Implementations§
impl !RefUnwindSafe for OpenAiCompatibleProvider
impl !UnwindSafe for OpenAiCompatibleProvider
impl Freeze for OpenAiCompatibleProvider
impl Send for OpenAiCompatibleProvider
impl Sync for OpenAiCompatibleProvider
impl Unpin for OpenAiCompatibleProvider
impl UnsafeUnpin for OpenAiCompatibleProvider
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