Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Kostengewogen routering

Wanneer er meerdere modellen beschikbaar zijn — Opus, Sonnet, Haiku of lokale modellen achter een zelf-gehoste odysseus-gateway — routeert PRECC elke taak naar het model dat de verwachte kosten in dollars minimaliseert, niet het aantal tokens. Een token van een goedkoop model en een token van een duur model kosten niet hetzelfde; de router optimaliseert de dollar, met inachtneming van een gemeten succesondergrens en een capaciteitsondergrens per categorie.

Een dollar, niet een token, is de kosteneenheid

Voor een taak van categorie c, over de qua capaciteit in aanmerking komende kandidaatmodellen m, minimaliseert de router de verwachte prijsgewogen kosten. E[$ | task, m] zijn de gemeten gemiddelde tokenkosten van het model voor die categorie, vermenigvuldigd met de prijs per token. Een Haiku-run die meer tokens gebruikt dan Opus kan toch winnen, omdat Haiku per token meerdere keren goedkoper is. Elk getal in de doelfunctie is ofwel gemeten (gemiddelde tokens uit het orakel, vastgelegd succes, gepubliceerde modelprijzen) ofwel een expliciet gelabelde prior — nooit verzonnen.

choose argmin_m   E[$ | task, m]
       subject to  P(success | task, m) >= min_success
                   capability(m) >= capability_floor(category)

Een taak routeren

precc route "<task>" categoriseert de taak, past de capaciteitsondergrens toe, rangschikt de in aanmerking komende modellen op verwachte dollars en drukt de beslissing af. Met --execute verzendt het de taak naar het gekozen model via de odysseus-sessie-API. Elke beslissing wordt ook in het voorspellingsorakel gezaaid zodat de werkelijke kosten en uitkomst kunnen worden vastgelegd nadat de taak is uitgevoerd.

$ precc route "fix the broken parser"
  category   : fix (capability floor 0)
  → model    : anthropic/claude-haiku-4-5  [Measured, confidence 0.60]
  est. cost  : $0.0096 (12000 tok)
  reason     : measured cheapest-capable for `fix` (by cost): claude-haiku-4-5
  prediction : #42 (seeded; learner will auto-close after the task runs)

Besparingen in dollars

precc savings voegt een dollarsectie toe zodra gerouteerde taken zijn voltooid. Voor elke gerouteerde taak prijst het de daadwerkelijk uitgegeven tokens tegen het tarief van het gekozen model en vergelijkt deze met een basislijn waarin altijd het standaardmodel wordt gebruikt — de tokens blijven vast, alleen de prijs varieert. Dit is de visie “snijd kosten, niet alleen tokens”; de sectie blijft verborgen totdat er echte gerouteerde gegevens bestaan, zodat er nooit verzonnen rijen worden getoond.

$ precc savings
Routing cost (USD) — baseline: always claude-opus-4-5
  claude-haiku-4-5   :    1 task(s)  $   0.0096 chosen  vs $   0.0600 baseline
  claude-sonnet-4-6  :    1 task(s)  $   0.1200 chosen  vs $   0.2000 baseline
  total              :    2 task(s)  $   0.1296 chosen  vs $   0.2600 baseline
  → saved $0.1304 (50.2% of baseline spend)

De terugkoppelingslus

Routering verbetert zichzelf: routeren → uitvoeren → vastleggen → opnieuw trainen. Elke gerouteerde beslissing wordt in het orakel gezaaid; de achtergronddaemon precc-learner haalt het voltooide bericht op, legt de werkelijke tokens, het model en het succes vast, en sluit de rij. Naarmate de tabel per (model, category) zich vult, verschuift de router van priors van het type goedkoopste-met-capaciteit naar gemeten keuzes, en krijgt de tokenvoorspeller een dimensie per model.

Verkenning

Om te voorkomen dat één goedkoop model eindeloos op verouderde gegevens wordt uitgebuit, kan de router bewust een onderbenutte (model, category)-cel bemonsteren vóór de gulzige keuze. Verkenning is opt-in, deterministisch (geen willekeur — de hook moet reproduceerbaar zijn) en begrensd: het overschrijdt nooit de capaciteits- of gemeten-succesondergrenzen, en een prijsspijt-bovengrens voorkomt dat het afdwaalt naar een veel duurder model.

# ~/.config/precc/odysseus.toml
explore_n_min = 3     # sample each (model, category) cell ~3× before trusting it
explore_eps   = 1.0   # allow up to 2× the cheapest price while exploring

Gemeten, nooit aangenomen

Een model wordt alleen uitgesloten wegens het niet halen van de succesondergrens wanneer er gemeten bewijs is dat dit zo is — een ongemeten model wordt nooit uitgesloten op basis van een geraden getal. Zonder gegevens voor een cel valt de router terug op een conservatieve goedkoopste-met-capaciteit prior en labelt de beslissing als een koude start, zodat de aanroeper altijd weet of de keuze berust op bewijs of op een prior.