Multi Factor
Overview
multi_factor chooses one candidate from quality, latency, cost, and load. Hard
eligibility rules run first; the surviving candidates are then compared with a
weighted or lexicographic objective.
| Factor | Source | Direction |
|---|---|---|
| Quality | Versioned Overall, capability, or operator index | Higher is better |
| Latency | Observed TTFT or TPOT at the selected percentile | Lower is better |
| Cost | Input/output pricing applied to this request's token budget | Lower is better |
| Load | Current in-flight requests in this Router process | Lower is better |
Quality is resolved for the candidate's exact reasoning effort. A score from a different effort is never borrowed. Coverage is not part of the objective; when both the final objective value and intelligence score tie, higher coverage is the deterministic tie-breaker.
Set latency_metric: ttft to favor a fast first token, or tpot to favor fast
streaming after generation starts. With either setting, a missing measurement
stays unknown; the other metric is never substituted. Lexicographic selection
compares latency only when every candidate still in the objective has a
measurement. With no measurements or partial coverage, it skips latency and
continues to the next priority. A measured model therefore cannot exclude an
unmeasured model simply because it received the first request after startup.
Omitting the setting preserves the existing TPOT-then-TTFT behavior.
What Problem Does It Solve?
A model pool often contains a stronger model, a cheaper model, and a faster model. This selector keeps eligibility explicit and makes that trade-off one auditable decision policy.
When to Use
Use multi_factor when a decision has at least two candidate models and must
optimize a quality/latency/cost/load trade-off. Use static when order alone is
the policy, or latency_aware when latency is the only selection signal.
Configuration
Balanced
The default weighted strategy min-max normalizes each available factor over
the surviving pool and computes: