Commit graph

33141 commits

Author SHA1 Message Date
yuneng-jiang
938a920372 cost breakdown fix 2026-02-13 12:51:55 -08:00
Ishaan Jaffer
817de99177 UI build 2026-02-13 12:51:17 -08:00
Ishaan Jaff
40b290aa84
fix: MCP Gateway SCOPES on Atlassian issue (#21150)
* fix: SCOPES on Atlassian issue

* test: add regression tests for scopes=None in OAuth discovery endpoints
2026-02-13 12:43:56 -08:00
yuneng-jiang
71107b3fd0
Merge pull request #21149 from BerriAI/litellm_spendlogs_reset_custom_time
[Fix] UI - Spend Logs: Reset Filters Resets Custom Date Range
2026-02-13 12:30:45 -08:00
yuneng-jiang
eb144a44d0
Merge pull request #21144 from BerriAI/litellm_ui_fallbacks_10
[Refactor] UI - Fallbacks: Default Configurable to 10 Models
2026-02-13 12:30:35 -08:00
yuneng-jiang
82fcc39e6b reset custom time range when reset filters is clicked 2026-02-13 12:12:50 -08:00
Ishaan Jaff
568edde87a
docs: fix Claude Code MCP tutorial with correct config and URL patterns (#21145)
- Fix Atlassian config: use http transport and correct URL (/v1/mcp not /v1/sse)
- Fix URL pattern: use standard /mcp/<server_name> not legacy /<server_name>/mcp
- Add parameter breakdown table explaining each claude mcp add argument
- Add warning that server name in proxy config must match URL path
- Add ngrok step for OAuth callback accessibility
- Add ~/.claude.json config option alongside claude mcp add
- Fix auth header guidance: use x-litellm-api-key for OAuth servers
2026-02-13 12:12:38 -08:00
yuneng-jiang
6eeb9b109b
Merge pull request #21143 from BerriAI/litellm_model_id_search
[Feature] UI - Spend Logs: Sorting Columns
2026-02-13 11:53:16 -08:00
yuneng-jiang
724ab1c154
Update ui/litellm-dashboard/src/components/networking.tsx
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-13 11:53:04 -08:00
Krish Dholakia
24b56a14eb
Guardrails - new Policy Templates (pre-configured guardrail combinations for specific use-cases) (#21025)
* feat(patterns.json): add australia specific pii patterns - tax file number, abn, medicare number

Improve PII detection for australian contexts

* feat(patterns.json): add iban + street address pattern detection

* feat: support policy templates on ui

allows admin to enable pre-configured guardrails

helps cover specific use-cases well

* feat: create missing guardrails, working policy templates

* feat: policy_templates.json

support hosted policy templates

allows others to contribute to the policy templates

* docs: document new policy templates

* fix: address greptile feedback

* fix: fix linting error
2026-02-13 11:53:02 -08:00
yuneng-jiang
25fccad127 Change default fallbacks to 10 models 2026-02-13 11:50:13 -08:00
yuneng-jiang
adc2859f0a sorting spend logs in ui 2026-02-13 11:33:41 -08:00
datzscaler
aab8edde67
fix(guardrails): Zscaler AI Guard bug fixes and support during post-call (#20801)
* fix(guardrails): fixed post-call issue with Zscaler guardrail and invalid headers. Added unittests

* fix(guardrails): Addressed greptil comments. Make policyid hanlding more clear

* fix(guardrails): Address greptile comment

* Update litellm/proxy/guardrails/guardrail_hooks/zscaler_ai_guard/zscaler_ai_guard.py

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

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-13 11:28:14 -08:00
Sameer Kankute
066e694f5e
Merge pull request #21110 from BerriAI/litellm_litellm_anthropic_remote_url3
Add support for remote URL fetching for anthropic beta header mapping
2026-02-14 00:30:51 +05:30
Ishaan Jaff
a1b7261502
Remove exposed API key from example configuration in mcp_server_manager.py (#21129)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Ishaan Jaff <ishaan-jaff@users.noreply.github.com>
2026-02-13 09:52:38 -08:00
Julio Quinteros Pro
5bcd3b53c9 fix: import LiteLLM_ObjectPermissionTable from _types instead of proxy_server
Per maintainer feedback, FastAPI should always be available in proxy code.
The issue was that MCP tests were importing from proxy_server unnecessarily,
pulling in all proxy dependencies including policy_resolve_endpoints.

Fix:
- Revert policy_resolve_endpoints.py to use direct FastAPI imports
- Update MCP tests to import LiteLLM_ObjectPermissionTable from litellm.proxy._types
  instead of litellm.proxy.proxy_server

This avoids importing the entire proxy_server module with all its dependencies
when tests only need specific types.

Addresses: https://github.com/BerriAI/litellm/pull/21075/changes#r2802201174
2026-02-13 14:46:03 -03:00
Julio Quinteros Pro
1fffeb953c fix: restore if TYPE_CHECKING block for proper FastAPI import handling
Greptile's previous suggestion accidentally removed the if TYPE_CHECKING block,
leaving an orphan else statement that caused a syntax error.
This commit restores the proper structure.
2026-02-13 14:46:03 -03:00
jquinter
ca9cdea8a7 Update litellm/proxy/policy_engine/policy_resolve_endpoints.py
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-13 14:46:02 -03:00
Julio Quinteros Pro
e6385a6c83 fix: make policy_resolve_endpoints importable without FastAPI
Adds try/except around FastAPI imports with fallback mock classes.
This allows the module to be imported in test environments where
proxy dependencies (FastAPI) may not be installed.

Fixes NameError when MCP tests try to import from proxy_server which
imports from this module:
- NameError: name 'APIRouter' is not defined
- NameError: name 'Depends' is not defined
- NameError: name 'HTTPException' is not defined
- NameError: name 'Query' is not defined
2026-02-13 14:46:02 -03:00
Julio Quinteros Pro
64424d00c1 fix: use None instead of Reasoning() for reasoning parameter
The ResponsesAPIResponse.reasoning field expects Optional[Dict[str, Any]],
not a Reasoning object. Passing an empty Reasoning() object causes a mypy type error.

Fix: Pass None instead of Reasoning() since the field is optional and we're
not providing any reasoning data.

Fixes mypy error:
Argument "reasoning" to "ResponsesAPIResponse" has incompatible type
"Reasoning"; expected "dict[str, Any] | None"
2026-02-13 14:30:05 -03:00
Aidan Kovacic
7a164ba2cc
fix: shared health check serialization (#21119)
* Add BaseModel serialization to safe_json_dumps

* Use safe_dumps in shared health check caching

* remove redundant seen.add
2026-02-13 09:15:43 -08:00
yuneng-jiang
5ddba48df9
Merge pull request #21088 from BerriAI/litellm_spend_rebase
[Fix] Spend Management Tests
2026-02-13 09:11:42 -08:00
Sameer Kankute
d4dbb460cc Make tests run with local beta header mapping json 2026-02-13 22:31:42 +05:30
Sameer Kankute
aaf5938864
Merge pull request #21089 from BerriAI/litellm_vector_store_endpoints
Add target_model_names for vector store endpoints
2026-02-13 22:18:29 +05:30
jquinter
93e8127562
chore: remove redundant test-complete job from test workflow (#21106)
The test-complete aggregate job adds no value as GitHub Actions
already provides visibility into matrix job results.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 08:39:00 -08:00
jquinter
1e0b1c8334
fix: remove duplicate PerplexityResponsesConfig from LLM_CONFIG_NAMES (#21105)
Removes duplicate entry of PerplexityResponsesConfig that was causing
Ruff linting error F601 (dictionary key literal repeated).

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 08:38:50 -08:00
jquinter
d32b654d6b
fix: regenerate poetry.lock to sync with pyproject.toml (#21108)
poetry.lock was out of sync with pyproject.toml, causing CI failures
across all PRs with "Run `poetry lock` to fix the lock file" error.

Regenerated the lock file to resolve the sync issue.

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 08:38:29 -08:00
fpagny
37157ee35f
feat(scaleway): add scaleway provider (#21121)
* feat(scaleway): add scaleway provider

* Fix link format

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

* remove unused tabs and tabitem

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

* fix: add scaleway to sidebar menu

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-13 08:37:58 -08:00
Sameer Kankute
a653a8ddde
Merge pull request #21092 from BerriAI/litellm_azure_batches_issues
Fix azure batches issues
2026-02-13 22:06:21 +05:30
Sameer Kankute
fedfec51ab
Merge pull request #21120 from BerriAI/litellm_add_rag_ingest_vertex_ai
Add rag ingest vertex ai
2026-02-13 22:04:57 +05:30
Sameer Kankute
4ad0ecd9eb Fix mypy issues 2026-02-13 22:02:27 +05:30
Sameer Kankute
dc874fc98f Fix mypy issues 2026-02-13 21:54:46 +05:30
Sameer Kankute
ef456cafc8
Merge pull request #21040 from BerriAI/litellm_fix_stale_mcp_issue
[Bug] Fix Session not found errors
2026-02-13 21:52:27 +05:30
Alexsander Hamir
68122ede2c
docs: fix DEFAULT_NUM_WORKERS_LITELLM_PROXY default (1, not 4) (#21127)
- config_settings.md: state default is 1, clarify NUM_WORKERS recommendation
- proxy_cli.py: correct --num_workers help text to match actual default
2026-02-13 07:36:20 -08:00
Sameer Kankute
1c0464fac0 Remove print statement 2026-02-13 20:13:14 +05:30
Sameer Kankute
c5d7418e9e Add VertexAIRAGIngestion class 2026-02-13 20:11:25 +05:30
Sameer Kankute
9e02fd065a Add support for vertex ai for rag/ingest 2026-02-13 20:11:10 +05:30
Sameer Kankute
4a9d851dc4
Merge branch 'main' into litellm_litellm_anthropic_remote_url3 2026-02-13 18:40:00 +05:30
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