diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 09308ea2a60..8bcaa3ca1f2 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -5622,6 +5622,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -5641,6 +5642,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11708,6 +11710,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11746,6 +11749,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11805,6 +11809,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11824,6 +11829,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11937,6 +11943,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11964,6 +11971,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12677,6 +12685,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12715,6 +12724,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12734,6 +12744,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -12753,6 +12764,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -12780,6 +12792,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12807,6 +12820,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -45722,6 +45736,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -45846,6 +45861,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -45870,6 +45886,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -45893,6 +45910,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -46022,6 +46040,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -46126,6 +46145,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -70252,6 +70272,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -71756,7 +71777,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/o3-2025-04-16": { "deprecation_date": "2026-11-19", @@ -71775,7 +71797,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/o3-deep-research": { "deprecation_date": "2026-11-19", @@ -71806,7 +71829,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/o4-mini-2025-04-16": { "deprecation_date": "2026-11-19", @@ -71826,7 +71850,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/text-embedding-3-large": { "deprecation_date": "2028-02-09", diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 09308ea2a60..8bcaa3ca1f2 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -5622,6 +5622,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -5641,6 +5642,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11708,6 +11710,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11746,6 +11749,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11805,6 +11809,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11824,6 +11829,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11937,6 +11943,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11964,6 +11971,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12677,6 +12685,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12715,6 +12724,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12734,6 +12744,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -12753,6 +12764,7 @@ "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", "supports_prompt_caching": true, "supports_reasoning": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -12780,6 +12792,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12807,6 +12820,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -45722,6 +45736,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -45846,6 +45861,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -45870,6 +45886,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -45893,6 +45910,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -46022,6 +46040,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -46126,6 +46145,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true, "supports_web_search": true @@ -70252,6 +70272,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -71756,7 +71777,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/o3-2025-04-16": { "deprecation_date": "2026-11-19", @@ -71775,7 +71797,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/o3-deep-research": { "deprecation_date": "2026-11-19", @@ -71806,7 +71829,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/o4-mini-2025-04-16": { "deprecation_date": "2026-11-19", @@ -71826,7 +71850,8 @@ "search_context_size_low": 0.014, "search_context_size_medium": 0.014 }, - "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'" + "source": "https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20'Foundry%20Models'%20and%20armRegionName%20eq%20'eastus'%20and%20priceType%20eq%20'Consumption'", + "supports_system_messages": true }, "azure/eu/text-embedding-3-large": { "deprecation_date": "2028-02-09", diff --git a/tests/unit/llms/openai/test_o_series_transformation.py b/tests/unit/llms/openai/test_o_series_transformation.py index 9d39dfda60a..a59928d83f2 100644 --- a/tests/unit/llms/openai/test_o_series_transformation.py +++ b/tests/unit/llms/openai/test_o_series_transformation.py @@ -6,6 +6,7 @@ import pytest import litellm from litellm import ModelResponse +from litellm.llms.azure.chat.o_series_transformation import AzureOpenAIO1Config from litellm.llms.openai.chat.o_series_transformation import OpenAIOSeriesConfig import os @@ -219,3 +220,24 @@ def test_o_series_request_turns_system_into_user_without_touching_the_callers_me assert [message["role"] for message in body["messages"]] == ["user", "user"] assert messages == messages_before + + +@pytest.mark.parametrize( + "config", + [OpenAIOSeriesConfig(), AzureOpenAIO1Config()], + ids=["openai", "azure"], +) +@pytest.mark.parametrize("model", ["o3", "o3-2025-04-16", "o4-mini", "o4-mini-2025-04-16", "o3-mini"]) +def test_o_series_keeps_system_role_for_models_that_support_it(config: OpenAIOSeriesConfig, model: str): + """o1-2024-12-17 and later reasoning models accept system messages, which the API treats as developer messages + (https://platform.openai.com/docs/guides/reasoning, checked 2026-10-28). Rewriting them as user messages drops + them to user-level authority""" + system_message: Final = {"role": "system", "content": "Be a good bot!"} + request: Final = config.transform_request( + model=model, + messages=[dict(system_message), {"role": "user", "content": "hi"}], + optional_params={}, + litellm_params={}, + headers={}, + ) + assert request["messages"][0] == system_message