Skip to content

Comments

Litellm oss staging 02 21 2026#21786

Open
krrishdholakia wants to merge 8 commits intomainfrom
litellm_oss_staging_02_21_2026
Open

Litellm oss staging 02 21 2026#21786
krrishdholakia wants to merge 8 commits intomainfrom
litellm_oss_staging_02_21_2026

Conversation

@krrishdholakia
Copy link
Member

Relevant issues

Pre-Submission checklist

Please complete all items before asking a LiteLLM maintainer to review your PR

  • I have Added testing in the tests/litellm/ directory, Adding at least 1 test is a hard requirement - see details
  • My PR passes all unit tests on make test-unit
  • My PR's scope is as isolated as possible, it only solves 1 specific problem
  • I have requested a Greptile review by commenting @greptileai and received a Confidence Score of at least 4/5 before requesting a maintainer review

CI (LiteLLM team)

CI status guideline:

  • 50-55 passing tests: main is stable with minor issues.
  • 45-49 passing tests: acceptable but needs attention
  • <= 40 passing tests: unstable; be careful with your merges and assess the risk.
  • Branch creation CI run
    Link:

  • CI run for the last commit
    Link:

  • Merge / cherry-pick CI run
    Links:

Type

🆕 New Feature
🐛 Bug Fix
🧹 Refactoring
📖 Documentation
🚄 Infrastructure
✅ Test

Changes

