Commit Graph

28368 Commits

Author SHA1 Message Date
yuneng-jiang 4e4a2e7ca2 Spend logs spend column enhancement 2025-12-06 16:14:33 -08:00
yuneng-jiang 324ce58003 Merge pull request #17617 from BerriAI/litellm_customer_usage_docs_sidebar
[Docs] Update sidebar for customer usage
2025-12-06 14:22:28 -08:00
yuneng-jiang bff3590dd0 Update sidebar for customer usage 2025-12-06 14:21:18 -08:00
Lukas de Boer 3b8a6ec888 Helm Chart: Add possibility to override command, args and add deployment labels (#17535)
* Helm Chart: Add possibility to override command, args and also add deployment labels

* Helm Chart: Fix helm lint issue

* Helm Chart: Fix helm unit tests
2025-12-06 14:01:09 -08:00
Cesar Garcia 8ccfaa21de docs: add Microsoft GraphRAG to projects using LiteLLM (#17616)
* docs: add Microsoft GraphRAG to projects using LiteLLM

* docs: add arXiv paper link for GraphRAG

* docs: add GraphRAG to sidebar

* Update projects in sidebars.js

Reordered items in the projects list to include 'GraphRAG'.
2025-12-06 13:47:46 -08:00
yuneng-jiang b64be147d0 Merge pull request #17615 from BerriAI/litellm_customer_usage_docs
[Docs] Customer Usage
2025-12-06 13:44:23 -08:00
yuneng-jiang 3f7d51d53e Merge remote-tracking branch 'origin' into litellm_customer_usage_docs 2025-12-06 13:43:28 -08:00
yuneng-jiang da4b36fe9b Changed image 2025-12-06 13:23:49 -08:00
yuneng-jiang 40ad0e2e96 Customer Usage Docs 2025-12-06 13:17:54 -08:00
Alexsander Hamir 3359daf621 refactor: extract helper methods from pre_call_hook to fix PLR0915 linting error (#17613)
- Extract _process_prompt_template method for prompt template processing
- Extract _process_guardrail_metadata method for guardrail metadata processing
- Reduces statement count in pre_call_hook from 68 to under 50
2025-12-06 13:13:59 -08:00
Alexsander Hamir a1d114a8ad Fix: test_guardrails_with_api_key_controls (#17612)
* Fix: around for the callback issue

* Remove comment
2025-12-06 13:05:52 -08:00
Ishaan Jaffer df6cb4244d docs a2a gateway 2025-12-06 12:32:30 -08:00
Ishaan Jaffer fdf28331a5 docs fix 2025-12-06 11:48:00 -08:00
Ishaan Jaffer b4c6b29149 docs fix 2025-12-06 11:41:51 -08:00
Ishaan Jaffer 2bf0b951f7 docs fix 2025-12-06 11:37:08 -08:00
yuneng-jiang 29e7cd452a Merge pull request #17610 from BerriAI/litellm_ui_build_4
[Infra] Building UI To Include Fix
2025-12-06 11:35:49 -08:00
Ishaan Jaffer 86a0c14aca docs guardrails 2025-12-06 11:34:55 -08:00
yuneng-jiang 4ca3c042e0 Building UI for fix 2025-12-06 11:34:13 -08:00
yuneng-jiang 6de0ffbf04 Merge pull request #17609 from BerriAI/litellm_ui_mcp_fix
[Fix] UI - MCP Test Tool Fix
2025-12-06 11:30:34 -08:00
yuneng-jiang 19cacaaed5 UI MCP Test Tool Fix 2025-12-06 11:18:48 -08:00
Ishaan Jaffer 6bb4087b22 docs fix 2025-12-06 11:09:46 -08:00
Alexsander Hamir c44e075b2d feat: add script to create branches with litellm_ prefix (#17606)
Add utility scripts to create branches with litellm_ prefix from contributor branches.
This helps maintain consistent branch naming conventions for CI/CD.

- scripts/create_litellm_branch.sh (Bash for macOS/Linux)
- scripts/create_litellm_branch.ps1 (PowerShell for Windows)

Usage:
  ./scripts/create_litellm_branch.sh [source_branch] [new_branch_name]
  ./scripts/create_litellm_branch.ps1 [source_branch] [new_branch_name]

Features:
- Auto-prefixes branch names with litellm_
- Handles existing branches gracefully
- Validates branch names
- Supports local and remote source branches
2025-12-06 10:41:39 -08:00
Ishaan Jaff a9b654224e 1.80.8 RC docs (#17605)
* stash docs

* docs fix

* doc fix

* docs fix
2025-12-06 10:40:00 -08:00
Ishaan Jaffer edcfc13ebb bump: version 1.80.7 → 1.80.8 2025-12-06 10:18:23 -08:00
Ishaan Jaffer bfdcfca8b0 fix test 2025-12-06 10:15:00 -08:00
Ishaan Jaffer 8f98725503 fix mypy linting 2025-12-06 10:09:30 -08:00
Ishaan Jaffer bcf601b8a6 bump proxy extras pip 2025-12-06 10:00:22 -08:00
Ishaan Jaffer 71ea926f9a test_no_duplicate_spend_logs 2025-12-06 09:56:05 -08:00
Sungjun.Kim ca7241188a feat: Add xhigh reasoning effort for gpt-5.1-codex-max (#17585)
Co-authored-by: Ishaan Jaff <ishaanjaffer0324@gmail.com>
2025-12-06 09:48:18 -08:00
Cesar Garcia 0f1d6c37d2 docs: add gpt-5.1-codex-max to OpenAI provider documentation (#17602)
Add gpt-5.1-codex-max model to:
- Model list table
- Reasoning effort table
- Verbosity note
2025-12-06 09:46:48 -08:00
Ishaan Jaffer 6358be3d0b fix build from PIP 2025-12-06 09:44:09 -08:00
Alexsander Hamir 09dcd381d7 fix: mark test_caching_with_reasoning_content as flaky and handle InternalServerError (#17603)
- Add @pytest.mark.flaky(retries=3, delay=1) decorator to handle intermittent Anthropic API failures
- Add error handling to skip test when Anthropic API returns InternalServerError
- Prevents false test failures due to external API 500 errors
2025-12-06 09:41:09 -08:00
Krrish Dholakia 497856e1e3 docs: document multi tenant architecture 2025-12-06 09:27:30 -08:00
Alexsander Hamir 8172f6cdd6 Fix security vulnerability: update mdast-util-to-hast to 13.2.1 (CVE-2025-66400) (#17601) 2025-12-06 09:26:26 -08:00
yuneng-jiang 03706e4841 Merge pull request #17600 from BerriAI/litellm_ui_build_3
[Infra] Building UI for release
2025-12-06 09:22:38 -08:00
Alexsander Hamir 1254a92e66 fix: make test_log_langfuse_v2_handles_null_usage_values more robust (#17599)
- Reset mock call counts at start of test to ensure clean state
- Add span method to mock trace to handle log_provider_specific_information_as_span calls
- Re-establish mock chain before test call to ensure fresh state
- Add exception handling to catch and report errors during test execution
- Add verification that trace was called before checking generation

This should fix the flaky test that was failing intermittently with
'Expected generation to have been called once. Called 0 times.'
2025-12-06 09:21:00 -08:00
yuneng-jiang 0917f72bbd Building UI for release 2025-12-06 09:18:20 -08:00
yuneng-jiang fe23eee079 Merge pull request #17598 from BerriAI/litellm_ui_customer_usage_banner
[Feature] UI - Add Info Banner for Customer Usage
2025-12-06 09:04:39 -08:00
yuneng-jiang fa47861ca0 Add banner for customer usage 2025-12-06 08:57:15 -08:00
Alexsander Hamir 53e2516ace fix: make test_watsonx_gpt_oss_prompt_transformation deterministic (#17597)
- Remove network dependency by mocking HuggingFace template fetch
- Use mock template that produces correct format for test validation
- Test now focuses on transformation logic, not network calls
- Fixes flaky test failures due to network timeouts/rate limits

The test verifies that prompt transformation occurs (not simple
concatenation), which doesn't require the actual HuggingFace template.
Mocking makes the test deterministic and faster while still validating
the core behavior.
2025-12-06 08:48:39 -08:00
Alexsander Hamir db40a38999 Add retry logic to apk package installation in Dockerfile.non_root (#17596)
- Add retry loop (3 attempts with 5s delay) to builder stage apk add command
- Add retry logic to runtime stage apk upgrade and apk add commands
- Improves resilience to transient network errors during package downloads
2025-12-06 08:17:50 -08:00
Alexsander Hamir 73075c7d24 fix: add retry logic for flaky Azure image generation health check test (#17595)
- Add missing @pytest.mark.asyncio decorator
- Implement retry logic with exponential backoff (3 retries)
- Only retry on transient Azure internal server errors
- Fail immediately on non-transient errors

This fixes the flaky test_azure_img_gen_health_check which was failing
due to transient Azure internal server errors that are outside our control.
2025-12-06 08:11:52 -08:00
Alexsander Hamir 1e89aa3068 Fix: Resolve flakiness in three integration tests (#17594)
Fixed three flaky tests that were intermittently failing in CI:

1. test_no_duplicate_spend_logs (test_litellm/responses/test_no_duplicate_spend_logs.py)
   Problem: Used await asyncio.sleep(1) to wait for async logging completion,
            which created race conditions. The async logging worker queues tasks
            in the background, and sleep() doesn't guarantee completion.

   Fix: Replaced sleep() with GLOBAL_LOGGING_WORKER.flush() which properly waits
        for the logging queue to empty, ensuring all async logging tasks complete
        before assertions run.

2. test_log_langfuse_v2_handles_null_usage_values (test_litellm/integrations/test_langfuse.py)
   Problem: Used datetime.datetime.now() twice for start_time and end_time, which
            could cause timing inconsistencies between test runs, especially in
            CI environments with variable execution speeds.

   Fix: Use fixed timestamps instead of datetime.now() to ensure consistent timing
        across all test runs, eliminating timing-related flakiness.

3. test_watsonx_gpt_oss_prompt_transformation (test_litellm/llms/watsonx/test_watsonx.py)
   Problem: Directly accessed mock_post.call_args without checking if it exists,
            which could be None if the mock wasn't called or if an exception
            occurred before the POST request. The test catches exceptions and
            continues, making this a potential failure point.

   Fix: Added proper assertions and use call_args_list[0] for safer access:
        - Assert that call_args_list has at least one call
        - Assert that call_args is not None
        - Assert that 'data' key exists in kwargs
        This ensures the test fails with clear error messages rather than
        intermittent AttributeError exceptions.

All fixes maintain the original test intent while making them deterministic
and reliable in CI environments.
2025-12-06 07:57:03 -08:00
Alexsander Hamir 99ab9fd145 Fix: Ensure guardrail metadata is preserved in request_data (#17593)
Fixed bug in add_guardrail_to_applied_guardrails_header where guardrail
information was lost when request_data didn't have a metadata key. The
function would create a new metadata dict but never assign it back to
request_data, causing the x-litellm-applied-guardrails header to be
missing from responses.

This fixes the failing test_guardrails_with_api_key_controls test.
2025-12-06 07:50:15 -08:00
Alexsander Hamir 00a9f99718 Fix flaky test: test_logging_non_streaming_request (#17592)
- Filter async_log_success_event calls by expected input message
- Bridge models (openai/codex-mini-latest) may make internal calls that also log
- Test now asserts exactly one call with the expected input 'Hey' instead of asserting total call count
- Makes test robust to bridge-related double logging while still validating core behavior
2025-12-06 07:40:23 -08:00
Alexsander Hamir 3db6d2a1ed Reapply Langfuse logger test mock setup fix (#17591)
Reapplies the fix from commit a885e21543 that was
reverted in 6c9556be67.

The original revert was done because the test was flaky and giving false
negatives. This fix properly mocks the Langfuse client to ensure the test
can correctly verify that _log_langfuse_v2 converts None usage values to 0.

Changes:
- Add mock_langfuse_client.client attribute to prevent errors during init
- Add trace_id to mock_langfuse_generation for proper return value handling
- Remove redundant mock setup code
- Explicitly set logger.Langfuse to mock client after initialization
- Set logger.langfuse_sdk_version to ensure _supports_* methods work correctly
2025-12-06 07:26:34 -08:00
Alexsander Hamir 6c9556be67 Revert "Fix Langfuse logger test mock setup (#17588)" (#17590)
This reverts commit a885e21543.
2025-12-06 06:25:47 -08:00
Alexsander Hamir 998b27c655 fix: preserve usage from JSON response for OpenAI provider in Bedrock (#17589)
- Skip usage recalculation if usage was already set from response JSON
- Fixes test_bedrock_openai_response_parsing which expected usage values from JSON response
- Prevents overwriting correct usage values with token counting for OpenAI imported models
2025-12-06 06:17:46 -08:00
Alexsander Hamir a885e21543 Fix Langfuse logger test mock setup (#17588)
* Fix test_log_langfuse_v2_handles_null_usage_values test failure

The test was failing because the logger's Langfuse client wasn't properly
mocked. Even though sys.modules was mocked, the logger's __init__ method
creates its own Langfuse client instance that wasn't using the test's mock.

Changes:
- Explicitly set logger.Langfuse to the mock client after initialization
- Set logger.langfuse_sdk_version to ensure _supports_* methods work correctly
- Added mock_langfuse_client.client attribute to prevent errors during init
- Added trace_id to mock_langfuse_generation for proper return value handling
- Removed redundant mock setup code

This ensures the test can properly verify that _log_langfuse_v2 correctly
converts None usage values to 0 by allowing the mock's generation method
to be called and asserted.

Fixes: AssertionError: Expected 'generation' to have been called once. Called 0 times.
2025-12-06 05:56:24 -08:00
Alexsander Hamir 415a8ab9a6 Fix: remove merge markdown (#17586) 2025-12-06 05:38:16 -08:00