pub struct FallbackProvider { /* private fields */ }Expand description
A provider that falls back to a secondary provider on retryable errors.
§Example
use cognate_providers::{OpenAiProvider, AnthropicProvider, FallbackProvider};
use cognate_core::{Provider, Request, Message};
use std::sync::Arc;
let primary = Arc::new(OpenAiProvider::new(std::env::var("OPENAI_API_KEY").unwrap())?);
let secondary = Arc::new(AnthropicProvider::new(std::env::var("ANTHROPIC_API_KEY").unwrap())?);
let provider = FallbackProvider::new(primary, secondary);
let resp = provider
.complete(Request::new().with_model("gpt-4o").with_message(Message::user("Hi")))
.await?;
println!("{}", resp.content());Implementations§
Trait Implementations§
Source§impl Provider for FallbackProvider
impl Provider for FallbackProvider
Source§fn complete<'life0, 'async_trait>(
&'life0 self,
req: Request,
) -> Pin<Box<dyn Future<Output = Result<Response, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
FallbackProvider: 'async_trait,
fn complete<'life0, 'async_trait>(
&'life0 self,
req: Request,
) -> Pin<Box<dyn Future<Output = Result<Response, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
FallbackProvider: 'async_trait,
Send a completion request and wait for the full response.
Source§fn stream<'life0, 'async_trait>(
&'life0 self,
req: Request,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Chunk, Error>> + Send>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
FallbackProvider: 'async_trait,
fn stream<'life0, 'async_trait>(
&'life0 self,
req: Request,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Chunk, Error>> + Send>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
FallbackProvider: 'async_trait,
Send a completion request and return a streaming response. Read more
Auto Trait Implementations§
impl Freeze for FallbackProvider
impl !RefUnwindSafe for FallbackProvider
impl Send for FallbackProvider
impl Sync for FallbackProvider
impl Unpin for FallbackProvider
impl UnsafeUnpin for FallbackProvider
impl !UnwindSafe for FallbackProvider
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