janfrederickk and others added 7 commits February 20, 2026 22:26
… deployment tagging (#21655)

POST /access_group/new and PUT /access_group/{name}/update now accept an
optional model_ids list that targets specific deployments by their unique
model_id, instead of tagging every deployment that shares a model_name.

When model_ids is provided it takes priority over model_names, giving
API callers the same single-deployment precision that the UI already has
via PATCH /model/{model_id}/update.

Backward compatible: model_names continues to work as before.

Closes #21544
… custom favicon for the litellm proxy UI.\n\n- Add favicon_url field to UIThemeConfig model\n- Add LITELLM_FAVICON_URL env var support\n- Add /get_favicon endpoint to serve custom favicons\n- Update ThemeContext to dynamically set favicon\n- Add favicon URL input to UI theme settings page\n- Add comprehensive tests\n\nCloses #8323 (#21653)
In create_file for Bedrock, get_complete_file_url is called twice:
once in the sync handler (generating UUID-1 for api_base) and once
inside transform_create_file_request (generating UUID-2 for the
actual S3 upload). The Bedrock provider correctly writes UUID-2 into
litellm_params["upload_url"], but the sync handler unconditionally
overwrites it with api_base (UUID-1). This causes the returned
file_id to point to a non-existent S3 key.

Fix: only set upload_url to api_base when transform_create_file_request
has not already set it, preserving the Bedrock provider's value.

Closes #21546
…nt (#21649)

Add vector_size parameter to QdrantSemanticCache and expose it through
the Cache facade as qdrant_semantic_cache_vector_size. This allows users
to use embedding models with dimensions other than the default 1536,
enabling cheaper/stronger models like Stella (1024d), bge-en-icl (4096d),
voyage, cohere, etc.

The parameter defaults to QDRANT_VECTOR_SIZE (env var or 1536) for
backward compatibility. When creating new collections, the configured
vector_size is used instead of the hardcoded constant.

Closes #9377
…1762)

Clients like OpenCode's @ai-sdk/openai-compatible send budgetTokens
(camelCase) instead of budget_tokens in the thinking parameter, causing
validation errors. Add early normalization in completion().
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@vercel
Copy link

vercel bot commented Feb 21, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
litellm Ready Ready Preview, Comment Feb 21, 2026 11:20pm

Request Review

@CLAassistant
Copy link

CLAassistant commented Feb 21, 2026

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
3 out of 4 committers have signed the CLA.

✅ hztBUAA
✅ dkindlund
✅ Chesars
❌ janfrederickk
You have signed the CLA already but the status is still pending? Let us recheck it.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 21, 2026

Greptile Summary

Staging PR bundling six independent changes: (1) custom favicon support for the admin UI, (2) configurable vector dimensions for Qdrant semantic cache, (3) Bedrock batch file transformation fix to prevent double UUID in S3 keys and add Nova/Converse API support, (4) model_ids parameter for precise deployment tagging in access group endpoints, (5) camelCase budgetTokensbudget_tokens normalization for the thinking param, and (6) dynamic proxy base URL in UI code examples.

  • Favicon support: New /get_favicon endpoint, LITELLM_FAVICON_URL env var, UIThemeConfig.favicon_url field, and frontend ThemeContext integration. Unlike the existing get_image endpoint, the favicon endpoint does not cache remote fetches.
  • Qdrant vector size: New qdrant_semantic_cache_vector_size param flows through CacheQdrantSemanticCache and is used in collection creation instead of the hardcoded 1536.
  • Bedrock files: Refactored _map_openai_to_bedrock_params into three routing branches (Anthropic, Converse/Nova, passthrough). Fixed upload_url overwrite bug in the sync HTTP handler path.
  • Access group model_ids: create_model_group and update_access_group now accept optional model_ids for precise per-deployment tagging. model_names remains supported for backward compatibility.
  • Thinking param normalization: validate_and_fix_thinking_param in litellm/utils.py handles clients sending camelCase budgetTokens.
  • UI fixes: Hardcoded localhost:4000 replaced with getProxyBaseUrl() in ModelHubTable code examples.

Confidence Score: 4/5

  • This PR is safe to merge with minor attention needed on the favicon caching gap.
  • This is a staging PR bundling six independent, well-tested changes. Each feature has corresponding unit tests with mocks. The Bedrock batch transformation refactoring includes regression tests for Anthropic and OpenAI passthrough. The access group model_ids feature has comprehensive test coverage. The only notable concern is the /get_favicon endpoint not caching remote fetches (unlike the analogous /get_image endpoint), which could cause unnecessary outbound requests on every page load.
  • litellm/proxy/proxy_server.py - the /get_favicon endpoint lacks response caching for remote URLs unlike the similar /get_image endpoint.

Important Files Changed

Filename Overview
litellm/proxy/proxy_server.py New /get_favicon endpoint for custom favicon support. Follows the same pattern as get_image but lacks response caching for remote URLs.
litellm/llms/bedrock/files/transformation.py Adds Converse API (Nova) provider support for batch inference transformation, with correct routing between Anthropic, Converse, and passthrough paths. Well-structured refactoring with a clear class-level constant for provider dispatch.
litellm/llms/custom_httpx/llm_http_handler.py Fixes sync create_file to honour the upload_url already set by transform_create_file_request (e.g. Bedrock S3 pre-signed URLs), instead of always overwriting it with api_base.
litellm/caching/qdrant_semantic_cache.py Adds configurable vector_size parameter, defaulting to QDRANT_VECTOR_SIZE constant. Clean change that stores the value as an instance attribute and uses it in collection creation.
litellm/utils.py New validate_and_fix_thinking_param function that normalizes camelCase budgetTokens to snake_case budget_tokens. Does not mutate the original dict. Handles edge cases of both keys being present.
litellm/main.py Integrates validate_and_fix_thinking_param into the completion() flow to normalize camelCase thinking keys before processing.
litellm/proxy/management_endpoints/model_access_group_management_endpoints.py Adds model_ids support for precise deployment tagging in access group endpoints. Both create_model_group and update_access_group now accept either model_names or model_ids, with model_ids taking priority when both are provided.
litellm/types/proxy/management_endpoints/model_management_endpoints.py Adds optional model_ids field to NewModelGroupRequest, NewModelGroupResponse, and UpdateModelGroupRequest. Makes model_names optional (was required) to support the new model_ids path.
ui/litellm-dashboard/src/components/ui_theme_settings.tsx Adds favicon URL input to UI theme settings. Removes logo preview section. Sends favicon_url alongside logo_url in save/reset operations.
ui/litellm-dashboard/src/contexts/ThemeContext.tsx Extends ThemeContext with faviconUrl state. Adds a useEffect that dynamically updates the document's favicon link elements when faviconUrl changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph Favicon["Custom Favicon Flow"]
        A["/get_favicon endpoint"] --> B{LITELLM_FAVICON_URL set?}
        B -->|No| C{Default favicon exists?}
        C -->|Yes| D[Serve default favicon.ico]
        C -->|No| E[404 Not Found]
        B -->|Yes - HTTP URL| F[Fetch remote URL]
        F -->|Success| G[Return Response with content-type]
        F -->|Failure| C
        B -->|Yes - Local path| H{File exists?}
        H -->|Yes| I[Serve local file]
        H -->|No| C
    end

    subgraph Bedrock["Bedrock Batch Transformation"]
        J["_map_openai_to_bedrock_params"] --> K{Provider?}
        K -->|Anthropic| L["AmazonAnthropicClaudeConfig.transform_request"]
        K -->|Nova| M["AmazonConverseConfig.transform_request"]
        K -->|Other| N["Passthrough: messages + params"]
    end

    subgraph AccessGroup["Access Group model_ids"]
        O["create_model_group / update_access_group"] --> P{model_ids provided?}
        P -->|Yes| Q["update_specific_deployments_with_access_group\n(tags only specified model_ids)"]
        P -->|No| R["update_deployments_with_access_group\n(tags ALL deployments by model_name)"]
    end
Loading

Last reviewed commit: cc6ef0e

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

23 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment on lines +10764 to +10783
if favicon_url.startswith(("http://", "https://")):
try:
from litellm.llms.custom_httpx.http_handler import (
get_async_httpx_client,
)
from litellm.types.llms.custom_http import httpxSpecialProvider

async_client = get_async_httpx_client(
llm_provider=httpxSpecialProvider.UI,
params={"timeout": 5.0},
)
response = await async_client.get(favicon_url)
if response.status_code == 200:
content_type = response.headers.get(
"content-type", "image/x-icon"
)
return Response(
content=response.content,
media_type=content_type,
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No caching for remote favicon fetches

Unlike the get_image endpoint (line 10711-10732) which caches downloaded logos to a local file, this get_favicon endpoint re-fetches the remote URL on every request. Since browsers request favicons frequently, this will generate an outbound HTTP call for every page load when a remote LITELLM_FAVICON_URL is configured. Consider adding caching similar to get_image.

Adds per-alert-type digest mode that aggregates duplicate alerts
within a configurable time window and emits a single summary message
with count, start/end timestamps.

Configuration via general_settings.alert_type_config:
  alert_type_config:
    llm_requests_hanging:
      digest: true
      digest_interval: 86400

Digest key: (alert_type, request_model, api_base)
Default interval: 24 hours
Window type: fixed interval

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

6 participants