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

Kostengewichtetes Routing

Wenn mehrere Modelle verfügbar sind — Opus, Sonnet, Haiku oder lokale Modelle hinter einem selbst gehosteten odysseus-Gateway — leitet PRECC jede Aufgabe an dasjenige weiter, das die erwarteten Dollarkosten minimiert, nicht die Tokenanzahl. Ein Token eines günstigen Modells und ein Token eines teuren Modells kosten nicht dasselbe; der Router optimiert den Dollar, unter Einhaltung einer gemessenen Mindesterfolgsschwelle und einer Mindestfähigkeitsschwelle je Kategorie.

Die Kosteneinheit ist ein Dollar, kein Token

Für eine Aufgabe der Kategorie c minimiert der Router über die fähigkeitsberechtigten Kandidatenmodelle m die erwarteten preisgewichteten Kosten. E[$ | task, m] ist die gemessene durchschnittliche Tokenkost des Modells für diese Kategorie, multipliziert mit seinem Preis pro Token. Ein Haiku-Lauf, der mehr Tokens verbraucht als Opus, kann dennoch gewinnen, weil Haiku pro Token mehrfach günstiger ist. Jede Zahl in der Zielfunktion ist entweder gemessen (Token-Mittelwerte aus dem Orakel, aufgezeichneter Erfolg, veröffentlichte Modellpreise) oder eine ausdrücklich gekennzeichnete A-priori-Annahme — niemals erfunden.

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

Eine Aufgabe routen

precc route "<task>" kategorisiert die Aufgabe, wendet die Fähigkeitsschwelle an, ordnet die berechtigten Modelle nach den erwarteten Dollar und gibt die Entscheidung aus. Mit --execute wird die Aufgabe über die odysseus-Sitzungs-API an das gewählte Modell übergeben. Jede Entscheidung wird außerdem in das Vorhersageorakel eingespeist, damit ihre tatsächlichen Kosten und ihr Ergebnis nach dem Ausführen der Aufgabe aufgezeichnet werden können.

$ 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)

Dollar-Einsparungen

precc savings fügt einen Dollar-Abschnitt hinzu, sobald geroutete Aufgaben abgeschlossen sind. Für jede geroutete Aufgabe bepreist es die tatsächlich verbrauchten Tokens zum Tarif des gewählten Modells und vergleicht sie mit einer Baseline, die stets das Standardmodell verwendet — die Tokens bleiben fest, nur der Preis variiert. Dies ist die Sicht “Kosten senken, nicht nur Tokens”; der Abschnitt bleibt verborgen, bis echte Routing-Daten vorliegen, sodass er nie erfundene Zeilen anzeigt.

$ 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)

Die Rückkopplungsschleife

Das Routing verbessert sich selbst: route → execute → record → retrain. Jede geroutete Entscheidung wird in das Orakel eingespeist; der Hintergrunddaemon precc-learner ruft die abgeschlossene Nachricht ab, zeichnet die tatsächlichen Tokens, das Modell und den Erfolg auf und schließt die Zeile. Während sich die Tabelle je (model, category) füllt, wechselt der Router von A-priori-Annahmen des günstigsten fähigen Modells zu gemessenen Entscheidungen, und der Token-Prädiktor gewinnt eine Dimension je Modell.

Exploration

Um nicht für immer ein einziges günstiges Modell auf veralteten Daten auszunutzen, kann der Router vor der gierigen Auswahl gezielt eine zu wenig erkundete (model, category)-Zelle abtasten. Die Exploration ist optional, deterministisch (keine Zufälligkeit — der Hook muss reproduzierbar sein) und beschränkt: Sie überschreitet niemals die Fähigkeits- oder gemessene Erfolgsschwelle, und eine Preis-Bedauern-Obergrenze hält sie davon ab, auf ein weitaus teureres Modell abzuschweifen.

# ~/.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

Gemessen, niemals angenommen

Ein Modell wird nur dann wegen Nichterreichens der Erfolgsschwelle ausgeschlossen, wenn es dafür gemessene Belege gibt — ein ungemessenes Modell wird niemals aufgrund einer geratenen Zahl ausgeschlossen. Ohne Daten für eine Zelle greift der Router auf eine konservative A-priori-Annahme des günstigsten fähigen Modells zurück und kennzeichnet die Entscheidung als Kaltstart, sodass der Aufrufer stets weiß, ob die Wahl auf Belegen oder auf einer A-priori-Annahme beruht.