diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index d4f986edd9b..d2be523e59a 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -2724,7 +2724,8 @@ "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, - "supports_web_search": false + "supports_web_search": false, + "supports_service_tier": true }, "azure/gpt-4.1-2025-04-14": { "deprecation_date": "2026-11-04", @@ -2758,7 +2759,8 @@ "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, - "supports_web_search": false + "supports_web_search": false, + "supports_service_tier": true }, "azure/gpt-4.1-mini": { "cache_read_input_token_cost": 1e-07, @@ -4190,7 +4192,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "azure/gpt-5.3-codex": { @@ -4469,7 +4470,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -4505,7 +4505,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index d4f986edd9b..d2be523e59a 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -2724,7 +2724,8 @@ "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, - "supports_web_search": false + "supports_web_search": false, + "supports_service_tier": true }, "azure/gpt-4.1-2025-04-14": { "deprecation_date": "2026-11-04", @@ -2758,7 +2759,8 @@ "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, - "supports_web_search": false + "supports_web_search": false, + "supports_service_tier": true }, "azure/gpt-4.1-mini": { "cache_read_input_token_cost": 1e-07, @@ -4190,7 +4192,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true }, "azure/gpt-5.3-codex": { @@ -4469,7 +4470,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, @@ -4505,7 +4505,6 @@ "supports_response_schema": true, "supports_system_messages": true, "supports_tool_choice": true, - "supports_service_tier": true, "supports_vision": true, "supports_web_search": true, "supports_none_reasoning_effort": false, diff --git a/tests/test_litellm/test_utils.py b/tests/test_litellm/test_utils.py index e984403a05b..5875ca07766 100644 --- a/tests/test_litellm/test_utils.py +++ b/tests/test_litellm/test_utils.py @@ -892,6 +892,47 @@ def test_aaamodel_prices_and_context_window_json_is_valid(): raise AssertionError(error_message) +def test_azure_supports_service_tier_flags(): + """ + Verify that supports_service_tier is set correctly for Azure models + based on Azure's priority processing documentation. + + Ref: https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/priority-processing + """ + import json + from pathlib import Path + + config_path = ( + Path(__file__).parent.parent.parent / "model_prices_and_context_window.json" + ) + with open(config_path, "r") as f: + models = json.load(f) + + # Models that Azure officially supports for priority processing + should_have = [ + "azure/gpt-4.1", + "azure/gpt-4.1-2025-04-14", + ] + # Models that should NOT have the flag + should_not_have = [ + "azure/gpt-5.3-chat", + "azure/gpt-5.4-mini", + "azure/gpt-5.4-nano", + ] + + for model in should_have: + assert model in models, f"{model} not found in model config" + assert models[model].get("supports_service_tier") is True, ( + f"{model} should have supports_service_tier=true" + ) + + for model in should_not_have: + assert model in models, f"{model} not found in model config" + assert "supports_service_tier" not in models[model], ( + f"{model} should not have supports_service_tier" + ) + + def test_max_tokens_consistency(): """ Test that max_tokens == max_output_tokens for all models.