diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 77244a32f6f..6da93b33d00 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -5661,6 +5661,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 }, @@ -5680,6 +5681,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 }, @@ -11779,6 +11781,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11817,6 +11820,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11876,6 +11880,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11895,6 +11900,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 }, @@ -12008,6 +12014,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12035,6 +12042,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12751,6 +12759,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12789,6 +12798,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12808,6 +12818,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 }, @@ -12827,6 +12838,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 }, @@ -12854,6 +12866,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12881,6 +12894,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -45884,6 +45898,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 @@ -46008,6 +46023,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 @@ -46032,6 +46048,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -46055,6 +46072,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -46184,6 +46202,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 @@ -46288,6 +46307,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 @@ -70686,6 +70706,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -72193,7 +72214,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", @@ -72212,7 +72234,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", @@ -72243,7 +72266,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", @@ -72263,7 +72287,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 77244a32f6f..6da93b33d00 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -5661,6 +5661,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 }, @@ -5680,6 +5681,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 }, @@ -11779,6 +11781,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11817,6 +11820,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11876,6 +11880,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11895,6 +11900,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 }, @@ -12008,6 +12014,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12035,6 +12042,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12751,6 +12759,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12789,6 +12798,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12808,6 +12818,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 }, @@ -12827,6 +12838,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 }, @@ -12854,6 +12866,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12881,6 +12894,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -45884,6 +45898,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 @@ -46008,6 +46023,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 @@ -46032,6 +46048,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -46055,6 +46072,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -46184,6 +46202,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 @@ -46288,6 +46307,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 @@ -70686,6 +70706,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -72193,7 +72214,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", @@ -72212,7 +72234,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", @@ -72243,7 +72266,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", @@ -72263,7 +72287,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