Skip to content

Modell-Routing: Benutzerdefinierte Zuordnung, Platzhalter-Priorität und voreingestellte Strategien

Das model, das Sie im Client angeben, entspricht nicht unbedingt dem "physischen Modell", das Antigravity Tools bei der Anfrage an den Upstream verwendet. Modell-Routing erfüllt eine einfache Aufgabe: Es wandelt "nach außen stabilen Modellnamen" in "das tatsächlich zu verwendende physische Modell" um und schreibt das Ergebnis in den Antwort-Header X-Mapped-Model, damit Sie überprüfen können, ob der erwartete Pfad gewählt wurde.

Nach diesem Kurs können Sie

  • proxy.custom_mapping in der UI konfigurieren (exakte Zuordnung + Platzhalter-Zuordnung)
  • Erklären, wie eine Regel genau getroffen wird (exakt > Platzhalter > Standardzuordnung)
  • Voreingestellte Regeln mit einem Klick anwenden, um schnell OpenAI/Claude-Clients kompatibel zu machen
  • Mit curl -i X-Mapped-Model verifizieren und den Fehler "Warum wurde nicht wie erwartet geroutet?" diagnostizieren

Ihre aktuelle Herausforderung

  • Sie möchten, dass der Client immer gpt-4o verwendet, aber der Upstream soll stabil auf ein bestimmtes Gemini-Modell zugreifen
  • Sie haben eine Reihe von versionierten Modellnamen (z. B. gpt-4-xxxx), und möchten nicht jedes Mal manuell Zuordnungen hinzufügen
  • Die Anfrage ist erfolgreich, aber Sie sind nicht sicher, welches physische Modell tatsächlich ausgeführt wurde

Wann sollten Sie diese Methode anwenden

  • Sie möchten Ihrem Team eine "feste externe Modellsammlung" bereitstellen und Upstream-Modelländerungen abstrahieren
  • Sie möchten mehrere OpenAI/Claude-Modellnamen einheitlich zu wenigen kosteneffizienten Modellen routen
  • Sie benötigen bei der Fehlersuche bei 401/429/0 Token die Bestätigung des tatsächlich zugeordneten Modells

🎒 Vorbereitung vor dem Start

Zwei Schlüsselbegriffe in diesem Kurs

  • custom_mapping: Ihre "Benutzerdefinierte Regeltabelle", wobei der Schlüssel der vom Client übergebene Modellname (oder Platzhalter-Pattern) ist und der Wert der zu verwendende Modellname ist (Quelle: src/types/config.ts).
  • Platzhalter *: Wird für die Massenübereinstimmung von Modellnamen verwendet (z. B. gpt-4*), die Übereinstimmungsimplementierung ist groß-/kleinschreibungsempfindlich (Quelle: src-tauri/src/proxy/common/model_mapping.rs).

Kernkonzept

Beim Verarbeiten von Anfragen berechnet das Backend zunächst ein mapped_model:

  1. Zuerst wird geprüft, ob custom_mapping exakt getroffen ist (key ist exakt gleich model)
  2. Dann wird versucht, eine Platzhalter-Übereinstimmung zu finden: Die Regel mit "mehr nicht *-Zeichen" wird ausgewählt (spezifischere Regel hat Priorität)
  3. Wenn keine Übereinstimmung gefunden wurde, wird die Standard-Systemzuordnung verwendet (z. B. Zuordnung von OpenAI/Claude-Modellaliasen zu internen Modellen)

Das mapped_model wird in den Antwort-Header X-Mapped-Model geschrieben (mindestens der OpenAI-Handler macht dies), damit Sie überprüfen können, "welches Modell aus meinem model letztendlich wurde".

Semantik der Hot-Updates (ohne Neustart)

Wenn der Reverse-Proxy-Dienst läuft, ruft das Frontend update_model_mapping auf, sodass das Backend sofort custom_mapping in den speicherresidenten RwLock schreibt und die Änderungen auch in der persistenten Konfiguration speichert (Quelle: src-tauri/src/commands/proxy.rs; src-tauri/src/proxy/server.rs).

