Commit graph

42355 commits

Author SHA1 Message Date
Sameer Kankute
e17c639fb1
Merge pull request #21085 from BerriAI/litellm_oss_staging_02_13_2026
Litellm oss staging 02 13 2026
2026-02-13 18:38:14 +05:30
Sameer Kankute
f343159911
Merge pull request #21024 from BerriAI/litellm_oss_staging_02_12_2026
Litellm oss staging 02 12 2026
2026-02-13 18:37:44 +05:30
Shivam Rawat
1321cd276b removed /models and v1/models from llm api routes (#20988) 2026-02-13 18:32:41 +05:30
Emerson Gomes
8a650f0170 fix(cache): prevent DualCache async batch check-then-act race (#20986)
* fix(cache): prevent dual cache batch redis race under concurrency

* chore(cache): remove unused dual cache batch key helper

* chore(cache): align dual cache type hints and throttle comment
2026-02-13 18:32:41 +05:30
Emerson Gomes
cba3bcf1a9 fix(logging): avoid shared callback list references (#20984) 2026-02-13 18:32:41 +05:30
Sameer Kankute
8a2bc265af feat(bedrock): add support for 4 new beta models (#20974)
* feat(bedrock): add DeepSeek V3.2 pricing and region support

* feat(bedrock): add minimax.minimax-m2.1  pricing and region support

* feat(bedrock): add moonshotai.kimi-k2.5  pricing and region support

* feat(bedrock): add qwen.qwen3-coder-next
  pricing and region support

* add some sanity unit tests for the bedrock beta models added

* --amend

* resolve greptileai comments and suggestions
2026-02-13 18:32:12 +05:30
Cesar Garcia
75d0d2bd7a fix(openrouter): preserve token counts from streaming usage chunks (#21011)
* docs: add reference to example_openai_endpoint repo for self-hosting fake OpenAI proxy (#21006)

- Updated benchmarks.md with a section on setting up fake OpenAI endpoints
- Updated load_test.md to mention the self-hosted option
- Updated load_test_advanced.md with a tip box about the example repo

Reference: https://github.com/BerriAI/example_openai_endpoint

Co-authored-by: Cursor Agent <cursoragent@cursor.com>

* MCP fixes

* fix(oldteams.tsx): show policies when creating

* fix(proxy/_types.py): ensure mcp rest endpoints can be called by virtual key

ensures UI works with virtual key testing mcp endpoints

* refactor: migrate get object permissions table logic to happen in user api key auth - allows functions to trust user api key object they receive has what they need

* fix(rest_endpoints.py): filter for allowed tools based on what key has access to

* fix(mcp_server_manager.py): ensure only allowed MCP's are returned to the user, via rest endpoints

* Guardrails - add toxic/abusive content filter guardrails

* fix(streaming): preserve usage data from post-finish_reason chunks in OpenAI-compatible streaming

Fixes #16112

OpenRouter and other OpenAI-compatible providers send a usage chunk after
the finish_reason='stop' chunk when stream_options.include_usage is True.
The OpenAIChatCompletionStreamingHandler.chunk_parser() was not passing
the usage field to ModelResponseStream, causing real token counts from the
provider to be lost and falling back to inaccurate estimates.

* fix: resolve merge conflict in test file

- Fix typo in test method name (extra space)
- Move test_prompt_cache_key_in_optional_params to its own class

---------

Co-authored-by: Krish Dholakia <krrishdholakia@gmail.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-02-13 18:27:22 +05:30
Lei Nie
e9c99f41bd fix(vertex_ai): forward extra_body to completion transformation handler (#20950)
* fix(vertex_ai): forward extra_body to completion transformation handler

The responses() function accepted extra_body as a named parameter but
did not pass it to response_api_handler when responses_api_provider_config
was None (completion transformation path), silently dropping it.

Also adds deep-merge support for extra_body in Vertex AI Gemini
transformation, so dict values like generationConfig are merged rather
than replaced.

* refactor(vertex_ai): extract _merge_extra_body to fix PLR0915 lint

Move the extra_body merge loop into a helper function to keep
_transform_request_body under the 50-statement limit.
2026-02-13 18:25:32 +05:30
Harshit Jain
673b7d1fea
Merge branch 'main' into litellm_fix-virtual-key-grace-period 2026-02-13 18:14:47 +05:30
Harshit Jain
5f87e3bd28
fix: add project managemenet api with proper working 2026-02-13 18:07:27 +05:30
Sameer Kankute
e85da33240
Merge pull request #21044 from BerriAI/litellm_oss_staging_02_07_20262
Litellm oss staging 02 07 20262
2026-02-13 17:53:32 +05:30
Sameer Kankute
d8f114e363
Merge branch 'main' into litellm_oss_staging_02_07_20262 2026-02-13 17:53:03 +05:30
Sameer Kankute
bece16069e Add e2e tests for checking if all beta headers in the mapping works 2026-02-13 15:49:50 +05:30
Sameer Kankute
77dc742fde Add support sync with remote URL for beta headers 2026-02-13 15:49:42 +05:30
Julio Quinteros Pro
b880320ec6 chore: add .claude directory to gitignore
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 05:57:44 -03:00
Sameer Kankute
e0c98d62d4 Fix: LoggingWorker Missing Azure Credentials When Fetching 2026-02-13 13:05:49 +05:30
Sameer Kankute
023e02bf73 Fix : Cost Tracking Callback Fails with KeyError: 'stream' 2026-02-13 12:27:56 +05:30
Sameer Kankute
9a9315043f Fix: Batch Rate Limiter Cannot Access User Files 2026-02-13 12:23:37 +05:30
yuneng-jiang
75ae1df5c7 fix ruff check 2026-02-12 22:17:14 -08:00
yuneng-jiang
9a2410be71
Merge pull request #20922 from atapia27/feat/fallback-display
fallback-display: updated fallback display table to use arrows and card structure for better visibility.
2026-02-12 22:05:32 -08:00
Sameer Kankute
eb4e8ea7df Remove unused imports 2026-02-13 11:25:35 +05:30
Sameer Kankute
ac5ed44e9a Ude cache for db call on user access 2026-02-13 11:24:07 +05:30
yuneng-jiang
b29c0bfb8f
Update litellm/proxy/spend_tracking/spend_management_endpoints.py
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-12 21:52:04 -08:00
Sameer Kankute
bd27874786 Add migration script for the new table 2026-02-13 11:14:01 +05:30
yuneng-jiang
ae44022a40 Fixing spend tests 2026-02-12 21:37:19 -08:00
yuneng-jiang
21b38a4030 Merge pull request #20720 from OrionCodeDev/fix-spend-logs
fix-spend-logs
2026-02-12 21:37:00 -08:00
Sameer Kankute
d29981ecc4 Add support for managed file ids 2026-02-13 10:52:48 +05:30
Sameer Kankute
be69ba270e Add using managed vector store creds for vector store files endpoint 2026-02-13 10:33:49 +05:30
Harshit Jain
7f6563f1a6
fix: openai moderation guardrails (#20718)
* fix: openai moderation guardrails

* adds missing import

* mv: test file to right place
2026-02-12 21:03:11 -08:00
Otavio Brito
b1a67666ea
refactor: reuse get_instance_fn in initialize_custom_guardrail - allow module level import (#20917) 2026-02-12 20:53:47 -08:00
Rahul Dhanawade
a58f18872b
Fix #20562: Correct Bedrock Claude Opus 4.6 model IDs (#20564) 2026-02-12 20:48:25 -08:00
The Mavik
99b4d17ee8
fix: guard against None litellm_metadata in batch logging (#20832)
When litellm_metadata is explicitly set to None in litellm_params,
`dict.get("litellm_metadata", {})` returns None (not the default {}),
because the key exists. The subsequent .get() call on None raises
`AttributeError: 'NoneType' object has no attribute 'get'`.

Use `or {}` instead, consistent with line 4924 in the same file.

Fixes #15836
2026-02-12 20:45:30 -08:00
Lei Nie
68d2306dd4
feat(vertex_ai): preserve usageMetadata in _hidden_params (#20559)
* fix: allow Management keys to access user/daily/activity and team/daily/activity

* feat(vertex): surface trafficType via generic provider_specific_fields in Responses API

Extract Vertex AI's trafficType from usageMetadata in both streaming and
non-streaming paths, storing it in _hidden_params["provider_specific_fields"].

The Responses API transformation layer generically passes any
_hidden_params["provider_specific_fields"] dict to the ResponsesAPIResponse,
avoiding provider-specific logic in the bridge.

Also fix stream_chunk_builder to propagate _hidden_params from the last
streaming chunk to the rebuilt ModelResponse, ensuring provider metadata
survives the chunk→response rebuild.

---------

Co-authored-by: naaa760 <neh6a683@gmail.com>
Co-authored-by: yuneng-jiang <yuneng.jiang@gmail.com>
2026-02-12 20:44:59 -08:00
Cesar Garcia
20ae67a3ba
fix(vertex): map IMAGE_PROHIBITED_CONTENT finish reason to content_filter (#20524)
Closes #20357
2026-02-12 20:39:55 -08:00
Sameer Kankute
26c0624fd7 Add managed vector store hooks 2026-02-13 10:03:31 +05:30
Sameer Kankute
c04bef376b Add router for vector store and search vector 2026-02-13 10:02:38 +05:30
Cesar Garcia
69f78ae64f
cleanup(model_prices): remove 39 deprecated OpenRouter models (#20786)
These models return 404 ("No endpoints found") from OpenRouter's API
and are no longer listed in /api/v1/models.

Fixes #20521
2026-02-12 20:32:00 -08:00
Cesar Garcia
50ce7c08d6
fix: normalize endpoint display_name values to consistent convention (#20791)
Apply `{Provider} {Endpoint} API` naming convention to all endpoint
display names in provider_endpoints_support.json.

Ref: https://github.com/fastrepl/contextlengthof/issues/11
2026-02-12 20:31:35 -08:00
Cesar Garcia
0829000fca
feat: add 30 missing models to pricing JSON (#20797)
* feat: add 28 missing models to pricing JSON

Add models active in OpenAI and Gemini APIs but missing from the JSON.
All verified via litellm library and direct API calls.

OpenAI (15):
- TTS: tts-1-1106, tts-1-hd-1106, gpt-4o-mini-tts-2025-{03-20,12-15}
- Transcription: gpt-4o-mini-transcribe-2025-{03-20,12-15}
- Search: gpt-5-search-api, gpt-5-search-api-2025-10-14
- Realtime: gpt-realtime-mini-2025-{10-06,12-15}
- Video: sora-2, sora-2-pro
- Image: chatgpt-image-latest

Gemini (13):
- Image: gemini-2.0-flash-exp-image-generation (direct + gemini/ prefix)
- Chat: gemini/gemini-2.0-flash-lite-001
- Native Audio: gemini-2.5-flash-native-audio-{latest,preview-09-2025,preview-12-2025}
- TTS: gemini-2.5-flash-preview-tts
- Aliases: gemini-flash-latest, gemini-flash-lite-latest, gemini-pro-latest, gemini-exp-1206

* fix: correct pricing for realtime-mini models and add sora-2-pro-high-res

- Add missing cache_read_input_token_cost ($0.06/1M) to gpt-realtime-mini dated versions
- Add missing input_cost_per_image ($0.80/1M) to gpt-realtime-mini dated versions
- Add sora-2-pro-high-res ($0.50/sec) for 1024x1792/1792x1024 resolutions
- Add openai/sora-2-pro-high-res variant
2026-02-12 20:30:14 -08:00
Cesar Garcia
64d8f1a601
docs: add native thinking param examples for Claude Opus 4.6 (#20799)
* docs: add native thinking param examples for Claude Opus 4.6

Add documentation for using the native `thinking` parameter directly
with adaptive thinking and explicit budgets for Claude Opus 4.6.

* docs: add note about reasoning_effort mapping to adaptive for Opus 4.6
2026-02-12 20:29:28 -08:00
Sameer Kankute
19d4566bc8 Add encoder decoder for model id 2026-02-13 09:58:20 +05:30
Sameer Kankute
ad54d1e3ba Add target model names for vector store endpoints 2026-02-13 09:57:50 +05:30
datzscaler
f74fdfbb61
feat(ui): added UI for Zscaler AI Guard (#21077)
* fix: allow Management keys to access user/daily/activity and team/daily/activity

* feat(ui): added UI for Zscaler AI Guard

* feat(ui): addressed UI comment

* Apply suggestion from @greptile-apps[bot]

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: naaa760 <neh6a683@gmail.com>
Co-authored-by: yuneng-jiang <yuneng.jiang@gmail.com>
Co-authored-by: Krish Dholakia <krrishdholakia@gmail.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-12 20:27:44 -08:00
Sameer Kankute
fa48166b10 Add _PROXY_LiteLLMManagedVectorStores class 2026-02-13 09:57:17 +05:30
Sameer Kankute
b2fd80869c Add BaseManagedResource class 2026-02-13 09:53:40 +05:30
jquinter
0a2f74b93e
fix: remove unused MCP_NPM_CACHE_DIR import from module level (#21084)
The constant is already imported locally at line 899 where it's actually used.
The top-level import was redundant and triggered ruff F401.
2026-02-12 20:19:46 -08:00
mubashir1osmani
1bc90d2db7
fix guardrail status error (#20972)
* fix guardrail status error

* fix function imports
2026-02-12 20:19:13 -08:00
pb
75e69e8d3b
feat(bedrock): extend model support (#21035)
* add nvidia.nemotron-nano-3-30b

* add zai.glm-4.7

* entend video input support for kimik2.5
2026-02-12 20:11:00 -08:00
joaokopernico
da31dd19da
fix(anthropic): use Authorization Bearer for OAuth tokens instead of x-api-key (#21039)
OAuth tokens (sk-ant-oat*) require Authorization: Bearer header per
Anthropic's OAuth specification, but were being sent via x-api-key
which Anthropic rejects with 'invalid x-api-key'.

- optionally_handle_anthropic_oauth: detect OAuth tokens in api_key
  param (standard chat flow), not just Authorization header
- get_anthropic_headers: use Authorization: Bearer + required OAuth
  headers for OAuth tokens, x-api-key for regular API keys
- Passthrough messages: skip x-api-key when Authorization is set
- Add oauth-2025-04-20 to beta headers whitelist config
2026-02-12 20:10:08 -08:00
Emerson Gomes
022846baae
fix(router): remove repeated provider parsing in budget limiter hot path (#21043)
* fix(router): remove budget limiter provider hot-path overhead

- avoid LiteLLM_Params instantiation from dict deployments in provider lookup\n- resolve provider once per deployment and reuse in budget filtering\n- add router unit tests for hot-path behavior\n\nFixes #21042

* fix(router): handle None provider cache entries in budget limiter

- avoid recomputing provider when cached value is None\n- clarify deployment_provider_map uses id(deployment) keys\n- add regression test covering None-provider cache path

* refactor(router): avoid id()-based provider cache coupling

- switch provider cache handoff to index-aligned list between budget-limiter loops\n- remove implicit dependency on object identity stability\n- move hot-path tests to tests/test_litellm/router_strategy per template guidance

* chore(router): make use_litellm_proxy default explicit

Use deployment_litellm_params.get('use_litellm_proxy', False) for clarity and parity with LiteLLM_Params default behavior.

* test(router): add provider-resolution parity guard

- wrap dict litellm_params with lightweight attribute view for get_llm_provider\n- reduce drift risk from manual field extraction vs LiteLLM_Params defaults\n- add parity test matrix comparing optimized path to legacy LiteLLM_Params behavior for dict deployments

* test(router): harden dict view compatibility for provider resolution

- extend _LiteLLMParamsDictView with mapping-like and dump methods\n- add regression test simulating future get_llm_provider method-based access\n- keep hot-path optimization while reducing duck-typing break risk

---------

Co-authored-by: Codex <codex@example.com>
2026-02-12 20:05:55 -08:00