LiteLLM-Proxy und SDK mit DeepSeek, Claude und jeder OpenAI-kompatiblen API

LiteLLM ist ein kostenloses Open-Source-Python-SDK und ein Proxy-Server, der eine einheitliche API im OpenAI-Stil vor viele Modellanbieter schaltet. Wir haben es mit der OpenAI-kompatiblen API von Zurelay eingerichtet, das SDK, den Proxy und Claude Code darüber laufen lassen und jede Einstellung notiert, die Probleme gemacht hat.

· Zurelay-Guides · Preise werden live aktualisiert

Was LiteLLM macht

  • Das SDK ist eine einzige Python-Funktion, completion(), die jeden Anbieter im OpenAI-Format aufruft. Das Präfix im Modellnamen bestimmt den Anbieter: openai/ steht für jede OpenAI-kompatible API.
  • Der Proxy ist ein Server, den du selbst betreibst, standardmäßig auf http://localhost:4000. Apps rufen ihn im Format von OpenAI oder Anthropic auf, und er ergänzt vor deinen Anbietern Keys, Budgets, Logging und Fallbacks.

Den Proxy einrichten

  1. Installiere ihn in einer virtuellen Umgebung. LiteLLM 1.106 braucht Python 3.10 oder neuer.
terminal
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install "litellm[proxy]"
  1. Schreibe die config.yaml. Das ist die Datei, die wir getestet haben: DeepSeek V4.1 Flash über den OpenAI-kompatiblen Endpoint, Claude Sonnet 5.5 über den Anthropic-Provider von LiteLLM und ein Wildcard-Eintrag, der alle anderen Modelle als zurelay/<model ID> erreichbar macht. Die model_info-Preise sind die aktuellen von Zurelay.
