* feat(key_management_endpoints.py): add validation checks for migrating key to team
Ensures requests with migrated key can actually succeed
Prevent migrated keys from failing in prod due to team missing required permissions
* fix(mistral/): fix image url handling for mistral on async call
* fix(key_management_endpoints.py): improve check for running team validation on key update
* feat(model_info_view.tsx): enable updating model info for existing models on UI
Fixes LIT-154
* fix(model_info_view.tsx): instantly show model info updates on UI
* feat(proxy_server.py): enable flag on `/models` to include model access groups
This enables admin to assign model access groups to keys/teams on UI
* feat(ui/): add model access groups on ui dropdown when creating teams + keys
* refactor(parallel_request_limiter_v2.py): Migrate multi instance rate limiting to OSS
Closes https://github.com/BerriAI/litellm/issues/10052
* fix: email invites should link to the invitation
* fix: email invites should link to the invitation
* fix: email invites should link to the invitation
* fix: handle DB_USER, DB_PASSWORD, DB_HOST problem I faced, since this could be with special character, so better be url encoded, similar problem also happen in DATABASE_URL
* test: added the test cases
* add: test case of url with sepcial character
- docs/my-website/docs/providers/lm_studio.md: add Structured Output section with JSON schema and Pydantic examples
- litellm/llms/lm_studio/chat/transformation.py: extend map_openai_params to handle `response_format` mappings (`json_schema`, `json_object`) and move them to optional_params
- litellm/utils.py: include `LM_STUDIO` in `supports_response_schema` list
- tests/litellm/llms/lm_studio/test_lm_studio_chat_transformation.py: add tests for Pydantic model and dict-based JSON schema handling
Co-authored-by: Earl St Sauver <estasuver@gmail.com>
* fix(openai/gpt_transformation.py): handle missing filename for openai file data call
* fix(openai/gpt_transformation.py): clean handling for sync + async pdf url transformation flows
Fixes https://github.com/BerriAI/litellm/issues/10820
* build(model_prices_and_context_window.json): add 'supports_pdf_input' for all openai models which have 'vision' support
Follows openai guidelines
* feat(bedrock/chat): support cache pointing tool calls on Bedrock
Closes https://github.com/BerriAI/litellm/pull/10613
* fix: fix linting error
* Batch deletion with tasks
* reset utils
* change print to logger
* remove print for lint
* fix lint
* local testing
* remove constants.py var
* ruff fix
* type fix
* - make sure job doesn't get added if maximum_spend_logs_retention_period is not set
- enable user to override scheduler time
- Upper bound on while true
* update and fix test
* Enable update/delete org members on UI (#8560)
* feat(organization_endpoints.py): expose new `/organization/delete` endpoint. Cascade org deletion to member, teams and keys
Ensures any org deletion is handled correctly
* test(test_organizations.py): add simple test to ensure org deletion works
* feat(organization_endpoints.py): expose /organization/update endpoint, and define response models for org delete + update
* fix(organizations.tsx): support org delete on UI + move org/delete endpoint to use DELETE
* feat(organization_endpoints.py): support `/organization/member_update` endpoint
Allow admin to update member's role within org
* feat(organization_endpoints.py): support deleting member from org
* test(test_organizations.py): add e2e test to ensure org member flow works
* fix(organization_endpoints.py): fix code qa check
* fix(schema.prisma): don't introduce ondelete:cascade - breaking change
* docs(organization_endpoints.py): document missing params
* support anonymize and deanonymize
* use new response schema
* don't use detected because action already means there are detections
* log to debug
* CR fixes
* lint
* add tests
* use single quotes in deanonymiztion
* remove engage action case
* set max entities to 100 to prevent memory leak
* add test case for de-anonymization of llm response
---------
Co-authored-by: Krish Dholakia <krrishdholakia@gmail.com>
* add user_header_name
* docs: add per-user tracking to Open WebUI with LiteLLM doc
* docs: standardize "OpenWeb UI" spelling across openweb_ui.md
* docs: improve wording for openweb_ui guide
* fix end_user_id not being set
- move user header parsing to add_litellm_data_to_request
- also set user_api_key_dict.end_user_id from user header
* fix(proxy/_types.py): add missing comma for `/v2/rerank`
Enables non admins to access `/v2/rerank` endpoint
* fix(proxy_track_cost_callback.py): add patch to handle scenario where both 'litellm_metadata' and 'metadata' exist
* ui fix bedrock guard
* polish: logo should appear after selecting provider
* fix ui config bedrock
* fix: refactor - use specific configs per provider
* fix: refactor - use specific configs per provider
* feat: ui, show provider specific params for guardrails
* fix: updated type of LiteLLM params for guardrails
* fix: updated type of LiteLLM params for guardrails
* ui, use endpoint for adding presidio, bedrock guardrails
* fix: linting error
* add llama guard and secret detector on UI
* add aim on ui
* allow adding lakera AI on litellm ui
* fix: fixes for params to init guardrails
* test: test_guardrail_info_response
* test: test_initialize_presidio_guardrail
* fix: init guardrails
* fix: init guardrails
* add showSearch
* working bedrock guard
* Add --only-models-matching-regex option
to `models import` which only processes models where
`litelllm_params.model` matches the regex
* Add test_models_import_only_models_matching_regex
* Print each model we're importing
* Add --only-access-groups-matching-regex option
to `models import` which only processes models where at least one item
in `model_info.access_groups` matches the regex. Add a unit test.
* Add `models import` examples to README.md
Add `models import` examples to proxy/client/cli/README.md
* ruff format litellm/proxy/client/cli/commands/models.py
* Make `models import` display tabular output
* models import refactoring
* Fix failing tests in test_models_commands.py
* Refactor import_models to make it shorter and more readable
* Extract from `import_models` a function called `get_model_list_from_yaml_file`
* Fix mypy error
* Add more specific typing
for better understandability and Intellisense
* More import_models refactoring
* More refactoring
* More refactoring
* Write unit tests for format_iso_datetime_str
* Add more unit tests
* ruff format tests/litellm/proxy/client/cli/test_models_commands.py
* ruff format litellm/proxy/client/cli/commands/models.py
* Make test_format_timestamp use UTC time
* fix(embeddings): use non default tokenizer when passing list of lists of tokens (int)
* feat(embeddings): allow for passthrough of list of lists of tokens to hosted_vllm models
* Revert "fix(embeddings): use non default tokenizer when passing list of lists of tokens (int)"
This reverts commit a48acd95f860c4fc85853e20668eabffff07cae7.
* refactor(embeddings): use a list to verify if provider accept as input a list of tokens
* fix(embeddings): verify the model name before validating if provider accept a arrays of tokens as input
When passing a list of tokens as input, verify the provider of the model by going through the list of models (`llm_model_list`). First, it check for model name then get the provider and verify if it accept or not arrays of tokens. If yes, then pass, else decode.
Previously, it was verifying provider and model name at the same time resulting in decoding even if the current model checked was not the target one (looping onto `llm_model_list`)
* test(embedding): add unit test to bypass decode for some providers with input as array of tokens
Ref: https://github.com/BerriAI/litellm/issues/10113
* fix(duration_parser.py): support `mo` unit
* test(test_key_management_endpoints.py): add test confirming generate_key_helper_fn uses predictable budgets
Closes https://github.com/BerriAI/litellm/issues/10800
* fix(anthropic/chat/transformation.py): add tool use cost tracking
* fix(anthropic/): refactor how hosted tool usage tracking is done
keep it separate from prompt / completion token details
* fix(anthropic/): add web search tool cost tracking
accurate cost tracking
* feat(anthropic/chat/transformation.py): map openai 'web_search_options' param to anthropic hosted tool
Allows calling anthropic web search in same format as openai
* feat(anthropic/chat/transformation.py): support unified anthropic 'web_search_options' param
Allows calling anthropic's web search tool in the openai format
* feat(anthropic/chat/transformation.py): map openai 'search_context_size' to anthropic 'max_uses' param
Translate search effort across both providers
* fix: mark web_search_options param as supported by openai + azure
* fix: fix linting error
* fix: fix linting errors
* fix: fix linting error
* fix: check if usage hasattr
* fix: pass web search options param