Zum Hauptinhalt springen

Tag-basiertes Routing

Leitet Anfragen basierend auf Tags weiter. Dies ist nützlich für

  • Implementierung von kostenlosen / kostenpflichtigen Tarifen für Benutzer
  • Kontrolle des Modellzugriffs pro Team, z. B. Team A kann auf die Bereitstellung gpt-4 A zugreifen, Team B kann auf die Bereitstellung gpt-4 B zugreifen (LLM-Zugriffskontrolle für Teams)

Schnellstart

1. Definieren Sie Tags in config.yaml

  • Eine Anfrage mit tags=["free"] wird an openai/fake weitergeleitet
  • Eine Anfrage mit tags=["paid"] wird an openai/gpt-4o weitergeleitet
model_list:
- model_name: gpt-4
litellm_params:
model: openai/fake
api_key: fake-key
api_base: https://exampleopenaiendpoint-production.up.railway.app/
tags: ["free"] # 👈 Key Change
- model_name: gpt-4
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
tags: ["paid"] # 👈 Key Change
- model_name: gpt-4
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
api_base: https://exampleopenaiendpoint-production.up.railway.app/
tags: ["default"] # OPTIONAL - All untagged requests will get routed to this


router_settings:
enable_tag_filtering: True # 👈 Key Change
general_settings:
master_key: sk-1234

2. Stellen Sie eine Anfrage mit tags=["free"]

Diese Anfrage enthält "Tags"["free"], was sie an openai/fake weiterleitet

curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
],
"tags": ["free"]
}'

Erwartete Antwort

Erwarten Sie, die folgende Antwortkopfzeile zu sehen, wenn dies funktioniert

x-litellm-model-api-base: https://exampleopenaiendpoint-production.up.railway.app/

Antwort

{
"id": "chatcmpl-33c534e3d70148218e2d62496b81270b",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "\n\nHello there, how may I assist you today?",
"role": "assistant",
"tool_calls": null,
"function_call": null
}
}
],
"created": 1677652288,
"model": "gpt-3.5-turbo-0125",
"object": "chat.completion",
"system_fingerprint": "fp_44709d6fcb",
"usage": {
"completion_tokens": 12,
"prompt_tokens": 9,
"total_tokens": 21
}
}

3. Stellen Sie eine Anfrage mit tags=["paid"]

Diese Anfrage enthält "Tags"["paid"], was sie an openai/gpt-4 weiterleitet

curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
],
"tags": ["paid"]
}'

Erwartete Antwort

Erwarten Sie, die folgende Antwortkopfzeile zu sehen, wenn dies funktioniert

x-litellm-model-api-base: https://api.openai.com

Antwort

{
"id": "chatcmpl-9maCcqQYTqdJrtvfakIawMOIUbEZx",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Good morning! How can I assist you today?",
"role": "assistant",
"tool_calls": null,
"function_call": null
}
}
],
"created": 1721365934,
"model": "gpt-4o-2024-05-13",
"object": "chat.completion",
"system_fingerprint": "fp_c4e5b6fa31",
"usage": {
"completion_tokens": 10,
"prompt_tokens": 12,
"total_tokens": 22
}
}

Aufruf über Anfragekopfzeile

Sie können auch über die Anfragekopfzeile x-litellm-tags aufrufen

curl -L -X POST 'http://0.0.0.0:4000/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-H 'x-litellm-tags: free,my-custom-tag' \
-d '{
"model": "gpt-4",
"messages": [
{
"role": "user",
"content": "Hey, how'\''s it going 123456?"
}
]
}'

Standard-Tags festlegen

Verwenden Sie dies, wenn Sie möchten, dass alle nicht markierten Anfragen an bestimmte Bereitstellungen weitergeleitet werden

  1. Legen Sie das Standard-Tag in Ihrer YAML fest
  model_list:
- model_name: fake-openai-endpoint
litellm_params:
model: openai/fake
api_key: fake-key
api_base: https://exampleopenaiendpoint-production.up.railway.app/
tags: ["default"] # 👈 Key Change - All untagged requests will get routed to this
model_info:
id: "default-model" # used for identifying model in response headers
  1. Proxy starten
$ litellm --config /path/to/config.yaml
  1. Anfrage ohne Tags stellen
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "fake-openai-endpoint",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
]
}'

Erwarten Sie, die folgende Antwortkopfzeile zu sehen, wenn dies funktioniert

x-litellm-model-id: default-model

✨ Team-basiertes Tag-Routing (Enterprise)

