pub struct GenericAdapter { /* private fields */ }
Expand description
Configuration-driven generic adapter for OpenAI-compatible APIs
Implementations§
Source§impl GenericAdapter
impl GenericAdapter
pub fn new(config: ProviderConfig) -> Result<Self, AiLibError>
Sourcepub fn with_transport(
config: ProviderConfig,
transport: HttpTransport,
) -> Result<Self, AiLibError>
pub fn with_transport( config: ProviderConfig, transport: HttpTransport, ) -> Result<Self, AiLibError>
Create adapter with custom transport layer (for testing)
Examples found in repository?
examples/custom_transport_config.rs (line 16)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let cfg = HttpTransportConfig {
8 timeout: Duration::from_secs(30),
9 proxy: None,
10 pool_max_idle_per_host: Some(16),
11 pool_idle_timeout: Some(Duration::from_secs(60)),
12 };
13
14 let transport = HttpTransport::new_with_config(cfg)?;
15 let provider_cfg = ProviderConfigs::groq();
16 let _adapter = GenericAdapter::with_transport(provider_cfg, transport)?;
17
18 println!("Created adapter using HttpTransportConfig");
19 Ok(())
20}
More examples
examples/custom_transport.rs (line 19)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 // Build a reqwest client with custom pool settings
9 let reqwest_client = Client::builder()
10 .pool_max_idle_per_host(32)
11 .pool_idle_timeout(Duration::from_secs(90))
12 .timeout(Duration::from_secs(30))
13 .build()?;
14
15 // Wrap into library transport and inject
16 let transport = HttpTransport::with_client(reqwest_client, Duration::from_secs(30));
17
18 let config = ProviderConfigs::groq();
19 let _adapter = GenericAdapter::with_transport(config, transport)?;
20
21 println!("Created generic adapter with custom transport");
22 Ok(())
23}
Sourcepub fn with_transport_ref(
config: ProviderConfig,
transport: DynHttpTransportRef,
) -> Result<Self, AiLibError>
pub fn with_transport_ref( config: ProviderConfig, transport: DynHttpTransportRef, ) -> Result<Self, AiLibError>
Accept an object-safe transport reference directly
Sourcepub fn with_transport_ref_and_metrics(
config: ProviderConfig,
transport: DynHttpTransportRef,
metrics: Arc<dyn Metrics>,
) -> Result<Self, AiLibError>
pub fn with_transport_ref_and_metrics( config: ProviderConfig, transport: DynHttpTransportRef, metrics: Arc<dyn Metrics>, ) -> Result<Self, AiLibError>
Create adapter with custom transport and an injected metrics implementation
Sourcepub fn with_metrics(
config: ProviderConfig,
metrics: Arc<dyn Metrics>,
) -> Result<Self, AiLibError>
pub fn with_metrics( config: ProviderConfig, metrics: Arc<dyn Metrics>, ) -> Result<Self, AiLibError>
Create adapter with injected metrics (uses default HttpTransport)
Trait Implementations§
Source§impl ChatApi for GenericAdapter
impl ChatApi for GenericAdapter
Source§fn chat_completion<'life0, 'async_trait>(
&'life0 self,
request: ChatCompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<ChatCompletionResponse, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chat_completion<'life0, 'async_trait>(
&'life0 self,
request: ChatCompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<ChatCompletionResponse, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Send chat completion request Read more
Source§fn chat_completion_stream<'life0, 'async_trait>(
&'life0 self,
request: ChatCompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Stream<Item = Result<ChatCompletionChunk, AiLibError>> + Send + Unpin>, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chat_completion_stream<'life0, 'async_trait>(
&'life0 self,
request: ChatCompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Stream<Item = Result<ChatCompletionChunk, AiLibError>> + Send + Unpin>, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Streaming chat completion request Read more
Source§fn list_models<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_models<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get list of supported models Read more
Source§fn get_model_info<'life0, 'life1, 'async_trait>(
&'life0 self,
model_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ModelInfo, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_model_info<'life0, 'life1, 'async_trait>(
&'life0 self,
model_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ModelInfo, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get model information Read more
Source§fn chat_completion_batch<'life0, 'async_trait>(
&'life0 self,
requests: Vec<ChatCompletionRequest>,
concurrency_limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Result<ChatCompletionResponse, AiLibError>>, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chat_completion_batch<'life0, 'async_trait>(
&'life0 self,
requests: Vec<ChatCompletionRequest>,
concurrency_limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Result<ChatCompletionResponse, AiLibError>>, AiLibError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
批处理聊天完成请求 Read more
Auto Trait Implementations§
impl Freeze for GenericAdapter
impl !RefUnwindSafe for GenericAdapter
impl Send for GenericAdapter
impl Sync for GenericAdapter
impl Unpin for GenericAdapter
impl !UnwindSafe for GenericAdapter
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