Wat LiteLLM doet
- De SDK is één Python-functie,
completion(), die elke provider aanroept in het formaat van OpenAI. Het voorvoegsel van de modelnaam bepaalt de provider:openai/staat voor elke OpenAI-compatibele API. - De proxy is een server die je zelf draait, standaard op
http://localhost:4000. Apps roepen hem aan in het formaat van OpenAI of Anthropic. Hij voegt sleutels, budgetten, logging en fallbacks toe vóór je providers.
De proxy instellen
- Installeer hem in een virtuele omgeving. LiteLLM 1.106 vereist Python 3.10 of nieuwer.
python -m venv .venvsource .venv/bin/activate # Windows: .venv\Scripts\activatepip install "litellm[proxy]"- Schrijf config.yaml. Dit is het bestand dat we hebben getest: DeepSeek V4.1 Flash via het OpenAI-compatibele endpoint, Claude Sonnet 5.5 via de Anthropic-provider van LiteLLM en een wildcard die elk ander model bereikt als
zurelay/<model ID>. De prijzen bijmodel_infozijn de huidige prijzen van Zurelay.
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: truelitellm_settings: use_chat_completions_url_for_anthropic_messages: true check_provider_endpoint: truegeneral_settings: master_key: os.environ/LITELLM_MASTER_KEY- Start de proxy met je Zurelay-key en een eigen master key. Clients sturen de master key mee; LiteLLM verwacht keys die beginnen met
sk-.
export ZURELAY_API_KEY="zr_live_..."export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"litellm --config config.yaml- Roep hem aan zoals elke OpenAI-compatibele API, met de
model_nameuit de config.
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"}]}'Of gebruik de Python SDK
Zonder de proxy geef je de base URL en key bij elke aanroep mee. Voor Claude via de anthropic/-provider van LiteLLM is de base URL https://api.zurelay.com, zonder /v1.
import osfrom litellm import completionresponse = 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 via LiteLLM
De proxy ondersteunt ook de Messages API van Anthropic, dus Claude Code kan draaien op elk model in de config. Wijs Claude Code naar de proxy en geef aan welke modellen het moet gebruiken:
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"claudeVoor alleen Claude-modellen heb je LiteLLM niet nodig: Claude Code praat rechtstreeks met Zurelay, zoals Claude Code-prijzen laat zien. Wil je een router met een webpagina in plaats van een YAML-bestand, kijk dan naar Claude Code Router.
De instellingen waar het op vastliep
- Claude Code faalde op DeepSeek met
Unknown request URL: POST /v1/responses. Bijopenai/-modellen zet LiteLLM Anthropic Messages-verzoeken om in aanroepen van de Responses API van OpenAI, die Zurelay niet aanbiedt. Na één mislukking zette LiteLLM het model ook in cooldown, waardoor de volgende verzoeken429 No deployments available for selected modelkregen.use_chat_completions_url_for_anthropic_messages: trueonderlitellm_settingsstuurt ze naar Chat Completions. - Clients van de Responses API faalden op dezelfde manier. Een verzoek naar
/v1/responsesvan de proxy, oflitellm.responses()in de SDK, ging ongewijzigd door naar upstream totdatuse_chat_completions_api: truebij het model was ingesteld. - Claude met /v1 in de base URL riep
/v1/v1/messagesaan en kreeg een 404. Deanthropic/-provider voegt/v1/messageszelf toe;openai/-modellen hebben de/v1nodig. - De wildcard toonde de verkeerde modellen. Met
openai/*liet/v1/modelsvan de proxy de ingebouwde lijst van LiteLLM zien met 216 OpenAI-namen (gpt-3.5-turbo,babbage-002) en niets van Zurelay. Verzoeken met echte model-ID's werkten nog steeds. Metcheck_provider_endpoint: truetoonde de proxy in plaats daarvan de modellen van Zurelay. - Op Windows crashte de proxy bij het opstarten met
UnicodeEncodeError: 'charmap' codec can't encode charactersals de output naar een logbestand ging: de banner bevat tekens die de standaard codepagina niet kent. De UTF-8-modus van Python loste dit op:PYTHONUTF8=1in de omgeving, ofpython -X utf8.
Kosten bijhouden
De spend tracking van LiteLLM berekent de prijs van elk verzoek met een eigen lijst. Voor modellen die het kent is dat de lijstprijs van het lab: ons verzoek met Claude Sonnet 5.5 werd gerekend tegen het tarief van Anthropic, ongeveer 2,5 keer zoveel als Zurelay rekende. Voor modellen die het niet kent, zoals DeepSeek V4.1 Flash achter openai/, legt het helemaal geen kosten vast. De regels model_info in de config hierboven lossen beide op: daarmee kwamen de kosten die LiteLLM teruggaf in de x-litellm-response-cost-header overeen met onze rekening.
Wat het in onze test kostte
Via de proxy schreef Claude Code een klein Python-bestand met DeepSeek V4.1 Flash en bewerkte het daarna met Claude Sonnet 5.5. Beide gebruikten de bestandstools van Claude Code correct. Zurelay rekende af:
| Model | Taak | Verzoeken | Prompttokens (uit cache) | Kosten |
|---|---|---|---|---|
| DeepSeek V4.1 Flash | Maak hello.py aan | 3 | 39,725 (25,845) | $0.0005 |
| Claude Sonnet 5.5 | Bewerk hello.py | 3 | 51,310 (32,523) | $0.023 |
Elk verzoek bevatte de instructies en tooldefinities van Claude Code, 13.000 tot 18.000 tokens, en vanaf het tweede verzoek werd het grootste deel daarvan uit de cache gelezen. De eigen schatting van Claude Code voor de Claude-taak was $0.054, tegen de lijstprijzen van Anthropic. De SDK-aanroepen daarvoor, elk met één kort antwoord, kostten $0.000006 op DeepSeek en $0.0003 op Claude Sonnet 5.5.
Goed om te weten
- De proxy luistert op elke netwerkinterface (
0.0.0.0), tenzij je--host 127.0.0.1meegeeft. Laat de master key ingesteld, anders kan iedereen op je netwerk je tegoed uitgeven. - Bij wildcard-modellen komt het echte ID na het voorvoegsel:
zurelay/gpt-6.1-terrain een verzoek wordtgpt-6.1-terrabij Zurelay. - Installeer op Windows in een kort mappad. Een virtual environment diep in een tijdelijke map mislukte met
ModuleNotFoundError: No module named 'openai.types...', omdat sommige bestandspaden over de limiet van 260 tekens van Windows gingen.
Prijzen van de modellen die je erachter zet
Per 1M tokens, de catalogusprijs van het lab en de prijs bij Zurelay:
| Model | Input | Output | Op Zurelay (in / uit) |
|---|---|---|---|
| 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 |
Getest op 3 november 2026 met LiteLLM 1.106.6 op Python 3.12 en Claude Code 2.1.317, op Windows, tegen de API van Zurelay. De korte setup staat in LiteLLM in de docs. De eigen documentatie van LiteLLM: OpenAI-compatibele endpoints en proxyconfiguratie.