Folgen Sie mir

Schritt 1: Modell-Routing-Karte auf der API Proxy-Seite finden

Warum Der Konfigurationseinstiegspunkt für Modell-Routing liegt in der UI; Sie müssen Konfigurationsdateien nicht manuell bearbeiten.

Öffnen Sie Antigravity Tools -> API Proxy-Seite und scrollen Sie nach unten.

Was Sie sehen sollten: Eine Karte mit einem Titel wie "Modell-Routing-Zentrum" mit zwei Schaltflächen oben rechts: "Voreingestellte Zuordnung anwenden" und "Zuordnung zurücksetzen" (Quelle: src/pages/ApiProxy.tsx).

Schritt 2: "Exakte Zuordnung" hinzufügen (am besten kontrollierbar)

Warum Exakte Zuordnung hat die höchste Priorität und eignet sich für "Ich möchte genau diesen Modellnamen auf genau dieses physische Modell abbilden".

Im Bereich "Zuordnung hinzufügen":

  • Original: Geben Sie den Modellnamen ein, den Sie nach außen freigeben möchten, z. B. gpt-4o
  • Target: Wählen Sie ein Zielmodell aus der Dropdown-Liste, z. B. gemini-3-flash

Klicken Sie auf Add.

Was Sie sehen sollten: In der Zuordnungsliste erscheint gpt-4o -> gemini-3-flash mit einer Erfolgsbenachrichtigung.

Schritt 3: "Platzhalter-Zuordnung" hinzufügen (Massenabdeckung)

Warum Wenn Sie viele versionierte Modellnamen haben (z. B. gpt-4-turbo, gpt-4-1106-preview), sparen Sie mit Platzhaltern viele wiederholte Konfigurationen.

Fügen Sie eine weitere Zuordnung hinzu:

  • Original: gpt-4*
  • Target: gemini-3-pro-high

Was Sie sehen sollten: In der Liste erscheint gpt-4* -> gemini-3-pro-high.

Die "Position" der Regelpriorität

Wenn gpt-4o sowohl die exakte Regel gpt-4o als auch die Platzhalterregel gpt-4* erfüllt, wählt das Backend zuerst die exakte Übereinstimmung (Quelle: src-tauri/src/proxy/common/model_mapping.rs).

Schritt 4: Voreingestellte Regeln mit einem Klick anwenden (schnelle Kompatibilität)

Warum Wenn Ihr Hauptzweck "schnelle Anpassung an häufige OpenAI/Claude-Modellnamen" ist, können Voreinstellungen Ihnen helfen, direkt mehrere Platzhalterregeln auszufüllen.

Klicken Sie auf "Voreingestellte Zuordnung anwenden".

Was Sie sehen sollten: Der Liste werden mehrere neue Regeln hinzugefügt, einschließlich ähnlicher wie unten (Quelle: src/pages/ApiProxy.tsx):

json
{
  "gpt-4*": "gemini-3-pro-high",
  "gpt-4o*": "gemini-3-flash",
  "gpt-3.5*": "gemini-2.5-flash",
  "o1-*": "gemini-3-pro-high",
  "o3-*": "gemini-3-pro-high",
  "claude-3-5-sonnet-*": "claude-sonnet-4-5",
  "claude-3-opus-*": "claude-opus-4-5-thinking",
  "claude-opus-4-*": "claude-opus-4-5-thinking",
  "claude-haiku-*": "gemini-2.5-flash",
  "claude-3-haiku-*": "gemini-2.5-flash"
}

Schritt 5: Routing mit X-Mapped-Model verifizieren

Warum Sie möchten bestätigen, dass die Konfiguration übernommen wurde, und noch wichtiger, dass die Anfrage tatsächlich dieser Regel gefolgt ist. Der einfachste Weg ist, X-Mapped-Model zu überprüfen.

bash
curl -i http://127.0.0.1:8045/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "hi"}]
  }'
powershell
$resp = Invoke-WebRequest "http://127.0.0.1:8045/v1/chat/completions" -Method Post -ContentType "application/json" -Body '{
  "model": "gpt-4o",
  "messages": [{"role": "user", "content": "hi"}]
}'
$resp.Headers["X-Mapped-Model"]

