← Zurück zum Blog
KostenModellroutingAgentenTutorialArchitektur

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:

  1. 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.
  2. Modellrouting — „Welches Modell und wie viel Reasoning-Aufwand braucht diese Anfrage?“ OpenRouter hat dafür typesafe/jev-router fertig gepackt: das model-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.13 pinnen für Reproduzierbarkeit; mit dem Alias ~typesafe/jev-latest neuen 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