v1.103.3 - Safer Database Migrations, Streamed Alias Spend and Dependency Updates
Deploy this version​
- Docker
- Pip
docker run \
-e LITELLM_MASTER_KEY=sk-<paste-a-long-random-key> \
-e DATABASE_URL=postgresql://<user>:<password>@<host>:5432/<dbname> \
-e STORE_MODEL_IN_DB=True \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:1.103.3
pip install litellm==1.103.3
This release is published as ghcr.io/berriai/litellm:v1.103.3. See the GitHub release and the full releases page
The proxy exits when database setup fails at startup instead of serving against an outdated schema. Set ENFORCE_PRISMA_MIGRATION_CHECK=false to keep the old behavior. See PR #44205
v1.102.x or earlierThe two LiteLLM_SpendLogs index migrations from v1.103.0 are now no-ops. Build the indexes online yourself, outside a transaction:
CREATE INDEX CONCURRENTLY IF NOT EXISTS "LiteLLM_SpendLogs_api_key_startTime_idx" ON "LiteLLM_SpendLogs"("api_key", "startTime");
CREATE INDEX CONCURRENTLY IF NOT EXISTS "LiteLLM_SpendLogs_litellm_call_id_idx" ON "LiteLLM_SpendLogs"("litellm_call_id");
v1.103.3 is a patch release on top of v1.103.2. Startup exits on database setup failure, the LiteLLM_SpendLogs index migrations no longer build anything, streamed requests through an alias are billed correctly, and the base image and several dependencies are bumped. The v1.103.3 tag points at ecae261
Bug fixes​
Streamed chat completions through a dotted alias like claude-opus-4.6 recorded $0 spend, because pricing looked up the alias instead of the deployment's model. Streamed requests are now priced from the deployment's model, the same way as non-streamed ones, and logged streamed responses still show the alias. An alias that points at a deployment with no pricing now records $0 on streamed requests too, matching the non-streamed behavior. See PR #44341
Chat replies bridged from the Responses API put the tool calls in a separate choices[1], so apps that read only choices[0] never ran the tool. choices[0] now carries both the text and the tool calls with finish_reason: "tool_calls". See PR #44346
What's Changed​
- Startup exits on database setup failure, and the
LiteLLM_SpendLogsindex migrations no longer build anything - PR #44205, PR #44286 - fix(proxy): stamp the client alias on a copy of each streamed chunk so pricing sees the deployment model - PR #44341
- fix(responses): merge bridged tool calls into the same choice as the text - PR #44346
- Bump wolfi-base digest to pick up glibc 2.44-r6 - PR #42643
- Dependency bumps:
pyjwt,pypdf,tornado,urllib3,gitpython,litellm-proxy-extras0.4.100.post1 - PR #44352, PR #44225 - test(e2e): move the Together structured-output and text-completion tests to models that still answer - PR #44437
Full Changelog​
https://github.com/BerriAI/litellm/compare/v1.103.2...v1.103.3