Skip to main content

PerProviderQuota

Struct PerProviderQuota 

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

Give every provider its top k before any provider gets its k + 1th: each provider’s best k frames, then each provider’s next k, and so on.

The difference from RoundRobinByRank is contiguity. A round robin deals one frame per provider per turn; a quota deals k at a time, so a provider’s block of evidence stays together in the prompt. k = 1 is a round robin.

The quota tiers, it does not truncate. A provider’s k + 1th frame is ranked lower, never dropped: dropping is the budget packer’s decision, and it records a reason for the audit. A strategy that discarded frames would leave them out of both the prompt and the record of why.

With one provider every frame sits in its own tier position in score order, so this too degenerates to ScoreDescending.

Implementations§

Source§

impl PerProviderQuota

Source

pub fn new(per_provider: usize) -> Self

A quota of per_provider frames per provider per tier. 0 is read as 1: a quota of nothing would rank every frame into one tier and mean nothing, and returning an error for a number a caller can only have meant as “one at a time” buys the caller nothing.

Source

pub fn per_provider(&self) -> usize

The frames each provider contributes per tier.

Trait Implementations§

Source§

impl Clone for PerProviderQuota

Source§

fn clone(&self) -> PerProviderQuota

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for PerProviderQuota

Source§

impl Debug for PerProviderQuota

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PerProviderQuota

Source§

fn default() -> Self

Three frames per provider per tier — enough that a provider’s evidence arrives as a block rather than a single frame, small enough that a second provider is reached inside any realistic budget. A host with a measured number should pass it to PerProviderQuota::new.

Source§

impl Eq for PerProviderQuota

Source§

impl PartialEq for PerProviderQuota

Source§

fn eq(&self, other: &PerProviderQuota) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl RankingStrategy for PerProviderQuota

Source§

fn policy_name(&self) -> &str

The policy’s name, for a host that has to state which cross-provider ordering it applied. F10 requires a host to document the choice; a strategy that cannot say what it is makes that impossible, which is why this has no default implementation.
Source§

fn order(&self, frames: &[(String, ContextFrame)]) -> Vec<usize>

Order the input indices best-first. See the trait contract.
Source§

impl StructuralPartialEq for PerProviderQuota

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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