Zum Hauptinhalt springen

Verwendung des AI Routers

Der AI Router stellt OpenAI- und Anthropic-kompatible Endpunkte unter Ihrem Tianji-Server bereit:

https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/<provider>/v1/...

Das Segment <provider> muss mit dem Provider-Modus übereinstimmen, den Sie auf der Route konfiguriert haben.

Unterstützte Endpunkte

Provider-SegmentChat-VervollständigungenAntwortenAnthropic-Nachrichten
openai/openai/v1/chat/completions/openai/v1/responses-
deepseek/deepseek/v1/chat/completions--
anthropic/anthropic/v1/chat/completions-/anthropic/v1/messages
openrouter/openrouter/v1/chat/completions-/openrouter/v1/messages
custom/custom/v1/chat/completions/custom/v1/responses/custom/v1/messages

OpenAI Chat-Vervollständigungen

Basis-URL für OpenAI SDK:

https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/openai/v1

Node.js:

import OpenAI from 'openai';

const client = new OpenAI({
apiKey: process.env.TIANJI_API_KEY,
baseURL:
'https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/openai/v1',
});

const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello from Tianji AI Router' }],
});

console.log(response.choices[0].message);

cURL:

curl -X POST 'https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/openai/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_TIANJI_API_KEY>' \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "Hello from Tianji AI Router"
}
]
}'

OpenAI Antworten

Basis-URL für OpenAI SDK:

https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/openai/v1

Node.js:

import OpenAI from 'openai';

const client = new OpenAI({
apiKey: process.env.TIANJI_API_KEY,
baseURL:
'https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/openai/v1',
});

const response = await client.responses.create({
model: 'gpt-4o',
input: 'Write a short deployment checklist.',
});

console.log(response.output_text);

cURL:

curl -X POST 'https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/openai/v1/responses' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_TIANJI_API_KEY>' \
-d '{
"model": "gpt-4o",
"input": "Write a short deployment checklist."
}'

Anthropic Nachrichten

Basis-URL für Anthropic SDK:

https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/anthropic

Node.js:

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
apiKey: process.env.TIANJI_API_KEY,
baseURL:
'https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/anthropic',
});

const message = await client.messages.create({
model: 'claude-opus-4-20250514',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello from Tianji AI Router' }],
});

console.log(message.content);

cURL:

curl -X POST 'https://your-tianji-domain.com/api/ai-router/<workspaceId>/<routerId>/anthropic/v1/messages' \
-H 'Content-Type: application/json' \
-H 'x-api-key: <YOUR_TIANJI_API_KEY>' \
-H 'anthropic-version: 2023-06-01' \
-d '{
"model": "claude-opus-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello from Tianji AI Router"
}
]
}'

Benutzerdefinierte Provider-Routen

Verwenden Sie das custom-Provider-Segment, wenn das ausgewählte AI Gateway eine benutzerdefinierte Basis-URL oder einen benutzerdefinierten Modellnamen speichert.

Beispiele:

/api/ai-router/<workspaceId>/<routerId>/custom/v1/chat/completions
/api/ai-router/<workspaceId>/<routerId>/custom/v1/responses
/api/ai-router/<workspaceId>/<routerId>/custom/v1/messages

Die benutzerdefinierten Upstream-Details bleiben auf dem AI Gateway. Der AI Router wählt nur die Route und leitet die normalisierte Anfrage weiter.

Empfohlene Routing-Muster

Aktiver Backup

Verwenden Sie dies, wenn die Verfügbarkeit wichtiger ist als die Verkehrsverteilung.

StufeRouteGewicht
1Primäres OpenAI-Gateway100
2OpenRouter-Gateway100
3Benutzerdefiniertes Fallback-Gateway100

Der AI Router versucht die Stufe 2 nur, wenn die Stufe 1 wiederholbare Fehler zurückgibt.

Gewichtet aufgeteilt

Verwenden Sie dies, wenn Sie den Verkehr im normalen Betrieb zwischen Anbietern aufteilen möchten.

StufeRouteGewicht
1Gateway A80
1Gateway B20

Beide Routen befinden sich in derselben Stufe, daher gibt es keine primäre/sekundäre Reihenfolge. Die Gewichte entscheiden, welche Route wahrscheinlich zuerst versucht wird.

Canary-Migration

Verwenden Sie dies beim Testen eines neuen Anbieters.

StufeRouteGewicht
1Aktueller Anbieter95
1Neuer Anbieter5
2Stabiles Fallback100

Erhöhen Sie das Gewicht des neuen Anbieters, nachdem Sie in den Protokollen Qualität und Zuverlässigkeit bestätigt haben.

Fehlerbehebung

Keine verfügbaren AI Router-Knoten

Überprüfen Sie, ob:

  • Der Router aktiviert ist.
  • Mindestens eine Stufe aktivierte Routen hat.
  • Das ausgewählte AI Gateway noch einen gespeicherten Modell-API-Schlüssel hat.
  • Der Route-Provider den von Ihnen aufgerufenen Endpunkt unterstützt.

Der Router stoppt nach einem fehlgeschlagenen Versuch

Der AI Router fährt nur nach wiederholbaren Fehlern fort.

Netzwerkfehler, Zeitüberschreitungen, 429, 500, 502, 503 und 504 sind standardmäßig wiederholbar. Fügen Sie routenspezifische wiederholbare Statuscodes hinzu, wenn ein Anbieter andere temporäre Fehlercodes verwendet.

Falsches Modell wird verwendet

Überprüfen Sie beide Stellen:

  • Routen-Modellüberschreibung. Wenn eingestellt, ersetzt es das model der Anfrage.
  • AI Gateway benutzerdefinierter Modellname. Bei custom-Routen kann das Gateway das Modell mit seinem benutzerdefinierten Modellnamen ersetzen.

Anfrage gibt 401 oder 403 zurück

Verwenden Sie im Laufzeitantrag einen Tianji-API-Schlüssel. Senden Sie nicht den Upstream-Anbieterschlüssel an den AI Router, wenn das Gateway seine eigenen Anbieterdaten speichert.

Für OpenAI-kompatible Endpunkte verwenden Sie:

Authorization: Bearer <YOUR_TIANJI_API_KEY>

Für Anthropic-Nachrichtenendpunkte verwenden Sie:

x-api-key: <YOUR_TIANJI_API_KEY>