pub struct PolicyRouter { /* private fields */ }Expand description
The router the library ships (spec §20.6).
use std::sync::Arc;
use turnframe_provider::prelude::*;
use turnframe_provider::testing::StaticProvider;
let strong = StaticProvider::new("openai", "gpt-4o").with_capabilities(
ProviderCapabilities::minimal()
.with_structured_output(StructuredOutputCapability::NativeJsonSchema),
);
let weak = StaticProvider::new("local", "llama").with_capabilities(
ProviderCapabilities::minimal()
.with_structured_output(StructuredOutputCapability::PromptOnly),
);
let pool = ProviderPool::builder()
.provider(Arc::new(weak))
.provider(Arc::new(strong))
.build()?;
let router = PolicyRouter::new(Arc::new(pool));
// An understanding task admits only the strong profile.
let requirements = ModelPurpose::Extract.requirements();
let candidates =
router.select(ModelPurpose::Extract, &requirements, &RoutingPolicy::new())?;
assert_eq!(candidates.len(), 1);
assert_eq!(candidates[0].reference().to_string(), "openai/gpt-4o");Implementations§
Source§impl PolicyRouter
impl PolicyRouter
Sourcepub fn new(pool: Arc<ProviderPool>) -> Self
pub fn new(pool: Arc<ProviderPool>) -> Self
Routes over pool.
Sourcepub fn pool(&self) -> &Arc<ProviderPool> ⓘ
pub fn pool(&self) -> &Arc<ProviderPool> ⓘ
The pool being routed over.
Sourcepub fn select_for_request(
&self,
request: &ModelRequest,
policy: &RoutingPolicy,
) -> Result<Vec<ProviderCandidate>, RoutingError>
pub fn select_for_request( &self, request: &ModelRequest, policy: &RoutingPolicy, ) -> Result<Vec<ProviderCandidate>, RoutingError>
Selects for a concrete request, folding in the requirements its content implies (tools, vision) on top of the purpose’s own.
§Errors
Returns RoutingError when nothing qualifies.
Trait Implementations§
Source§impl Debug for PolicyRouter
impl Debug for PolicyRouter
Source§impl ProviderRouter for PolicyRouter
impl ProviderRouter for PolicyRouter
Source§fn select(
&self,
purpose: ModelPurpose,
requirements: &CapabilityRequirements,
policy: &RoutingPolicy,
) -> Result<Vec<ProviderCandidate>, RoutingError>
fn select( &self, purpose: ModelPurpose, requirements: &CapabilityRequirements, policy: &RoutingPolicy, ) -> Result<Vec<ProviderCandidate>, RoutingError>
Returns the candidates for
purpose, best first. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for PolicyRouter
impl !UnwindSafe for PolicyRouter
impl Freeze for PolicyRouter
impl Send for PolicyRouter
impl Sync for PolicyRouter
impl Unpin for PolicyRouter
impl UnsafeUnpin for PolicyRouter
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