LiteLLM-proxy en SDK met DeepSeek, Claude en elke OpenAI-compatibele API

LiteLLM is een gratis, open-source Python-SDK en proxyserver die één API in OpenAI-stijl voor veel modelproviders zet. We hebben het ingesteld op de OpenAI-compatibele API van Zurelay, de SDK, de proxy en Claude Code er allemaal doorheen gehaald en elke instelling genoteerd die fout ging.

· Zurelay-gidsen · Prijzen worden live bijgewerkt

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

  1. Installeer hem in een virtuele omgeving. LiteLLM 1.106 vereist Python 3.10 of nieuwer.
terminal
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install "litellm[proxy]"
  1. 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 bij model_info zijn de huidige prijzen van 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. 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-.
terminal
export ZURELAY_API_KEY="zr_live_..."
export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"
litellm --config config.yaml
  1. Roep hem aan zoals elke OpenAI-compatibele API, met de model_name uit de 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"}]}'

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.

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 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:

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

Voor 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

  1. Claude Code faalde op DeepSeek met Unknown request URL: POST /v1/responses. Bij openai/-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 verzoeken 429 No deployments available for selected model kregen. use_chat_completions_url_for_anthropic_messages: true onder litellm_settings stuurt ze naar Chat Completions.
  2. Clients van de Responses API faalden op dezelfde manier. Een verzoek naar /v1/responses van de proxy, of litellm.responses() in de SDK, ging ongewijzigd door naar upstream totdat use_chat_completions_api: true bij het model was ingesteld.
  3. Claude met /v1 in de base URL riep /v1/v1/messages aan en kreeg een 404. De anthropic/-provider voegt /v1/messages zelf toe; openai/-modellen hebben de /v1 nodig.
  4. De wildcard toonde de verkeerde modellen. Met openai/* liet /v1/models van 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. Met check_provider_endpoint: true toonde de proxy in plaats daarvan de modellen van Zurelay.
  5. Op Windows crashte de proxy bij het opstarten met UnicodeEncodeError: 'charmap' codec can't encode characters als 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=1 in de omgeving, of python -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:

ModelTaakVerzoekenPrompttokens (uit cache)Kosten
DeepSeek V4.1 FlashMaak hello.py aan339,725 (25,845)$0.0005
Claude Sonnet 5.5Bewerk hello.py351,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.1 meegeeft. 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-terra in een verzoek wordt gpt-6.1-terra bij 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:

ModelInputOutputOp 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.

Elk model met één OpenAI-compatibele API-sleutel, onder de catalogusprijs. Tegoed vanaf $10, geen abonnement.Haal je API-sleutel op

Veelgestelde vragen

Veelgestelde vragen

Nog vragen? Vraag het ons team en we antwoorden per e-mail.

Wat is LiteLLM?

Een open-source Python-SDK en proxyserver van BerriAI. Met de SDK roep je veel modelproviders aan via één functie in OpenAI-stijl; de proxy is een server die je zelf draait en die apps aanroepen in het formaat van OpenAI of Anthropic, met keys, budgetten, logging en fallbacks vóór je providers.

Is LiteLLM gratis?

Ja. De SDK en proxy zijn open source onder de MIT-licentie, behalve de enterprisefuncties in de map enterprise van de repository, die een eigen licentie hebben. Je betaalt alleen de providers waar je verzoeken naartoe stuurt.

Hoe gebruik ik een OpenAI-compatibele API met LiteLLM?

Zet openai/ voor de modelnaam en stel api_base in op de base URL van de provider, inclusief /v1, bijvoorbeeld model: openai/deepseek-v4.1-flash met api_base: https://api.zurelay.com/v1. De key zet je in api_key, of als os.environ/NAME in de config.yaml van de proxy.

Waarom roept LiteLLM /v1/responses aan?

Bij openai/-modellen stuurt LiteLLM Anthropic Messages-verzoeken (bijvoorbeeld van Claude Code) en Responses API-verzoeken door naar de Responses API van de provider. Providers die alleen Chat Completions aanbieden, antwoorden met 404. Zet use_chat_completions_url_for_anthropic_messages: true onder litellm_settings en use_chat_completions_api: true bij het model.

Hoe gebruik ik Claude Code met LiteLLM?

Start de LiteLLM-proxy met de modellen uit config.yaml, stel dan ANTHROPIC_BASE_URL in op http://localhost:4000, ANTHROPIC_AUTH_TOKEN op de master key van de proxy, en ANTHROPIC_MODEL plus de drie ANTHROPIC_DEFAULT_*_MODEL-variabelen op modelnamen uit de config, en voer claude uit.

Waarom klopt de kostenberekening van LiteLLM niet?

LiteLLM berekent de prijs van verzoeken op basis van zijn eigen lijst: de lijstprijs van het lab voor modellen die het kent, en niets voor modellen die het niet kent. Voeg input_cost_per_token, output_cost_per_token en cache_read_input_token_cost toe onder model_info voor elk model, om bij te houden wat je provider echt rekent.

Welke poort gebruikt de LiteLLM-proxy?

Poort 4000, op elke netwerkinterface (0.0.0.0), tenzij je --host meegeeft. Wijzig de poort met --port of de omgevingsvariabele PORT.

Meer gidsen

Betaal niet langer de volle prijs.
Begin vandaag met besparen.

Maak in een paar seconden een sleutel aan, stel de SDK die je al gebruikt in op Zurelay en betaal vanaf de eerste token tot 90% minder voor elk verzoek.