diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 0799a298942..3e0564dc4d6 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -5359,6 +5359,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 }, @@ -5376,6 +5377,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 }, @@ -11339,6 +11341,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11376,6 +11379,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11431,6 +11435,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11448,6 +11453,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 }, @@ -11555,6 +11561,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11580,6 +11587,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12282,6 +12290,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12319,6 +12328,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12336,6 +12346,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 }, @@ -12353,6 +12364,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 }, @@ -12378,6 +12390,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12403,6 +12416,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -44718,6 +44732,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 @@ -44833,6 +44848,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 @@ -44854,6 +44870,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -44874,6 +44891,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -44994,6 +45012,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 @@ -45089,6 +45108,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 @@ -69023,6 +69043,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -70603,7 +70624,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", @@ -70621,7 +70643,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", @@ -70648,7 +70671,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", @@ -70666,7 +70690,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 0799a298942..3e0564dc4d6 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -5359,6 +5359,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 }, @@ -5376,6 +5377,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 }, @@ -11339,6 +11341,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11376,6 +11379,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11431,6 +11435,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -11448,6 +11453,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 }, @@ -11555,6 +11561,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -11580,6 +11587,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12282,6 +12290,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12319,6 +12328,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12336,6 +12346,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 }, @@ -12353,6 +12364,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 }, @@ -12378,6 +12390,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -12403,6 +12416,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": true }, @@ -44718,6 +44732,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 @@ -44833,6 +44848,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 @@ -44854,6 +44870,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -44874,6 +44891,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -44994,6 +45012,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 @@ -45089,6 +45108,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 @@ -69023,6 +69043,7 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, + "supports_system_messages": true, "supports_tool_choice": true, "supports_vision": false }, @@ -70603,7 +70624,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", @@ -70621,7 +70643,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", @@ -70648,7 +70671,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", @@ -70666,7 +70690,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 e78e1a6f12b..ca96b75ef87 100644 --- a/tests/unit/llms/openai/test_o_series_transformation.py +++ b/tests/unit/llms/openai/test_o_series_transformation.py @@ -5,6 +5,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 @@ -198,3 +199,24 @@ def test_translate_developer_role_keeps_developer_messages_untouched() -> None: ) == messages ) + + +@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