13. Dez. 2025Anthony.Kim

Caret Router: Warum wir von LiteLLM zu any-llm gewechselt sind

LiteLLM war leistungsstark, aber für Caret war es ein übermäßig schwerfälliger und komplexer Router. any-llm, mit seinem schlanken, API-zentrierten Design, ermöglichte es uns, nur die Funktionen zu erweitern, die Caret wirklich benötigte. Das ermöglichte es uns, eine Caret-native UX und Betriebsstruktur aufzubauen und uns gleichzeitig auf zukünftige Leistungsverbesserungen vorzubereiten.

Caret Router

Bei der Entwicklung des LLM-Routers bei Caret war das Wichtigste für uns "Einfachheit, die wir kontrollieren können". Modelle vermehren sich ständig, Anbieter wechseln und die Anforderungen wachsen - und wir haben mehr als einmal gelernt, dass, wenn der Router auch zu schwer wird, die operative Komplexität am Ende die Produktgeschwindigkeit auffrisst.

Wir haben LiteLLM eine Zeit lang verwendet. Funktionell ist es ausgezeichnet und sehr gut gebaut. Aber mit der Zeit wurde klar, dass Teile davon nicht zu dem passten, wohin Caret sich entwickelte oder wie wir in der Produktion arbeiten. Also haben wir unseren Router von LiteLLM → any-llm umgestellt.

Dies ist keine "Vergleichsrezension", sondern eine Aufzeichnung darüber, warum wir gewechselt haben - und was nach dem Wechsel möglich wurde.


1. LiteLLM war zu komplex, und Caret brauchte viele seiner Funktionen nicht

Caret Router, LiteLLM vs any-llm

LiteLLM ist eher ein AI Gateway / Proxy Server als ein einfaches SDK. Multi-Tenancy, virtuelle Schlüssel, Organisationsmanagement, Budgetkontrollen, Protokollierung, Warnmeldungen, Datenbankintegrationen... In "Enterprise-Umgebungen" sind dies unbestreitbar leistungsstarke Vorteile.

Das Problem ist, dass der Router von Caret diese Art von Funktionsumfang nicht benötigte.

  • Das Ändern des Routers zog eine DB, Worker-Setup und operative Parameter nach sich
  • Wir mussten eine Struktur pflegen, die Funktionen enthielt, die wir nicht nutzten
  • Am Ende wird "der Betrieb des Routers" wichtiger als "das Routing von LLMs"

Infolgedessen wurde LiteLLM zu einer schweren Wahl für Caret, nicht weil es an Funktionen mangelte, sondern weil es zu viele hatte.


2. any-llm war schlank und einfach zu erweitern

Caret Router, any-llm

Der größte Grund, warum wir uns für any-llm entschieden haben, ist einfach.

"Ein Router sollte schlank sein."

any-llm ist im Wesentlichen eine Bibliothek, die sich auf eine saubere API-Schnittstelle konzentriert.

  • Es zwingt Sie nicht in einen Proxy-Server
  • Es konzentriert sich auf die Abstraktion von Modellaufrufen
  • Die Struktur ist einfach, so dass sie auf Code-Ebene leicht zu verstehen ist

Es geht nicht nur darum, "leichtgewichtig" zu sein - es bedeutet, dass wir es natürlich in unsere Servicearchitektur einbetten können.

Für uns, die wir wollten, dass der Router eine interne Komponente der Caret-Plattform und nicht ein eigenständiger Dienst ist, war dies entscheidend.


3. Wir konnten das erweitern, was any-llm nicht bietet, auf eine Art und Weise, die zu Caret passt

Caret Router, Extension

Einer der schwierigsten Aspekte bei der Verwendung von LiteLLM war "Caret in eine Struktur einzupassen, die bereits entschieden war".

Nach dem Umstieg auf any-llm hat sich unser Ansatz komplett geändert.

Der Router routet - wir bauen alles andere.

