LLM-Modellrouting in der Praxis: LLM-Kosten mit Jev und jev-router senken
·3 Min. Lesezeit
LLM-Modellrouting in der Praxis: LLM-Kosten mit Jev und jev-router senken
Jede Nutzeranfrage an ein Flaggschiff-LLM zu schicken ist der Anfang vom Ende jeder API-Abrechnung. Die Lösung, auf die die Community immer wieder stößt, heißt Modellrouting: zuerst günstig beurteilen, wie schwierig und welcher Art eine Anfrage ist, einfache Anfragen an ein leichtes Modell geben und nur die wirklich anspruchsvollen an das Flaggschiff eskalieren. Allein die Routing-Stufe bringt meist den größten Teil der Ersparnis.
Routing hat zwei Ausprägungen, und Jev kann beide — auf zwei offiziellen Wegen:
- Business-Routing — „In welche Pipeline / welchen Queue gehört diese Anfrage, was macht der Agent als Nächstes?“ Über die Jev-Decisions-API: State + Fragen senden und im Code verzweigen.
- Modellrouting — „Welches Modell und wie viel Reasoning-Aufwand braucht diese Anfrage?“ OpenRouter hat dafür
typesafe/jev-routerfertig gepackt: dasmodel-Feld umstellen, fertig.
Kurzfassung: Für deterministische Business-Verzweigungen (auditierbar, mit Schwellwerten) rufen Sie Jev selbst auf. Um eine bestehende App ohne Änderung der Business-Logik günstiger zu machen, wechseln Sie zu
typesafe/jev-router.
Muster 1: Routing-Logik selbst schreiben (Decisions API)
Die Idee: vor dem teuren Aufruf eine günstige Entscheidung einfügen — Jev beantwortet eine von Ihnen definierte Frage, der Code verzweigt nach dem Ergebnis.
Bei einem Support-Agenten beginnt das mit der Einschätzung der Anfragekomplexität:
curl https://openrouter.ai/api/alpha/decisions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "Nutzernachricht: Ich habe mein Passwort geändert und komme trotzdem nicht rein, drei Geräte probiert. Screenshot angehängt: Fehlercode ERR_921.",
"questions": [
{
"type": "score",
"question": "Wie viel Reasoning-Leistung braucht diese Anfrage?",
"levels": ["trivial", "routine", "komplex", "kritisch"]
},
{
"type": "choice",
"question": "Wer soll das bearbeiten?",
"options": ["leichtes Modell", "Flaggschiff-Modell", "Mitarbeiter"]
}
]
}'
Aus der Antwort lesen Sie selected + confidence + die Wahrscheinlichkeitsverteilung je Option und verzweigen dann:
- „routine“ und darunter → leichtes Modell;
- „komplex“ → Flaggschiff-Modell;
- „kritisch“, oder confidence unter einem Schwellwert (z. B. 0,7) → an einen Menschen. Nicht raten.
Das ist das konfidenzbasierte Stufenrouting, über das die Community gerade diskutiert: niedrige Konfidenz eskaliert automatisch, statt alles zum Flaggschiff-Preis zu abrechnen. Das funktioniert, weil die Entscheidungsebene selbst günstig und schnell ist — genau Jevs Positionierung (nur Eingabe-Tokens werden berechnet, Ausgabe kostenlos, Antwort in ~70–500 ms).
Dasselbe Muster routet auch Agentenaktionen: DOM-Snapshot oder Tool-Ergebnis als State übergeben, fragen „Welches Tool soll als Nächstes aufgerufen werden“ — und nicht mehr für jeden einzelnen Schritt GPT denken lassen.
Muster 2: Der verwaltete Router typesafe/jev-router
Wenn Ihr Szenario lautet „Ich will keine Fragen entwerfen, ich will nur, dass jede Anfrage vom günstigsten ausreichenden Modell bedient wird“, hat OpenRouter das fertige geliefert: typesafe/jev-router.
Die Funktionsweise: Jev liest die Konversation, beurteilt Aufgabentyp, Schwierigkeit und den Nutzen eines stärkeren Modells und wählt dann aus Ihrem Kandidatenpool das günstigste Modell, das die Anforderung erfüllt; besonders schwere Anfragen erhalten zur Absicherung ein „Expert Advisor“-Modell. Es spricht Standard-Chat-Completions, Streaming inklusive:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-H "X-OpenRouter-Metadata: enabled" \
-d '{
"model": "typesafe/jev-router",
"messages": [
{ "role": "user", "content": "Ordne die Fehler in diesem Log-Ausschnitt Kategorien zu" }
]
}'
Das model-Feld der Antwort verrät, welches Modell die Anfrage tatsächlich bedient hat. Mit X-OpenRouter-Metadata: enabled sehen Sie Routing-Details wie resolved_models und list_fallback für die Fehlersuche.
Den Kandidatenpool steuern (optionale jev-router-Plugin-Felder):
| Feld | Wirkung |
|---|---|
models / allowed_models |
Include-Liste — nur passende Modelle werden gewählt |
excluded_models |
Ausschlussliste — wird nie gewählt, auch wenn zugleich in der Include-Liste |
Drei Engineering-Semantiken zum Merken:
- Include-Listen akzeptieren exakte Slugs, datierte Revisionen,
anthropic/*-Wildcards und~author/family-latest-Aliase, bis zu 1.024 Muster pro Liste; - Eine Include-Liste ohne Treffer ist kein Fehler — der Router fällt auf den Standardpool zurück (in den Metadaten als
list_fallback: "models_ignored"gemeldet); - Ausschlusslisten greifen immer — schließen Sie alle Pool-Modelle aus, schlägt die Anfrage mit 404 fehl.
Welches Muster für welchen Fall
| Jev selbst aufrufen, Routing selbst schreiben | typesafe/jev-router | |
|---|---|---|
| Beantwortet die Frage | Business: welcher Queue, welche Pipeline, was weiter | Modell: welches LLM bedient diese Anfrage |
| Integrationsaufwand | State und Fragen definieren, Verzweigung selbst schreiben | Eine model-Zeichenkette ändern, Business-Code unberührt |
| Kontrolle | Vollständig eigene Optionen, Schwellwerte, Fallback-Logik | Include-/Ausschlusslisten + offizielle Auswahlstrategie |
| Typischer Einsatz | Ticket-Triage, Intent-Erkennung, Agentenaktions-Entscheidungen | Kostenreduktion für bestehende Chat-Apps und Agenten-Frameworks |
Beides lässt sich stapeln: Decisions-API für deterministische Business-Verzweigung, darunter jev-router für die Modellkosten.
Die Rechnung
Alle Zahlen unten sind schematisch (aktuelle Preise stehen auf den OpenRouter-Modellseiten), die Rechnung selbst ist allgemein gültig. Annahmen: Flaggschiff $3 / 1 Mio. Eingabe-Tokens, leichtes Modell $0,1 / 1 Mio., Jev $0,042 / 1 Mio.; je Anfrage 500 Tokens, je Routing-Entscheidung 300 Tokens, Volumen 1 Mio. Anfragen/Monat.
- Alles Flaggschiff: 1 Mio. × 500 ÷ 1 Mio. × $3 = $1.500
- Geroutet (70 % leicht / 30 % Flaggschiff): 350 Mio. × $0,1 + 150 Mio. × $3 = $35 + $450 = $485, dazu Jevs Routing-Entscheidungen mit 300 Mio. × $0,042 ≈ $12,6 → rund $498
- Eine Reduktion um ~67 % — und das ohne Ausgabe-Tokens, bei denen Jev kostenlos ist und LLMs je Token abrechnen.
Ihre tatsächliche Ersparnis hängt davon ab, wie groß der Anteil „herunterstufbarer“ Anfragen ist. Support, Tagging, Formatierung und einfache Q&A-Flows liegen meist hoch; wirklich harte Aufgaben (komplexes Reasoning, lange Texte) erreicht eine Routing-Ebene nicht — genau deshalb setzt man Konfidenz-Schwellwerte.
Engineering-Hinweise
- Kontextlimit 32k Tokens (State + Fragen zusammen). Lange Gespräche vorher zusammenfassen oder kürzen.
- Jev erklärt seine Antworten nicht. Wenn Sie das „Warum“ brauchen, lässt der Code mit dem strukturierten Ergebnis ein Chat-Modell nachliefern, oder eskaliert Fälle mit niedriger Konfidenz an Menschen.
- Versionsstrategie: in der Produktion
typesafe/jev-1.13pinnen für Reproduzierbarkeit; mit dem Alias~typesafe/jev-latestneuen Versionen automatisch folgen. - Die Routing-Ebene ist auch eine Ausfallquelle: Jev-/jev-router-Aufrufen ein Timeout und einen Fallback-Pfad geben (bei Timeout → standardmäßig ein vertrauenswürdiges Modell). Die Spart-Ebene darf nicht zur Störungsquelle werden.
Weiterlesen
- Jev-API-Schnellstart — der erste Aufruf in drei Schritten
- Szenario-Bibliothek — copy-paste-fertige State-und-Fragen-Setups
- Jev vs. GPT für Klassifizierung — Entscheidungsebene vs. Generierungsebene