Skip to main content

ModelRouter

Struct ModelRouter 

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

Routes model requests (chat and embedding) across providers with capability checking, exponential-backoff retry, and fallback chains.

Implementations§

Source§

impl ModelRouter

Source

pub fn new(registry: Arc<ProviderRegistry>, policy: RuntimePolicy) -> Self

Creates a new model router.

Source

pub fn registry(&self) -> &ProviderRegistry

Returns the provider registry.

Source

pub fn policy(&self) -> &RuntimePolicy

Returns the runtime policy.

Source

pub async fn route_chat( &self, provider_id: &ProviderId, request: ChatRequest, required_capabilities: Option<&ProviderCapabilities>, ) -> RuntimeResult<ChatResponse>

Routes a chat request to a provider with capability checking and retry.

§Errors

Returns RuntimeError if provider not found, lacks capabilities, or all retries fail.

Source

pub async fn route_chat_with_fallback( &self, provider_ids: &[ProviderId], request: ChatRequest, required_capabilities: Option<&ProviderCapabilities>, ) -> RuntimeResult<ChatResponse>

Routes a chat request across multiple providers with fallback ordering.

Each provider is tried in order via Self::route_chat (which itself applies per-provider retry logic). The first successful response is returned. When all providers fail, the last error is propagated.

§Errors

Returns RuntimeError if every provider in the chain fails.

Source

pub async fn route_embedding( &self, provider_id: &ProviderId, request: EmbeddingRequest, ) -> RuntimeResult<EmbeddingResponse>

Routes an embedding request with retry logic.

§Errors

Returns RuntimeError if provider not found or all retries fail.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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