LiteLLM Proxy unterstützt team-basiertes Tag-Routing, wodurch Sie bestimmte Tags mit Teams verknüpfen und Anfragen entsprechend weiterleiten können. Beispiel: **Team A kann auf die Bereitstellung gpt-4 A zugreifen, Team B kann auf die Bereitstellung gpt-4 B zugreifen** (LLM-Zugriffskontrolle für Teams)

Info

Hier erfahren Sie, wie Sie team-basiertes Tag-Routing mit Curl-Befehlen einrichten und verwenden

  1. Aktivieren Sie die Tag-Filterung in Ihrer Proxy-Konfiguration

    Stellen Sie in Ihrer proxy_config.yaml sicher, dass Sie die folgende Einstellung haben

    model_list:
    - model_name: fake-openai-endpoint
    litellm_params:
    model: openai/fake
    api_key: fake-key
    api_base: https://exampleopenaiendpoint-production.up.railway.app/
    tags: ["teamA"] # 👈 Key Change
    model_info:
    id: "team-a-model" # used for identifying model in response headers
    - model_name: fake-openai-endpoint
    litellm_params:
    model: openai/fake
    api_key: fake-key
    api_base: https://exampleopenaiendpoint-production.up.railway.app/
    tags: ["teamB"] # 👈 Key Change
    model_info:
    id: "team-b-model" # used for identifying model in response headers
    - model_name: fake-openai-endpoint
    litellm_params:
    model: openai/fake
    api_key: fake-key
    api_base: https://exampleopenaiendpoint-production.up.railway.app/
    tags: ["default"] # OPTIONAL - All untagged requests will get routed to this

    router_settings:
    enable_tag_filtering: True # 👈 Key Change

    general_settings:
    master_key: sk-1234
  2. Teams mit Tags erstellen

    Verwenden Sie den Endpunkt /team/new, um Teams mit bestimmten Tags zu erstellen

    # Create Team A
    curl -X POST http://0.0.0.0:4000/team/new \
    -H "Authorization: Bearer sk-1234" \
    -H "Content-Type: application/json" \
    -d '{"tags": ["teamA"]}'
    # Create Team B
    curl -X POST http://0.0.0.0:4000/team/new \
    -H "Authorization: Bearer sk-1234" \
    -H "Content-Type: application/json" \
    -d '{"tags": ["teamB"]}'

    Diese Befehle geben JSON-Antworten zurück, die die team_id für jedes Team enthalten.

  3. Schlüssel für Teammitglieder generieren

    Verwenden Sie den Endpunkt /key/generate, um Schlüssel zu erstellen, die mit bestimmten Teams verknüpft sind

    # Generate key for Team A
    curl -X POST http://0.0.0.0:4000/key/generate \
    -H "Authorization: Bearer sk-1234" \
    -H "Content-Type: application/json" \
    -d '{"team_id": "team_a_id_here"}'
    # Generate key for Team B
    curl -X POST http://0.0.0.0:4000/key/generate \
    -H "Authorization: Bearer sk-1234" \
    -H "Content-Type: application/json" \
    -d '{"team_id": "team_b_id_here"}'

    Ersetzen Sie team_a_id_here und team_b_id_here durch die tatsächlichen Team-IDs, die Sie aus Schritt 2 erhalten haben.

  4. Routing verifizieren

    Überprüfen Sie die Kopfzeile x-litellm-model-id in der Antwort, um zu bestätigen, dass die Anfrage basierend auf den Tags des Teams an das richtige Modell weitergeleitet wurde. Sie können das Flag -i mit Curl verwenden, um die Antwortkopfzeilen einzuschließen

    Anfrage mit dem Schlüssel von Team A (einschließlich Kopfzeilen)

    curl -i -X POST http://0.0.0.0:4000/chat/completions \
    -H "Authorization: Bearer team_a_key_here" \
    -H "Content-Type: application/json" \
    -d '{
    "model": "fake-openai-endpoint",
    "messages": [
    {"role": "user", "content": "Hello!"}
    ]
    }'

    In den Antwortkopfzeilen sollten Sie sehen

    x-litellm-model-id: team-a-model

    Ebenso sollten Sie beim Verwenden des Schlüssels von Team B sehen

    x-litellm-model-id: team-b-model

Durch Befolgen dieser Schritte und Verwenden dieser Curl-Befehle können Sie team-basiertes Tag-Routing in Ihrer LiteLLM Proxy-Einrichtung implementieren und testen und sicherstellen, dass verschiedene Teams basierend auf ihren zugewiesenen Tags an die entsprechenden Modelle oder Bereitstellungen weitergeleitet werden.

Weitere Tag-basierte Funktionen