config.yaml
model_list:
- model_name: deepseek-v4.1-flash
litellm_params:
model: openai/deepseek-v4.1-flash
api_base: https://api.zurelay.com/v1
api_key: os.environ/ZURELAY_API_KEY
use_chat_completions_api: true
model_info:
input_cost_per_token: 0.00000003
output_cost_per_token: 0.00000012
cache_read_input_token_cost: 0.00000000074
- model_name: claude-sonnet-5-5
litellm_params:
model: anthropic/claude-sonnet-5-5
api_base: https://api.zurelay.com
api_key: os.environ/ZURELAY_API_KEY
model_info:
input_cost_per_token: 0.00000079
output_cost_per_token: 0.00000395
cache_read_input_token_cost: 0.000000079
- model_name: zurelay/*
litellm_params:
model: openai/*
api_base: https://api.zurelay.com/v1
api_key: os.environ/ZURELAY_API_KEY
use_chat_completions_api: true
litellm_settings:
use_chat_completions_url_for_anthropic_messages: true
check_provider_endpoint: true
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
  1. Starte ihn mit deinem Zurelay-Key und einem eigenen Master-Key. Clients senden den Master-Key; LiteLLM erwartet Keys, die mit sk- beginnen.
terminal
export ZURELAY_API_KEY="zr_live_..."
export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"
litellm --config config.yaml
  1. Ruf ihn auf wie jede OpenAI-kompatible API, mit dem model_name aus der Config.
terminal
curl http://localhost:4000/v1/chat/completions \
-H "Authorization: Bearer $LITELLM_MASTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Hello"}]}'

Oder nutze das Python-SDK

Ohne den Proxy übergibst du Base-URL und Key bei jedem Aufruf. Für Claude über den anthropic/-Provider von LiteLLM lautet die Base-URL https://api.zurelay.com, ohne /v1.

app.py
import os
from litellm import completion
response = completion(
model="openai/deepseek-v4.1-flash",
api_base="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)
claude = completion(
model="anthropic/claude-sonnet-5-5",
api_base="https://api.zurelay.com",
api_key=os.environ["ZURELAY_API_KEY"],
messages=[{"role": "user", "content": "Hello"}],
)

Claude Code über LiteLLM

Der Proxy bedient auch die Messages API von Anthropic, sodass Claude Code mit jedem Modell aus der Config laufen kann. Richte Claude Code auf den Proxy aus und gib die Modelle an, die es verwenden soll:

terminal
export ANTHROPIC_BASE_URL="http://localhost:4000"
export ANTHROPIC_AUTH_TOKEN="$LITELLM_MASTER_KEY"
export ANTHROPIC_MODEL="deepseek-v4.1-flash"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-sonnet-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash"
claude

Nur für Claude-Modelle brauchst du LiteLLM nicht: Claude Code spricht direkt mit Zurelay, wie Claude-Code-Preise zeigt. Für einen Router mit Weboberfläche statt YAML-Datei siehe Claude Code Router.

Die Einstellungen, an denen es gescheitert ist

  1. Claude Code ist mit DeepSeek gescheitert mit Unknown request URL: POST /v1/responses. Bei openai/-Modellen übersetzt LiteLLM Anthropic-Messages-Anfragen in Aufrufe der Responses API von OpenAI, die Zurelay nicht anbietet. Nach einem Fehler setzte LiteLLM das Modell außerdem in den Cooldown, sodass die nächsten Anfragen 429 No deployments available for selected model bekamen. use_chat_completions_url_for_anthropic_messages: true unter litellm_settings leitet sie stattdessen an Chat Completions.
  2. Clients der Responses API scheiterten genauso. Eine Anfrage an /v1/responses des Proxys oder litellm.responses() im SDK ging unverändert an den Upstream, bis use_chat_completions_api: true am Modell gesetzt war.
  3. Claude mit /v1 in der Base-URL rief /v1/v1/messages auf und bekam einen 404. Der anthropic/-Provider hängt /v1/messages selbst an; bei openai/-Modellen brauchst du /v1.
  4. Die Wildcard listete die falschen Modelle. Mit openai/* zeigte /v1/models des Proxys die in LiteLLM eingebaute Liste mit 216 OpenAI-Namen (gpt-3.5-turbo, babbage-002) und keinen von Zurelay. Anfragen mit echten Modell-IDs funktionierten weiterhin. check_provider_endpoint: true sorgte dafür, dass stattdessen die Modelle von Zurelay gelistet wurden.
  5. Unter Windows ist der Proxy beim Start abgestürzt mit UnicodeEncodeError: 'charmap' codec can't encode characters, als seine Ausgabe in eine Logdatei ging: Das Banner enthält Zeichen, die in der Standard-Codepage fehlen. Der UTF-8-Modus von Python hat das behoben: PYTHONUTF8=1 in der Umgebung oder python -X utf8.

Kosten-Tracking

Das Spend-Tracking von LiteLLM berechnet jede Anfrage anhand der eigenen Preisliste. Bei bekannten Modellen ist das der Listenpreis des Labs: Unsere Claude-Sonnet-5.5-Anfrage wurde zum Tarif von Anthropic gezählt, rund 2,5-mal so hoch wie bei Zurelay. Bei unbekannten Modellen, etwa DeepSeek V4.1 Flash hinter openai/, erfasst es gar keine Kosten. Die model_info-Zeilen in der Config oben beheben beides: Mit ihnen stimmten die Kosten, die LiteLLM im x-litellm-response-cost-Header zurückgab, mit unserer Rechnung überein.

Was es in unserem Test gekostet hat

Über den Proxy schrieb Claude Code mit DeepSeek V4.1 Flash eine kleine Python-Datei und bearbeitete sie dann mit Claude Sonnet 5.5. Beide nutzten die Datei-Tools von Claude Code korrekt. Zurelay berechnete:

ModellAufgabeAnfragenPrompt-Token (aus dem Cache)Kosten
DeepSeek V4.1 Flashhello.py erstellen339,725 (25,845)$0.0005
Claude Sonnet 5.5hello.py bearbeiten351,310 (32,523)$0.023

Jede Anfrage enthielt die Anweisungen und Tool-Definitionen von Claude Code, 13.000 bis 18.000 Tokens, und ab der zweiten Anfrage wurde das meiste davon aus dem Cache gelesen. Die eigene Schätzung von Claude Code für die Claude-Aufgabe lag bei $0.054, zu den Listenpreisen von Anthropic. Die SDK-Aufrufe davor, jeweils eine kurze Antwort, kosteten $0.000006 bei DeepSeek und $0.0003 bei Claude Sonnet 5.5.

Gut zu wissen

  • Der Proxy lauscht auf allen Netzwerkschnittstellen (0.0.0.0), sofern du nicht --host 127.0.0.1 übergibst. Lass den Master-Key gesetzt, sonst kann jeder in deinem Netzwerk dein Guthaben verbrauchen.
  • Bei Wildcard-Modellen steht nach dem Präfix die echte ID: zurelay/gpt-6.1-terra in einer Anfrage wird bei Zurelay zu gpt-6.1-terra.
  • Installiere unter Windows in einen kurzen Ordnerpfad. Eine virtuelle Umgebung tief in einem Temp-Ordner scheiterte mit ModuleNotFoundError: No module named 'openai.types...', weil manche Dateipfade das 260-Zeichen-Limit von Windows überschritten.

Preise für die Modelle, die du dahinter einsetzen würdest

Pro 1M Token: der Listenpreis des Anbieters und der Preis bei Zurelay:

ModellInputOutputBei Zurelay (Input / Output)
DeepSeek V4.1 Flash$0.30$1.20$0.03 / $0.12
Claude Sonnet 5.5$2.00$10.00$0.79 / $3.95
Claude Opus 5.5$4.00$20.00$1.40 / $7.00
GPT-6.1 Terra$1.00$5.00$0.25 / $1.25
Gemini 3.8 Flash$0.75$3.75$0.22 / $1.10
Kimi K3.1 Pro$2.00$10.00$0.80 / $4.00
GLM-5.3$1.40$4.40$0.38 / $1.21

Getestet am 3. November 2026 mit LiteLLM 1.106.6 unter Python 3.12 und Claude Code 2.1.317, unter Windows, gegen die API von Zurelay. Die Kurzanleitung steht in LiteLLM in der Doku. Die eigene Dokumentation von LiteLLM: OpenAI-kompatible Endpoints und Proxy-Config.

Alle Modelle mit einem OpenAI-kompatiblen API-Schlüssel, unter Listenpreis. Guthaben ab $10, kein Abo.Hol dir deinen API-Key

FAQ

Häufige Fragen

Noch Fragen? Frag unser Team – wir antworten dir per E-Mail.

Was ist LiteLLM?

Ein Open-Source-Python-SDK und Proxy-Server von BerriAI. Das SDK spricht über eine einzige Funktion im OpenAI-Stil viele Modell-Provider an; der Proxy ist ein Server, den du selbst betreibst und den Apps im Format von OpenAI oder Anthropic aufrufen, mit Keys, Budgets, Logging und Fallbacks vor deinen Providern.

Ist LiteLLM kostenlos?

Ja. SDK und Proxy sind Open Source unter der MIT-Lizenz, abgesehen von den Enterprise-Funktionen im enterprise-Ordner des Repositorys, die eine eigene Lizenz haben. Du zahlst nur die Provider, an die du Anfragen schickst.

Wie nutze ich eine OpenAI-kompatible API mit LiteLLM?

Setze dem Modellnamen openai/ voran und setze api_base auf die Base-URL des Providers, inklusive /v1, zum Beispiel model: openai/deepseek-v4.1-flash mit api_base: https://api.zurelay.com/v1. Der Key kommt in api_key, oder als os.environ/NAME in die config.yaml des Proxys.

Warum ruft LiteLLM /v1/responses auf?

Bei openai/-Modellen schickt LiteLLM Anthropic-Messages-Anfragen (zum Beispiel von Claude Code) und Responses-API-Anfragen an die Responses API des Providers. Provider, die nur Chat Completions anbieten, antworten mit 404. Setze use_chat_completions_url_for_anthropic_messages: true unter litellm_settings und use_chat_completions_api: true am Modell.

Wie nutze ich Claude Code mit LiteLLM?

Starte den LiteLLM-Proxy mit den Modellen aus der config.yaml, setze dann ANTHROPIC_BASE_URL auf http://localhost:4000, ANTHROPIC_AUTH_TOKEN auf den Master-Key des Proxys und ANTHROPIC_MODEL sowie die drei ANTHROPIC_DEFAULT_*_MODEL-Variablen auf Modellnamen aus der Config, und führe dann claude aus.

Warum sind die Kosten in LiteLLM falsch?

LiteLLM berechnet die Kosten von Anfragen anhand einer eigenen Liste: dem Listenpreis des Labs für Modelle, die es kennt, und gar nichts für Modelle, die es nicht kennt. Trag unter model_info für jedes Modell input_cost_per_token, output_cost_per_token und cache_read_input_token_cost ein, um zu erfassen, was dein Anbieter wirklich berechnet.

Welchen Port nutzt der LiteLLM-Proxy?

Port 4000, auf allen Netzwerkschnittstellen (0.0.0.0), solange du nicht --host angibst. Den Port änderst du mit --port oder der Umgebungsvariable PORT.

Weitere Guides

Zahl nicht länger den Listenpreis.
Spare ab heute.

Erstelle in Sekunden einen Key, richte dein bestehendes SDK auf Zurelay aus und spare bei jeder Anfrage ab dem ersten Token bis zu 90%.