Was Sie sehen sollten: Im Antwort-Header finden Sie X-Mapped-Model: .... Wenn Sie gpt-4o in Schritt 2 exakt auf gemini-3-flash abgebildet haben, sollten Sie hier den entsprechenden Wert sehen (Antwortheader-Schreiben siehe src-tauri/src/proxy/handlers/openai.rs).

Schritt 6: Zurücksetzen von custom_mapping, wenn Sie zu "reiner Standardzuordnung" zurückkehren müssen

Warum Bei der Fehlersuche möchten Sie oft den Einfluss von "benutzerdefinierten Regeln" ausschließen. Das Löschen von custom_mapping ist der direkteste Rückweg.

Klicken Sie auf "Zuordnung zurücksetzen".

Was Sie sehen sollten: Die Zuordnungsliste wird geleert; nachfolgende Anfragen, die keine benutzerdefinierten Regeln treffen, werden über die Standard-Systemzuordnung geroutet (Quelle: src/pages/ApiProxy.tsx; src-tauri/src/proxy/common/model_mapping.rs).

Kontrollpunkte ✅

  • [ ] Sie können im UI custom_mapping-Regeln hinzufügen/löschen
  • [ ] Sie können erklären, warum exakte Regeln Platzhalterregeln überschreiben
  • [ ] Sie können X-Mapped-Model mit curl -i oder PowerShell lesen

Häufige Fallstricke

SzenarioMöglicher Ansatz (❌)Empfohlene Vorgehensweise (✓)
Platzhalter funktioniert nichtGPT-4* geschrieben, erwartet Übereinstimmung mit gpt-4-turboVerwenden Sie Kleinbuchstaben gpt-4*; die Backend-Platzhalter-Übereinstimmung ist groß-/kleinschreibungsempfindlich
---------
Regel sieht korrekt aus, aber keine ÄnderungNur Antwort-Body geprüft, nicht Antwort-HeaderVerwenden Sie curl -i, um X-Mapped-Model zu bestätigen (dies ist das explizit vom Backend zurückgegebene Ergebnis)
Beide Regeln "gleich spezifisch"Zwei Platzhalterregeln mit gleicher Anzahl nicht *-ZeichenVermeiden Sie diese Konfiguration; der Quellcode-Kommentar gibt an, dass das Ergebnis in diesem Fall von der HashMap-Traversierungsreihenfolge abhängt, was instabil sein kann (Quelle: src-tauri/src/proxy/common/model_mapping.rs)

Zusammenfassung dieses Kapitels

  • proxy.custom_mapping ist der Hauptzugangspunkt für die Steuerung von "externer Modellname → physisches Modell"
  • Die Backend-Routing-Priorität lautet: exakte Übereinstimmung > Platzhalter-Übereinstimmung (spezifischere geht vor) > Standard-Systemzuordnung
  • X-Mapped-Model ist das zuverlässigste Verifizierungsmittel, bei der Fehlersuche hat es Priorität

Vorschau auf das nächste Kapitel

Das nächste Kapitel befasst sich weiter mit Quota-Governance: Die Kombination von Quota Protection + Smart Warmup (entsprechender Abschnitt: advanced-quota).


Anhang: Quellcode-Referenzen

Klicken, um Quellcode-Positionen anzuzeigen

Aktualisierungsdatum: 2026-01-23

FunktionDateipfadZeilennummer
---------
UI: Schreiben/Zurücksetzen/Voreinstellungen (Aufruf von update_model_mapping)src/pages/ApiProxy.tsx371-475
---------
---------
Serverstatus: custom_mapping wird mit RwLock<HashMap<..>> gespeichertsrc-tauri/src/proxy/server.rs16-53
---------
---------
---------
---------

Wichtige Funktionen:

  • resolve_model_route(original_model, custom_mapping): Hauptzugangspunkt für Modell-Routing (siehe src-tauri/src/proxy/common/model_mapping.rs)