Commit Graph

23191 Commits

Author SHA1 Message Date
Ishaan Jaff 965dfbbdf4 test_bedrock_guardrail_blocked_action_shows_output_text_with_multiple_outputs 2025-07-09 17:03:56 -07:00
Ishaan Jaff 17ea770ab5 [Feat] SSO - Allow users to run a custom sso login handler (#12465)
* fix return_ui_sso_redirect_response_after_sign_in

* add CustomSSOLoginHandler

* add handle_custom_ui_sso_sign_in

* fix handle_custom_ui_sso_sign_in

* fixes for /sso/key/generate

* add test_handle_custom_ui_sso_sign_in_success

* fixed for loading config

* add example custom handler

* test_custom_ui_sso_sign_in_handler_config_loading

* docs - custom sso

* move to enterprise folder

* EnterpriseCustomSSOHandler

* handle_custom_ui_sso_sign_in

* docs custom sso

* docs sso

* docs custom sso

* get_redirect_response_from_openid

* fix mock tests
2025-07-09 16:36:30 -07:00
Jugal D. Bhatt a12bbe7da4 Litellm mcp internal users (#12458)
* added mcp tools on internal user and divide it by teams

* add support for server api call

* Added frontend for test key

* added tools used output

* fix ui for servers

* All servers to personal

* change columns format

* revert ui logic

* Added vertical align

* fix mapped tests

* fix lint

* fix lint

* remove extra file

* fix ui test

* comments fixes

* change query type

* change query type

* change query type

* Update model_checks.py
2025-07-09 16:30:51 -07:00
Ishaan Jaff f62b0ca52b [Bug Fix] Ensure supported bedrock/converse/ params = bedrock/ params (#12466)
* fix bedrock converse

* fix supports reasoning checks

* test_get_supported_openai_params_bedrock_converse

* fix
2025-07-09 16:14:07 -07:00
Ishaan Jaff afd382d09f [Feat] MCP Gateway - Allow customizing what client side header to use (#12460)
* add _get_mcp_auth_header_from_headers

* test_process_mcp_request_with_custom_auth_header

* Using a different Authentication Header

* fix customize MCP Auth header name
2025-07-09 12:30:20 -07:00
Krish Dholakia 66d8c653fd (Router) don't add invalid deployment to router pattern match (#12459)
* fix security - mcp

* fix(router.py): validate model provider before adding deployment to pattern

prevents routing on pattern match to invalid deployment

---------

Co-authored-by: Ishaan Jaff <ishaanjaffer0324@gmail.com>
2025-07-09 11:42:11 -07:00
Cole McIntosh 19fa8f672e Merge pull request #12442 from colesmcintosh/fix/remove-test-files
Remove temporary test files
2025-07-09 11:18:44 -06:00
Cole McIntosh 4db25169d2 Fix: Properly close aiohttp client sessions to prevent resource leaks (#12251)
* Fix: Properly close aiohttp client sessions to prevent resource leaks (#12107)

- Add close() method to BaseLLMAIOHTTPHandler to properly close aiohttp ClientSession
- Create async_client_cleanup module with utility functions to close all cached async clients
- Register automatic cleanup at exit via atexit hook
- Export close_litellm_async_clients() function for manual cleanup
- Add comprehensive tests to verify resource cleanup

This fixes the "Unclosed client session" and "Unclosed connector" warnings when using acompletion with Gemini and other models that use aiohttp.

Fixes #12107

* Fix: Remove unused import to satisfy linter

* Fix: Extend cleanup to handle AsyncHTTPHandler instances used by Gemini

The original implementation only cleaned up BaseLLMAIOHTTPHandler instances,
but Gemini/Vertex AI providers use AsyncHTTPHandler objects which contain
httpx clients with aiohttp transports.

This commit extends the cleanup function to:
- Handle AsyncHTTPHandler instances by accessing their internal client
- Close both the aiohttp transport and httpx client
- Add generic fallback for any objects with aclose method

This properly fixes the resource leak warnings for all provider types.
2025-07-09 09:25:17 -07:00
Krish Dholakia c42880d771 fix(utils.py): rollback faulty security check on files (#12441)
* fix(utils.py): rollback faulty security check on files

Closes https://github.com/BerriAI/litellm/issues/11009

* fix(route_checks.py): add unit tests
2025-07-08 22:11:06 -07:00
Krish Dholakia c4af2eb5e2 MCP - usage tracking (#12397)
* fix(common_daily_activity.py): initial commit with working mock BE endpoint for mcp usage

* feat(ui/): show mcp server activity on UI

allows admin to know which mcp's are being used

* feat(common_daily_activity.py): return activity by key

* feat(ui/): show top api keys for a given model / mcp server

allow user to know which key is driving spend

* fix(common_daily_activity.py): use known mcp server names

* feat(server.py): log the namespaced tool name (includes server prefix)

allow accurate cost tracking

* feat(db_spend_update_writer.py): log by mcp_namespaced_tool_name

store aggregate daily activity by mcp_namespaced_tool_name

Enables cost / usage tracking by mcp tool name

* fix(server.py): add key/user metadata to mcp calls

* refactor(common_daily_activity.py): update to return mcp activity in API

* fix(common_daily_activity.py): handle empty key

* fix(common_daily_activity.py): track when api key is empty

* test(test_spend_management_endpoints.py): update tests

* fix: fix ui linting error

* fix: fix linting errors

* test: add missing key

* build(schema.prisma): add mcp tool tracking

* fix(migration.sql): add schema migration file

* feat(server.py): add request logging for mcp calls

enables storing the mcp calls

* fix(new_usage.tsx): fix linting errors

* fix: fix code qa errors

* fix(activity_metrics.tsx): fix ui linting errors post-merge

* fix(types/utils.py): fix linting error

* fix(server.py): always have name
2025-07-08 22:08:16 -07:00
Ishaan Jaff e46a23db53 [Feat] Bedrock Guardrails - Raise Bedrock output text on 'BLOCKED' actions from guardrail (#12435)
* _get_http_exception_for_blocked_guardrail

* add _get_http_exception_for_blocked_guardrail

* test bedrock guard block action

* fix _get_http_exception_for_blocked_guardrail
2025-07-08 21:17:50 -07:00
Ishaan Jaff ce2934349f [Feat] Add XInference Image Generation API Provider (#12439)
* add XInferenceImageGenerationConfig

* add get_xinference_image_generation_config

* test_xinference_image_generation

* docs Image Generation xinference

* docs inference

* docs xinference

* fix xinference img gen
2025-07-08 21:17:38 -07:00
Cole McIntosh ae854e6d4e Remove temporary test files
- Remove test_script.py (mistral model cost map updater)
- Remove test_url_encoding.py (URL encoding test)
2025-07-08 20:44:22 -06:00
Ishaan Jaff d720b3d369 [Bug fix] Multiple API Keys Created on Startup When max_budget is Enabled (#12436)
* fix _add_proxy_budget_to_db

* fix if table_name is not None and table_name == "user":

* revert earlier change

* test_add_proxy_budget_to_db_only_creates_user_no_keys

* lint fix
2025-07-08 16:46:05 -07:00
Dmitriy Alergant f7d5958dca Update guardrails_ai.md (#12356)
Fix the header to highlight the website guardrailsai.com which is the real name/website of this provider.

Guardrails.ai leads to some different website, which is confusing.
2025-07-08 16:23:42 -07:00
tanjiro df2a2fac43 Prevent navigation reset after team member operations (#12424)
* stay on member page when you delete or add a member

* update member fix
2025-07-08 15:07:13 -07:00
Jugal D. Bhatt debea99414 change correct separator (#12430) 2025-07-08 14:27:24 -07:00
Jorge Piedrahita Ortiz 7fdecffc9f style: update sambanova logos (#12431) 2025-07-08 13:56:50 -07:00
Krrish Dholakia 9fa9d547c0 docs(index.md): document known issues 2025-07-08 10:39:51 -07:00
Juan Carlos Moreno 1f869f073d [fix] Error handling MCP request: Task group is not initialized (#12411)
```bash
LiteLLM:ERROR: server.py:370 - Error handling MCP request: Task group is not initialized. Make sure to use run().
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/litellm/proxy/_experimental/mcp_server/server.py", line 368, in handle_streamable_http_mcp
    await session_manager.handle_request(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/mcp/server/streamable_http_manager.py", line 137, in handle_request
    raise RuntimeError("Task group is not initialized. Make sure to use run().")
RuntimeError: Task group is not initialized. Make sure to use run().
```

The use of asyncio.create_task with an infinite loop is not ideal for integration with FastAPI's lifespan events. Now correctly handles this by manually invoking the __aenter__ and __aexit__ methods of the session managers' async context managers within the application's lifespan.
2025-07-08 09:08:37 -07:00
Joel Martin 559d06a55c Fix API base url for Github Copilot provider (#12418) 2025-07-08 09:07:08 -07:00
tanjiro 3cb45ccb6a Improve Chart Readability for Tags (#12378)
* Enhance chart readability with short-form notation for large numbers (#11571)

* format y-axis value for total tokens

* format y-axis for the rest of the charts on model-activity

* revert changes for requests per day

* labels modified to plain text

* added plain text label for api_requests and spend

* minor

* improve keyname display (#11573)

* fix tags overlap

- no need to fix decimal points for valueFormatterSpend() bcz we're only going to use it for values on the x and y axis of a chart
- show only top 5 values of tags
- format the values on the x-axis

* format spend values to short form

* format spend to short form

* showing top 5 tags data more perceptively

* remove mock data

* remove console.log

* prettier

* prettier + remove unused functions
2025-07-07 23:02:44 -07:00
Ishaan Jaff 028461a84d bump proxy extras 2025-07-07 21:48:11 -07:00
Krish Dholakia b08ea835c4 fix(model_management_endpoints.py): add audit logs on model update (#12396)
ensure model updates are tracked
2025-07-07 21:43:34 -07:00
Krish Dholakia 76c9df1f91 Add 'thinking blocks' to stream chunk builder + remove experimental 'by_tag' metrics on prometheus (fix cardinality issue) (#12395)
* feat(stream_chunk_builder_utils.py): combine thinking blocks in stream chunk builder

* fix(prometheus.py): remove experimental 'by_tag' metrics

Fixes LIT-225
2025-07-07 21:41:44 -07:00
Ishaan Jaff 9bbacf77e8 ci/cd new release 2025-07-07 21:26:19 -07:00
Ishaan Jaff 642038298a migration - add mcp_info 2025-07-07 21:25:47 -07:00
Ryan Castner 1ef077caa5 feat: add image support for Responses API to Chat Completion transformation (#12204)
* Add _transform_input_image_item_to_image_item() to handle image transformations
* Update content transformation to process input_image items from Responses API format to Chat Completions format
2025-07-07 21:17:54 -07:00
Ishaan Jaff 4de3cbe1f5 bump: version 1.74.0 → 1.74.1 2025-07-07 21:16:24 -07:00
Ishaan Jaff 779791f7b3 ui new build 2025-07-07 21:13:53 -07:00
Ishaan Jaff 312d3602a7 add litellm proxy extras 2025-07-07 21:13:45 -07:00
Ishaan Jaff 5cad0dd94b [Feat] Add MCP Cost Tracking (#12385)
* fix MCP_TOOL_NAME_PREFIX

* test_mcp_cost_tracking

* init MCPCostCalculator

* add call_mcp_tool

* calculate_mcp_tool_call_cost

* add MCPServerCostInfo

* add mcp_server_cost_info

* add mcp_server_cost_info

* pass through litellm_logging_obj

* logged_standard_logging_payload

* fix logging MCP tool call

* test_mcp_cost_tracking_per_tool

* fix NewMCPServerRequest

* fix add_update_server

* add MCP info to schema.prisma

* fix create_mcp_server

* working custom cost per call

* fix mcp server cost

* fix MCPCostCalculator

* TestMCPCostCalculator
2025-07-07 21:08:10 -07:00
dependabot[bot] 85bc1065a0 Bump mcp from 1.9.3 to 1.10.0 (#12388)
Bumps [mcp](https://github.com/modelcontextprotocol/python-sdk) from 1.9.3 to 1.10.0.
- [Release notes](https://github.com/modelcontextprotocol/python-sdk/releases)
- [Changelog](https://github.com/modelcontextprotocol/python-sdk/blob/main/RELEASE.md)
- [Commits](https://github.com/modelcontextprotocol/python-sdk/compare/v1.9.3...v1.10.0)

---
updated-dependencies:
- dependency-name: mcp
  dependency-version: 1.10.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 18:33:23 -07:00
Adam Holmberg 38278d9583 fix: make TextCompletionStreamWrapper conversion retain reasoning_content (#12377)
ref: #12375
2025-07-07 17:25:12 -07:00
Ishaan Jaff a0a57687ca fix security - mcp (#12362) 2025-07-07 15:53:54 -07:00
Ishaan Jaff 08f3b06d82 [Feat] Bump langfuse python SDK version and LANGFUSE_TRACING_ENVIRONMENT (#12376)
* bump langfuse to 2.59.7

* _set_langfuse_specific_attributes

* fix files

* test_set_langfuse_environment_attribute
2025-07-07 15:53:43 -07:00
Ishaan Jaff 0a36f89009 [Bug Fix] s3 config.yaml file - ensure yaml safe load is used (#12373)
* use yaml safe load

* test_get_file_contents_from_s3_no_temp_file_creation
2025-07-07 14:42:33 -07:00
tanjiro 32f3887a01 improve keyname display (#12371) 2025-07-07 12:58:06 -07:00
tanjiro 8bb9ea8568 sticky session for test key (#12365) 2025-07-07 10:12:39 -07:00
Krrish Dholakia 88a7b40f86 docs(index.md): update note with all guardrails now on UI 2025-07-06 21:55:06 -07:00
Krrish Dholakia d50a28d424 docs(index.md): add to release note 2025-07-06 21:54:02 -07:00
Krrish Dholakia 4d718f97ef docs(azure_content_guardrails.md): add doc on azure content guardrails 2025-07-06 21:42:58 -07:00
Krrish Dholakia 55ecb543f2 docs(azure_content_guardrails.md): add azure content guardrails doc 2025-07-06 21:39:03 -07:00
Ishaan Jaff 10c704ccb9 docs release notes 2025-07-05 21:24:09 -07:00
Krrish Dholakia 0cd4d4f76d build(ui/): new ui build 2025-07-05 20:04:42 -07:00
Krish Dholakia dbe37b542d Litellm dev 07 05 2025 p4 (#12350)
* fix(key_management_endpoints.py): add new `/key/service_account/generate` endpoint

enables controlling team member permissions for creating service account keys

* refactor(ui/): use new /key/service-account/generate endpoint when creating keys on UI

enables team member permissions for service accounts

* fix(permission_definitions.tsx): add permission for creating service accounts on UI

* fix(key_management_endpoints.py): ignore user id for service account keys

* fix(key_management_endpoints.py): improve docstring

* docs(service_accounts.md): update docs
2025-07-05 19:38:42 -07:00
Krish Dholakia bda9eecd45 Litellm dev 07 05 2025 p3 (#12349)
* refactor(aim.py): refactor to support adding aim guardrails on UI

* fix(base.py): add ui_friendly_name to config model

* feat(ui/): support loading new guardrails from backend api call

removes need to onboard each guardrail to ui

* fix: don't show optional params if not set and don't show ui_friendly_name (internal param0

* fix(ui/add_guardrail_form.tsx): ensure dynamic provider value is used

* fix(ui/): just one-time update the provider map dictionary

* fix(ui/): show masked api base / api key on guardrail update

* refactor(aporia_ai/): refactor to show on UI

* feat(aporia_ai/): add aporia ai guardrail to UI

* refactor(guardrails_ai/): refactor to add via UI

* refactor(lasso.py): refactor to enable adding lasso guardrails via UI

* feat(pangea.py): add pangea guardrail on UI

* feat(panw): add panw prisma airs through UI

* test: update tests

* fix: fix ruff linting error

* test: update tests

* fix: add missing docs

* fix: fix guardrail init

* fix: suppress linting errors

* fix(proxy_server.py): fix linting error
2025-07-05 18:44:00 -07:00
Ishaan Jaff 54eb00ddfb docs team / Key Based Logging on UI 2025-07-05 18:26:51 -07:00
Krrish Dholakia dd212daa10 fix: fix typing import 2025-07-05 18:20:58 -07:00
Ishaan Jaff eabe0c5e7f docs - team based logging 2025-07-05 17:55:18 -07:00