Skip to content

deps(backend): bump litellm to 1.101.0 - #831

Merged
MaxEriksson2000 merged 1 commit into
developfrom
deps/litellm-1.101.0
Sep 15, 2026
Merged

MaxEriksson2000 merged 1 commit into
developfrom
deps/litellm-1.101.0

Conversation

@MaxEriksson2000

Copy link
Copy Markdown
Collaborator

Changes

  • litellm==1.98.01.101.0 in backend/pyproject.toml; uv.lock regenerated in the devcontainer (uv 0.12.2). The lock diff is the litellm version + hashes only — no transitive dependency changes.
  • One new entry in backend/tests/warning_filters.py: pydantic 2.13 emits a UserWarning ("Item 'summary' on TypedDict class 'ChatCompletionReasoningItem' is using the ReadOnly qualifier…") the first time it builds litellm's Message schema in a process. Our warnings-as-errors policy turned that into a failure in test_litellm_api_key_override; the ignore carries a resolution path (bump once upstream drops ReadOnly from the TypedDicts pydantic consumes, or once pydantic stops warning). At runtime it is a single stderr line per process and has no functional effect.

Skips 1.99.x and 1.100.x deliberately: 1.100.0 shipped Python-compat regressions in response validation that 1.101.0 fixes (BerriAI/litellm#39399).

Why

Three minor releases behind. The change that matters for us is BerriAI/litellm#38593: temperature/top_p sent to gpt-5.5 / gpt-5.6 / gpt-6 are now dropped under drop_params=True instead of forwarded. On 1.98.0 they were forwarded, OpenAI answered 400 ("Unsupported value: 'temperature'…"), which matches none of the patterns in unsupported_param(), so users saw "The AI provider rejected the request". Verified with get_optional_params(..., drop_params=True) on both versions; gpt-5.4 keeps honoring the params as before.

Also relevant, verified against our integration surface (acompletion/aembedding/atranscription/aimage_*, model_cost, get_model_info, get_supported_openai_params, token_counter, litellm.exceptions):

  • Both upstream breaking changes (prompt_token_calculator deleted, cerebras get_supported_openai_params) touch nothing we use.
  • Bundled cost map grows 3040 → 3818 entries (claude-fable-5-1, gpt-6-astra, gemini-3.8-flash, deprecation_date on 49 mainstream models, sonnet-4-6 max_output_tokens 64k → 128k). Only matters for deployments without egress to GitHub — the map is otherwise fetched live at boot.
  • Top-level anyOf/oneOf/allOf in tool schemas are flattened for OpenAI/Azure chat completions (#38839, #38870); previously a 400 for MCP tools with such schemas.
  • token_counter differs by +2–3 tokens on OpenAI-tokenized paths, unchanged for Claude.
  • The advertised lazy-import memory win (#39121) does not materialize: 194 → 208 MB RSS, 2299 → 2344 modules measured on the same host.

Follow-ups, out of scope here: gate the temperature slider on the new default_reasoning_effort map key (gpt-5.6 still advertises temperature in get_supported_openai_params but the value is now silently dropped), and use thinking_always_on to hide "none" in the reasoning-effort select.

Planning

Separate dependency-maintenance PR from the LiteLLM upgrade review; no tracking issue.

Testing

Inside the devcontainer on the worktree checkout:

  • The six test files that patch litellm internals (test_image_generation, test_enrich_with_litellm_metadata, test_list_available_models, test_deprecation_lookup, test_deprecation_enrichment, test_litellm_api_key_override): 76 passed
  • tests/unit + tests/unittests + tests/validation (-n 4): 4928 passed
  • tests/integration/credentials/: 12 passed, 1 xfailed (same as develop)
  • ruff check / ruff format --check clean; all pre-commit and pre-push hooks pass

Screenshots

n/a

Skips 1.99.x and 1.100.x: 1.100.0 shipped Python-compat regressions in
response validation that 1.101.0 fixes (#39399 upstream).

What changes for us:
- temperature/top_p sent to gpt-5.5/5.6/gpt-6 are now dropped under
  drop_params instead of forwarded, so those requests no longer fail
  with a provider 400 (#38593 upstream). gpt-5.4 keeps honoring them.
- Bundled cost map grows 3040 -> 3818 entries (claude-fable-5-1,
  gpt-6-astra, gemini-3.8-flash, deprecation_date on 49 mainstream
  models). Only matters for deployments without egress to GitHub; the
  map is otherwise fetched live at boot.
- Both upstream breaking changes (prompt_token_calculator removed,
  cerebras supported params) touch nothing we use. No transitive
  dependency changes.

pydantic 2.13 warns once about litellm's ReadOnly TypedDict items when
it builds the Message schema; the warnings-as-errors policy turned that
into a failure in test_litellm_api_key_override, so it gets a
registered ignore with a resolution path.
@github-actions

Copy link
Copy Markdown

🧹 Dead-code & unused-dependency report

Advisory — never gates the PR. Whole-repo scan, so some findings may be false positives (dynamic dispatch, framework hooks, runtime-resolved imports). Triage before removing.

Scan Tool Findings
Unused Python code vulture 1
Python dependencies deptry 0
Frontend files / exports / deps knip 0
Unused Python code — vulture (1)
src/eneo/mcp_servers/domain/entities/mcp_server.py:48: invalid syntax at "# type: the ask path mints a scoped token for it instead of sending stored"
src/eneo/image_models/domain/image_model.py:14: unused import 'ImageModelsDB' (90% confidence, 1 line)
Python dependencies — deptry: ✅ clean
Scanning 878 files...

Success! No dependency issues found.
Frontend — knip: ✅ clean
$ knip-bun --no-exit-code
No Svelte config file found in /home/runner/work/eneo/eneo/frontend - using SvelteKit's default configuration without an adapter.
No Svelte config file found in /home/runner/work/eneo/eneo/frontend - using SvelteKit's default configuration without an adapter.

@MaxEriksson2000
MaxEriksson2000 added this pull request to the merge queue Sep 15, 2026
Merged via the queue into develop with commit 046b5f6 Sep 15, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants