pub struct ABTestRunner { /* private fields */ }Expand description
Routes inference requests between two variants and records metrics.
Implementations§
Source§impl ABTestRunner
impl ABTestRunner
Sourcepub fn new(
config: ABTestConfig,
control: ModelVariant,
treatment: ModelVariant,
) -> Result<Self>
pub fn new( config: ABTestConfig, control: ModelVariant, treatment: ModelVariant, ) -> Result<Self>
Create a new A/B test runner.
Sourcepub fn route(&mut self, key: &str) -> Result<(Vec<f64>, String)>
pub fn route(&mut self, key: &str) -> Result<(Vec<f64>, String)>
Route a single request to a variant, returning (embedding, variant_name).
The variant is chosen deterministically based on key and the LCG state,
ensuring the configured traffic_split is respected on average.
Sourcepub fn record_metric(&mut self, variant_name: &str, metric: f64) -> Result<()>
pub fn record_metric(&mut self, variant_name: &str, metric: f64) -> Result<()>
Record a metric observation for a variant.
Call this after routing to register the quality signal for the request.
Sourcepub fn record_observation(&mut self, obs: Observation) -> Result<()>
pub fn record_observation(&mut self, obs: Observation) -> Result<()>
Record a full observation (metric + latency + key).
Sourcepub fn analyze(&self) -> Result<ABTestReport>
pub fn analyze(&self) -> Result<ABTestReport>
Analyze the collected observations and return a report.
Sourcepub fn total_requests(&self) -> usize
pub fn total_requests(&self) -> usize
Number of requests routed so far.
Sourcepub fn observations(&self) -> &[Observation]
pub fn observations(&self) -> &[Observation]
All recorded observations.
Sourcepub fn variant_stats(&self) -> HashMap<String, VariantStats>
pub fn variant_stats(&self) -> HashMap<String, VariantStats>
Get per-variant summary statistics without a full report.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ABTestRunner
impl !RefUnwindSafe for ABTestRunner
impl Send for ABTestRunner
impl Sync for ABTestRunner
impl Unpin for ABTestRunner
impl UnsafeUnpin for ABTestRunner
impl !UnwindSafe for ABTestRunner
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.