Commit graph

5125 commits

Author SHA1 Message Date
minijeong-log
9f68081f6d
feat: Add built-in migration lock to prevent concurrent Prisma migrate deploy (#14440)
* feat: prisma migrate deploy with lock
Author: Mini Jeong <mini.jeong@navercorp.com>

* fix: use redis cache from proxy server
Author: Mini Jeong <mini.jeong@navercorp.com>

* fix: add type checks and fix unit tests for migration lock

- Add DATABASE_URL validation in _create_baseline_migration() and _resolve_all_migrations()
- Fix MyPy type errors by adding None checks before using database_url in subprocess calls
- Add _resolve_all_migrations mock to failing unit tests to prevent filesystem errors
- Apply Black formatting to modified files

Fixes:
- MyPy type errors: database_url could be None when passed to subprocess
- Unit test failures: _resolve_all_migrations tried to create directories in read-only /test path

* fix: resolve MyPy type error in vertex_ai vertex_llm_base

Fix MyPy type checking error where vertex_api_version parameter type
was incompatible with function signature expectation.

* fix: Return 403 exception when calling GET responses api

* fix: added new step into rotate master key function for processing credentials table

* Add redisvl in requirements.txt

* fix: fixed the issue of handling root paths when processing Discovery protected resource metadata and authorization server metadata URLs.

* fix: added additional grant type into oauth_authorization_server response for fixing mcp auth register bad request issue

* fix: added RFC RECOMMENDED property(scopes_supported) to protected resource and authorization server metadata

* fix: removed initialize the tool name to MCP server name mapping(oauth2) on startup for avoiding 401 error

* fix: upgraded mcp sdk depency version for fixing ClosedResourceError

* Use already configured opentelemetry providers

Users that instrument using opentelemetry-instrument can now setup exporters as per their environment.

* Handle all protocols for all telemetry

* Add more tests

* feat(mcp): parallelize tool fetching from multiple MCP servers (#18627)

* feat(mcp): parallelize tool fetching from multiple MCP servers

Replace sequential tool fetching with asyncio.gather() to reduce
client timeouts when using multiple MCP servers.

Changes:
- mcp_server_manager.py: list_tools() now fetches tools in parallel
- server.py: _get_tools_from_mcp_servers() now fetches tools in parallel

Real-world impact (7 MCP servers example):
- Sequential: ~4.5+ seconds (exceeds typical 5-second client timeouts)
- Parallel: ~1.2 seconds (max of all servers)

Fixes #18626

* fix: copy oauth2_headers to avoid shared dict mutation in parallel tasks

* feat: add display_name, model_vendor, and model_version metadata

* added the option of adding langsmith tenant id in the env (#18623)

* fix(router): Validate routing_strategy at startup to fail fast with helpful error. (#18624)

Invalid routing_strategy values (e.g., "simple" instead of "simple-shuffle") previously failed silently, causing confusing "No deployments available" errors downstream. This change adds upfront validation in routing_strategy_init() to:

- Check if the provided strategy matches valid string values or RoutingStrategy enum
- Raise a clear ValueError listing valid options if invalid
- Fail fast at startup instead of at request time

Fixes behavior reported in #11330 where users had to debug cryptic errors.

Valid strategies: simple-shuffle, least-busy, usage-based-routing, latency-based-routing, cost-based-routing, usage-based-routing-v2

Co-authored-by: Flibbert E. Gibbitz <flibbertygibbitz@runelabs.ai>

* Add libsndfile to database Docker image for audio processing (#18612)

The litellm-database Docker image was missing the libsndfile system
library, which is required by the soundfile Python package for audio
file processing. This caused failures when using audio transcription
endpoints that attempt to calculate audio duration.

This adds libsndfile to the runtime dependencies in Dockerfile.database,
consistent with Dockerfile.alpine which already includes this library.

* Fix: Map Gemini cached_tokens to Langfuse cache_read_input_tokens (#18614)

* Fix: Map Gemini cached_tokens to Langfuse cache_read_input_tokens

Fixes #18520

## Problem
Langfuse integration was not capturing cached tokens from Gemini models.
Gemini returns cached tokens in `usage.prompt_tokens_details.cached_tokens`,
but Langfuse only read from top-level `usage.cache_read_input_tokens`
(which only Anthropic populates).

## Solution
Updated langfuse.py to check both locations:
1. First check top-level cache_read_input_tokens (for Anthropic)
2. Then check prompt_tokens_details.cached_tokens (for Gemini, OpenAI, others)

This ensures all providers' cached tokens are properly reported to Langfuse.

## Changes
- Modified litellm/integrations/langfuse/langfuse.py (lines 742-761)
- Added 3 unit tests in tests/test_litellm/integrations/langfuse/test_gemini_cached_tokens.py
- All existing Langfuse tests still pass (11/11)

## Testing
- test_cached_tokens_extraction: Verifies Gemini cached_tokens extraction
- test_cached_tokens_not_present: Backward compatibility (no cached_tokens)
- test_cached_tokens_is_zero: Edge case when cached_tokens = 0

* Refactor: Extract cache token logic into helper function

Address review feedback from @officer47p

- Created _extract_cache_read_input_tokens() helper function
- Reduces code bloat in _log_langfuse_v2 method
- Improves testability and reusability
- All tests still passing (11/11)

* Adding Role Mappings

* Fixing Edit SSO Settings Modal

* feat: add user_mcp_management_mode for view_all visibility

* Fixing tests

* fix: missing mcp_allow_all_ui.png

* docs: add user_mcp_management_mode

* Align responses API streaming hooks with chat pipeline

* Clarify responses API streaming context

* Address review comments

* feat: Add GigaChat provider support (#18564)

* feat: Add GigaChat provider support

Add native support for GigaChat API (Sber AI, Russia's leading LLM).

Supported features:
- Chat completions (sync/async)
- Streaming (sync/async)
- Function calling / Tools
- Structured output via JSON schema (emulated through function calls)
- Image input (base64 and URL)
- Embeddings

Closes #18515

* fix: resolve mypy type errors in GigaChat handler

- Fix _prepare_file_data return type (use 3-tuple for cleaner type flow)
- Add type annotations for lists in _process_content_parts methods
- Add type annotations in _collapse_user_messages
- Use ChatCompletionToolCallChunk for proper tool_use typing
- Add type: ignore[override] for astreaming async generator

* refactor(gigachat): migrate to BaseConfig pattern

* fix: remove unused imports

* fix: resolve mypy type errors

* fix: mypy type errors

* refactor: address review feedback for GigaChat provider

- Remove singleton pattern, reuse litellm HTTPHandler
- Move constants/errors to transformation files, delete common_utils.py
- Add models to model_prices_and_context_window.json
- Fix ssl_verify not passed to HTTP client for embeddings

* docs: update GigaChat documentation with ssl_verify requirement

* Revert "Add redisvl in requirements.txt"

* Put reasoning summary behind feat flag

* fix: model eol

* fix: anthropic claude-3-opus-20240229 EOL

* Revert "fix: model eol"

This reverts commit 5aa1665d79.

* Fix: ImportError: qualifire package is required for QualifireGuardrail. Install it with: pip install qualifire

* fix: test_secret_manager_failure_does_not_block_email

* fix: test_update_ui_settings_allowlisted_value

* fix: test_aaamodel_prices_and_context_window_json_is_valid

* fix: test_all_models_have_display_name

* fix: async def test_bedrock_apply_guardrail_blocked()

* fix: test_databricks_embeddings[True]

* fix:test_anthropic_beta_header

* fix:test_api_error_handling

* fix:mypy mcp management

* Revert "feat(model_cost): add display_name, model_vendor, and model_version metadata to model entries"

* [Feat] New API Endpoint - Responses API (v1/responses/compact) (#18697)

* init transform_compact_response_api_request

* init acompact_responses

* init async_compact_response_api_handler in llm http handler

* init transform_compact_response_api_request for openai

* init acompact_responses

* fix acompact_responses

* add OAI Compact API

* docs responses API Compact

* code qa checks

* test_openai_compact_responses_api

* fix mypy linting

* fix: remove display name

* Add the LITELLM_REASONING_AUTO_SUMMARY in doc

* fix model map

* [UI] - Feat add request provider form on UI (#18704)

* add request provider form

* fix link to github

* add button

* fix link

* fix(streaming): normalize status code extraction to prevent 4xx errors from triggering mid-stream fallback (#18698)

在流式处理错误时,添加状态码标准化逻辑,确保 4xx 客户端错误直接抛出而不是被包装成 MidStreamFallbackError。

- 新增 _normalize_status_code 函数用于从异常对象提取状态码
- 优先从异常的 status_code 属性获取,其次从 response.status_code 获取
- 当映射异常或原始异常的状态码在 400-499 范围内时,直接抛出映射异常
- 添加单元测试验证 Vertex AI 400 错误正确抛出为 BadRequestError
- 确保流式处理中的客户端错误能够正确传播,而不会触发回退机制

---------

Co-authored-by: Eric84626 <lixiannan@gmail.com>
Co-authored-by: Eric84626 <97266539+Eric84626@users.noreply.github.com>
Co-authored-by: Sameer Kankute <sameer@berri.ai>
Co-authored-by: mangabits <1457532+mangabits@users.noreply.github.com>
Co-authored-by: Costa Tsaousis <costa@tsaousis.gr>
Co-authored-by: Nik <nikolas.garza5@gmail.com>
Co-authored-by: Shivam Rawat <161387515+shivamrawat1@users.noreply.github.com>
Co-authored-by: FlibbertyGibbitz <seth@evenkeelconsultingllc.com>
Co-authored-by: Flibbert E. Gibbitz <flibbertygibbitz@runelabs.ai>
Co-authored-by: Cesar Garcia <128240629+Chesars@users.noreply.github.com>
Co-authored-by: yuneng-jiang <yuneng.jiang@gmail.com>
Co-authored-by: Yuta Saito <uc4w6c@bma.biglobe.ne.jp>
Co-authored-by: LingXuanYin <3546599908@qq.com>
Co-authored-by: YutaSaito <36355491+uc4w6c@users.noreply.github.com>
Co-authored-by: 0717376 <103773680+0717376@users.noreply.github.com>
Co-authored-by: Ishaan Jaff <ishaanjaffer0324@gmail.com>
Co-authored-by: Kris Xia <xiajiayi0506@gmail.com>
Co-authored-by: Krish Dholakia <krrishdholakia@gmail.com>
2026-01-06 23:46:24 +05:30
YutaSaito
100f617a8f
Merge pull request #18668 from BerriAI/litellm_feat_noma_mcp_guardrail
[feat] add support MCP guardrail to noma
2026-01-06 07:01:57 +09:00
Yuta Saito
bdd95314a7 docs: mention MCP prompt/resources types in overview 2026-01-06 06:29:37 +09:00
Yuta Saito
4eecf59f86 feat: add support MCP guardrail to noma 2026-01-06 06:15:56 +09:00
drorIvry
b6a64ff99a
feature/ add qualifire guardrails (#18594)
* init guardrails

* init guardrails

* some fixes

* some fixes

* ruff

* some fixes

* some fixes

* some fixes

* some fixes

* some fixes

* some fixes

* docs
2026-01-06 01:34:43 +05:30
orgersh92
d8d10f5e25
lasso-guardrail-api docs (#18652) 2026-01-05 20:58:26 +05:30
Ishaan Jaffer
f752ec3eaf fix 2026-01-05 20:25:39 +05:30
Ishaan Jaff
bf1c5bef59
[UI] Add view for estimating costs across requests (#18645)
* add estimate_cost endpoint

* TestCostEstimateEndpoint

* fix estimate_cost

* add /cost/estimate to spend tracking routes

* fix code QA checks

* fixes endpoint

* v0 cost estimator

* v0 cost estimator

* formatNumberWithCommas

* fix admin view

* docs

* docs fix + export PDF/CSV

* fixes for export
2026-01-05 19:19:58 +05:30
Yuta Saito
fee9553c51 feat: add allow_all_keys doc 2026-01-05 16:56:19 +09:00
amangupta-20
399579f8ea
feat: Add Levo AI integration (#18529) 2026-01-05 08:49:21 +05:30
cantalupo555
9b1c5f7e36
feat(zai): Add GLM-4.7 model with reasoning support (#18476)
Add support for Z.AI GLM-4.7, latest flagship model with enhanced reasoning capabilities.

Changes:
- Add zai/glm-4.7 to model pricing with /bin/bash.60/M input, .20/M output
- Add cached input pricing (/bin/bash.11/M) for GLM-4.7
- Add supports_reasoning flag to enable thinking parameter
- Update ZAIChatConfig to support thinking parameter for models with reasoning
- Update documentation with GLM-4.7 as latest flagship model
- Add cached input column to pricing table (GLM-4.7 only)
- Add tests for GLM-4.7 reasoning support and cost calculation
- Update all examples to use GLM-4.7

Model specifications:
- Context: 200K input, 128K output
- Supports: reasoning, function calling, tool choice, prompt caching
- Pricing: Same as GLM-4.6 with cache support

See: https://docs.z.ai/guides/llm/glm-4.7
2026-01-04 00:44:19 +05:30
Krish Dholakia
969790c463
Iam roles anywhere docs (#18559)
* Add documentation for IAM Roles Anywhere

Co-authored-by: krrishdholakia <krrishdholakia@gmail.com>

* Refactor Bedrock provider docs for IAM Roles Anywhere

Co-authored-by: krrishdholakia <krrishdholakia@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-01-04 00:10:07 +05:30
Krish Dholakia
87fe62229f
feat: Add adopters page and data structure (#18605)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-01-03 21:51:19 +05:30
Krish Dholakia
0aae5153b6
docs: Clarify Bedrock AgentCore documentation (#18603)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-01-03 16:06:07 +05:30
Chetan Choudhary
687adc6024
Add log_format parameter to GenericAPILogger (#18587)
Adds log_format parameter supporting json_array (default), ndjson, and single formats. NDJSON format enables webhook integrations like Sumo Logic to parse individual log records at ingest time. Defaults to json_array for backward compatibility.
2026-01-02 23:28:30 +05:30
Sameer Kankute
c8bb92afdc
Merge pull request #18579 from BerriAI/litellm_remove_prompt_chaching_header
Remove prompt caching headers as the support has been removed
2026-01-02 21:01:50 +05:30
YutaSaito
e9365c496d
Merge pull request #18580 from BerriAI/litellm_feat_support_metaurl_on_ui
feat: add UI support for configuring meta URLs
2026-01-02 17:54:26 +09:00
Lukas de Boer
edc8413f1e
Add Kubernetes ServiceAccount JWT authentication support (#18055)
* Allow get_nested_value dot notation to support escaping for Kubernetes JWT Support

* Add support for team and org alias fields, add docs, tests

* Fix lint issue with max statements in handle jwt logic
2026-01-02 14:02:31 +05:30
Yuta Saito
35f9a75d55 feat: add UI support for configuring meta URLs 2026-01-02 15:07:37 +09:00
Sameer Kankute
ca94990307 remove prompt caching headers as the support has been removed 2026-01-02 11:08:35 +05:30
Alexsander Hamir
936aa6821f
[Fix] CI/CD - litellm_security_tests (#18567) 2026-01-01 14:20:04 -08:00
Alexsander Hamir
a7da4833da
[Fix] CI/CD - check_code_and_doc_quality (#18560) 2026-01-01 11:18:59 -08:00
Yuta Saito
b343d15157 fix: prevent LiteLLM from closing external OTEL spans 2026-01-01 08:28:48 +09:00
Prajeena Maharjan
b720fba142
Fix formatting in proxy configs documentation
Got an error message:

{"error":{"message":"Invalid JSON payload: trailing comma is not allowed: line 8 column 8 (char 141)","type":"invalid_request_error","param":"request_body","code":"400"}}%
2025-12-28 23:48:43 -06:00
Matt Cowger
9f4a4fd271
Add docs as follow on to #18362 (#18388) 2025-12-25 11:08:47 +05:30
Ishaan Jaff
1123cfa928
[Feat] AI Gateway - Add support for Platform Fee / Margins (#18427)
* init cost_margin_config

* feat: add cost margin

* init types

* LITELLM_SETTINGS_SAFE_DB_OVERRIDES

* feat _apply_cost_margin

* ui endpoint

* ui provider margins

* add margin

* refactored ui

* test cost margins

* refactored ui

* provider discounts

* add cost_breakdown to spendLogs

* add CostBreakdownViewer

* fix cost breakdown

* docs fix

* doc margins

* docs margins
2025-12-25 11:07:27 +05:30
Sameer Kankute
42121ad13b Update minimax docs to be in proper format 2025-12-24 09:25:36 +05:30
YutaSaito
55bfb24ef8
Merge pull request #18324 from BerriAI/litellm_feat_dynamic_env_propagation_for_stdio_MCP_server
feat: support MCP stdio header env overrides
2025-12-24 06:29:53 +09:00
Ishaan Jaff
4f7682f670
[Feat] RAG query endpoint - Add RAG Search / Query endpoint (#18376)
* add rag query to llm api endpoints

* add rag query as a new endpoint

* docs - new endpoint

* ingest+query

* docs add rag query
2025-12-23 22:30:37 +05:30
Ishaan Jaff
0f63cbea59
[Feat] Interactions API - allow using all litellm providers (interactions -> responses api bridge) (#18373)
* add BaseInteractionsTest

* add interactions_api_handler

* init bridge

* init LiteLLMResponsesInteractionsConfig

* LiteLLMResponsesInteractionsHandler

* mv test

* fixes api spec

* docs

* fix transform+iterators

* docs fix

* fix iterator
2025-12-23 22:30:22 +05:30
Sameer Kankute
c7e0366925 Add support for minmax tts 2025-12-23 21:53:53 +05:30
Sameer Kankute
a2240775c4 correct doc 2025-12-23 21:46:34 +05:30
Sameer Kankute
e18cfc0cf6 corrected provider name 2025-12-23 21:42:51 +05:30
Sameer Kankute
26c0396146 Add documentation for chat compeltion minmax 2025-12-23 17:10:06 +05:30
Sameer Kankute
af8483b37e Fix: documentation for litellm sdk 2025-12-23 16:27:35 +05:30
Sameer Kankute
0174c56c90 Fix: documentation for litellm sdk 2025-12-23 16:23:53 +05:30
Sameer Kankute
7559869359
Merge branch 'main' into litellm_minmax_anthropic_spec 2025-12-23 16:13:47 +05:30
Sameer Kankute
403875256c Add minmax documentation 2025-12-23 16:11:26 +05:30
Cesar Garcia
40fac60ea7
docs(openai): fix gpt-5-mini reasoning_effort supported values (#18346)
Remove 'none' from gpt-5-mini's supported reasoning_effort values in the documentation table. gpt-5-mini does not support reasoning_effort="none", only minimal, low, medium, and high.
2025-12-23 15:50:57 +05:30
Sameer Kankute
c47079ba3a
Merge pull request #18062 from Chesars/fix/groq-deprecated-models
fix: remove deprecated Groq models and update model registry
2025-12-23 12:06:27 +05:30
Sameer Kankute
f6350aac9b
Merge pull request #18349 from prasadkona/feat/databricks-partner-integration
feat(databricks): Add enhanced authentication, security features, and custom user-agent support
2025-12-23 09:45:28 +05:30
Alexsander Hamir
5534038e93
Fix CI: Revert security scan changes and add GitGuardian ignore rules (#18358) 2025-12-22 17:03:53 -08:00
yuneng-jiang
87fc81f3e6 Add cloudzero ui docs 2025-12-22 13:19:03 -08:00
prasadkona
d33c54ee0c
Merge branch 'main' into feat/databricks-partner-integration 2025-12-22 12:30:03 -08:00
prasadkona
3a1baae45c feat(databricks): Add enhanced authentication, security features, and custom user-agent support
- Add OAuth M2M (Machine-to-Machine) authentication via DATABRICKS_CLIENT_ID and DATABRICKS_CLIENT_SECRET
- Add Databricks SDK auto-auth with automatic credential discovery
- Add sensitive data redaction for secure logging (tokens, API keys, secrets)
- Add custom user_agent parameter for partner attribution in Databricks telemetry
- Support user_agent in LiteLLM Proxy via config.yaml litellm_params
- Add 49 mocked unit tests for all new functionality
- Add 13 E2E tests for real-world validation (skipped in CI)
- Update documentation with new features and examples
2025-12-22 12:02:51 -08:00
Alexsander Hamir
30fa90f70d
[Feat] Enable async_post_call_failure_hook to transform error responses (#18348) 2025-12-22 11:24:30 -08:00
Sameer Kankute
6d5eb07496
Merge pull request #18336 from BerriAI/litellm_add_nova_image_embedding_support
fix: request body for image embedding request
2025-12-22 19:11:42 +05:30
Ishaan Jaff
2677d9d30d
[Feat] New provider TTS - Add AWS polly API for TTS (#18326)
* add aws_polly as new provider

* init AWSPollyTextToSpeechConfig

* test_aws_polly_tts_with_native_voice

* init aws_polly + AWS polly dispatch

* init AWSPollyTextToSpeechConfig

* fix transform

* add aws_polly as a new provider for TTS API

* add to sidebar

* docs aws polly

* code qa fix

* add AWS Polly Text-to-Speech

* add cost tracking for AWS polly

* docs fix
2025-12-22 18:19:34 +05:30
Sameer Kankute
cbc1ac9508 fix: request body for image embedding request 2025-12-22 16:55:04 +05:30
Farhan Aulianda
63c3a6e228
fix: enable JSON-only provider routing + add xiaomi_mimo provider (#18291)
* fix: enable JSON-only provider routing + add xiaomi_mimo provider

* docs: add xiaomi_mimo provider documentation
2025-12-22 12:05:22 +05:30