Avatar for the BerriAI user
BerriAI
litellm
BlogDocsChangelog

Performance History

Latest Results

fix(proxy): charge successful Responses WebSocket turns to TPM and ITPM/OTPM A native Responses WebSocket turn reaches the rate limiter's success callback with its raw event list as the response and no combined_usage_object, so the turn's tokens never reached the key's TPM window or the project's input and output token limits. Read the usage from the turn's events when the call type is a Responses WebSocket turn.
litellm_ws_spend_log_per_turn
5 seconds ago
test(ci): assign model inventory regressions to the existing shard
tudstudent:gateway-model-metadata
4 minutes ago
ci: retrigger checks after unrelated mcp-server flake
ninglinLiu:fix/palm-decommissioned-typo-46170
4 minutes ago
fix(proxy)!: return provider-matching 4xx for the LIT-8062 status code follow-ups (#45537) * fix(proxy): return provider-matching 4xx for the LIT-8062 status code follow-ups - OCR multipart errors are 400 invalid_request_error on the file param - a missing model is a 400 on chat, responses and messages even with a wildcard deployment - responses max_output_tokens <= 0 reaches the provider instead of being raised to 16 - daily activity rejects end_date before start_date with a 400 - vector store file attributes are sent in full so the provider enforces its key limit - router-wide defaults no longer satisfy a param the Router takes positionally, or a model the router does not serve - a JSON null user_config is treated as absent * chore: keep the type gates at their merge-base counts * fix(proxy): keep fixed-target wildcards serving a missing model and close router-default gaps - a missing model is rejected only when the wildcard would forward it into the target - moderation only counts router defaults for models get_model_list lists - user_config defaults and deployment params never satisfy a positionally bound param * test(integration): pin the fixed-target wildcard path and no provider call on positional-param 400s * chore: validate pattern-matched deployments instead of reading untyped dicts * fix(proxy): keep router defaults counting for a2a agent models * test: drop the signature-walk test and type the new test helpers * test(integration): audit matrix for the status-code follow-ups Drives every mode the fix branches on through a real proxy, Postgres, Redis and the scripted upstream: positional params against router, deployment and user_config defaults; moderation listed vs unlisted; unknown and a2a models; every user_config shape on chat, responses and messages, streaming and SDK clients; forwarding vs fixed-target wildcards for missing, null and empty models; Responses max_output_tokens edges; OCR parse errors; vector store file attributes; every daily activity route; and a provider outage mid burst plus a killed worker on a two-worker proxy. Product gaps found are skipped as BUG. * style: ruff format the audit test files * test: name the auth pre-check as the source of the JSON array 500 * test: build the audit helpers without mutation and share one sentinel * test: build every audit request body as one literal * fix(proxy): keep router defaults and model-less dispatch for requests a fallback chain serves * fix(proxy): count request, key and team fallbacks when an unlisted model inherits router defaults * fix(proxy): skip key and team fallbacks on the client-credential dispatch path * fix(proxy): keep router defaults when the router's own * fallback serves an unlisted model * fix(proxy): count client-style fallbacks, forward an empty model, report invalid usage chat dates - The router-default pre-check now treats client-style request, key and team fallbacks ([{"model": ...}]) as serving an unlisted model, as the router does - The forwarding-wildcard gate only rejects a missing or null model; an empty model reaches the provider as before (vLLM serves its loaded model for it) - The /usage/ai/chat tools hand the model the date-range error instead of an empty dataset or a generic fetch error * test(usage): type the invalid-date tool test * fix(proxy): keep rejecting an empty model behind a forwarding wildcard Key and team model checks skip an empty model, so forwarding it let a key restricted to another model reach a server's default model (vLLM serves its loaded model for ""). Pin that with a restricted-key integration cell. * fix(usage): report the query layer's date 400 to the usage chat model Checking dates before the fetch refused formats the global usage tool's query accepts (2026/10/01 returned spend on main). Catch the daily activity query's own 400 instead, so each tool rejects exactly what it rejected before and only the message changes. * fix(proxy): restore three model-less and unlisted-model paths main served An empty model is looked up as sent, so next to a forwarding */* wildcard it still reaches the fixed * deployment it matches. A null model with a prompt_id is left to the prompt manager, which may pick the model. A Claude Code subagent turn on a session-bound auto/complexity router counts as served, so the router default max_tokens still applies. * fix(proxy): only skip the model check for a prompt_id when a prompt manager is registered Without a callback prompt manager nothing can pick the model, so a null model with a prompt_id behind a forwarding wildcard gets the same 400 as any other null model. * fix(proxy): leave a model-less Claude Code subagent turn to its session router A subagent turn on a session bound to an auto, complexity, adaptive or quality router is answered by that router whatever model it names, so a null or missing model behind a forwarding wildcard is no longer rejected. An empty model stays rejected. * fix(proxy): skip the wildcard model check only for a bound Claude Code session Read the session's router binding, as the router does, instead of only checking that the request could resume one, so a subagent turn without a model on an unbound session is still rejected before a forwarding wildcard sends it upstream. * refactor(proxy): stop predicting routing in the proxy pre-checks - drop the wildcard missing-model gate: a model-less request behind a forwarding wildcard goes to the router and gets the provider's own status, as on main - drop the "model the router serves" check: router defaults count for any named model again, except moderation, where the Router merges them only for listed models - keep the positional-param, moderation and null user_config fixes * test(ocr): cover the form, size, empty body, invalid JSON and file-document 400s --------- Co-authored-by: yucheng-berri <293926326+yucheng-berri@users.noreply.github.com>
main
5 minutes ago

Latest Branches

CodSpeed Performance Gauge
0%
fix(proxy): keep provider refusal, logprobs and system_fingerprint in chat completions#44788
9 minutes ago
72ddd78
litellm_fix_chat_refusal_system_fingerprint
CodSpeed Performance Gauge
0%
12 minutes ago
d3ee591
tudstudent:gateway-model-metadata
CodSpeed Performance Gauge
0%
11 minutes ago
a00598f
ninglinLiu:fix/palm-decommissioned-typo-46170
© 2026 CodSpeed Technology
Home Terms Privacy Docs