Caret Router, Sequence

Infolgedessen konnten wir Funktionen hinzufügen, die nicht in any-llm enthalten sind, aber für Caret unerlässlich sind - auf unsere eigene Weise.

  • Profilverwaltung
  • Abrechnung / Zahlungen
  • API-Schlüsselverwaltung
  • Guthabenverwaltung
  • Soziale Anmeldung & Authentifizierung

Diese Funktionen sollten nicht auf Router-Ebene erzwungen werden; sie mussten sich natürlich in die Geschäftslogik von Caret integrieren.

Dank der einfachen API-Struktur von any-llm wurde diese Art der Erweiterung viel einfacher.


4. Da any-llm nur eine API bereitstellt, konnten wir die UI völlig frei gestalten

Caret Router, UI

LiteLLM ist eher eine "Plattform, die eine Admin-UI enthält". Aber Caret hat bereits eine eigene UX- und Designphilosophie.

any-llm erzwingt überhaupt keine UI.

  • Bietet nur eine API
  • Der Dienst entscheidet vollständig über die UI/UX

Das ermöglichte uns das Design von:

  • Eine UI, die auf die Benutzerabläufe von Caret abgestimmt ist
  • Bildschirme, auf denen Guthaben, Zahlungen und Schlüsselverwaltung auf natürliche Weise miteinander verbunden sind
  • Eine Erfahrung, bei der sich LLM-Funktionen wie "Werkzeuge" anfühlen
  • ohne Einschränkungen.

Anstatt dass der Router die UX definiert, umhüllt das Produkt den Router.


5. any-llm macht es auch einfacher, die Leistung mit Go später zu verbessern

Caret Router, Performance

Langfristig legt Caret Wert auf Leistung und Kosteneffizienz. Insbesondere die Router-Schicht ist der Ort, an dem sich der Datenverkehr tendenziell konzentriert.

Da die Struktur von any-llm einfach ist:

  • Es ist nicht an eine bestimmte Sprache/Laufzeit gebunden
  • Es in Go neu aufzubauen - oder Teile später durch Go-Komponenten auszutauschen - ist eine realistische Option

Das wäre eine schwierigere Entscheidung gewesen, wenn wir an ein Design gebunden wären, das einen schweren Proxy-Server voraussetzt. Mit einer any-llm-basierten Struktur können wir unsere Leistungsstrategie flexibel halten.


6. Wir werden es als Open-Source veröffentlichen, sobald es aufgeräumt ist

Caret Router, Open Source

Als wir von LiteLLM zu any-llm wechselten und selbst Caret-spezifische Funktionen hinzufügten, wurde eines klar.

Diese Struktur ist zu gut, um sie für uns zu behalten.

Deshalb räumen wir gerade den Code auf, und sobald er fertig ist, werden wir ihn als Open Source veröffentlichen.

  • Eine any-llm-basierte Routing-Architektur
  • Die Erweiterungsmuster, die wir tatsächlich in Caret verwenden
  • Operative Erkenntnisse aus dem Betrieb

Wir suchen Entwickler, die gemeinsam denken und bauen wollen. Anstatt eines "fertigen Frameworks" hoffen wir, dass es zu einem Fundament wird, das wir gemeinsam ausbauen.


Abschließend

Dieser Wechsel bedeutet nicht, dass "LiteLLM schlecht ist". LiteLLM ist immer noch ein großartiges Werkzeug und eine gute Wahl für viele Teams.

Aber für Caret brauchten wir:

  • Einen schlankeren Router
  • Mehr Freiheit zur Erweiterung
  • Klarere Aufteilung der Verantwortlichkeiten

Und any-llm war die Option, die diesen Bedürfnissen entsprach.

Was diese Wahl mit sich bringt, wird durch den laufenden Betrieb und den Open-Source-Prozess deutlicher werden.

Wir werden bald den Code sprechen lassen.

Weitere Beiträge