From 32e5e55f8408427a46bbac04cc8404f544b0235c Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 3 Mar 2026 23:51:42 -0500 Subject: [PATCH 01/14] feat(models): add chatgpt gpt-5.3 oauth aliases --- model_prices_and_context_window.json | 58 ++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 81e99f3712..342b3fda8b 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -18437,6 +18437,64 @@ "max_tokens": 8191, "mode": "embedding" }, + "chatgpt/gpt-5.3-codex": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.3-codex-spark": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.3-instant": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "responses", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.3-chat-latest": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "responses", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, "chatgpt/gpt-5.2-codex": { "litellm_provider": "chatgpt", "max_input_tokens": 128000, From 53b3b1303e018f413aac19c7122178f39a480427 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 3 Mar 2026 23:51:47 -0500 Subject: [PATCH 02/14] chore(models): sync backup map for chatgpt gpt-5.3 aliases --- ...odel_prices_and_context_window_backup.json | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 81e99f3712..342b3fda8b 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -18437,6 +18437,64 @@ "max_tokens": 8191, "mode": "embedding" }, + "chatgpt/gpt-5.3-codex": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.3-codex-spark": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.3-instant": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "responses", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.3-chat-latest": { + "litellm_provider": "chatgpt", + "max_input_tokens": 128000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "responses", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, "chatgpt/gpt-5.2-codex": { "litellm_provider": "chatgpt", "max_input_tokens": 128000, From ffd65d2678f6e8b4fa8fc6f2521233f7db37e133 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 3 Mar 2026 23:51:52 -0500 Subject: [PATCH 03/14] docs(chatgpt): document gpt-5.3 oauth model variants --- docs/my-website/docs/providers/chatgpt.md | 27 ++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/docs/my-website/docs/providers/chatgpt.md b/docs/my-website/docs/providers/chatgpt.md index 156bbf99df..5c839d2217 100644 --- a/docs/my-website/docs/providers/chatgpt.md +++ b/docs/my-website/docs/providers/chatgpt.md @@ -4,17 +4,23 @@ Use ChatGPT Pro/Max subscription models through LiteLLM with OAuth device flow a | Property | Details | |-------|-------| -| Description | ChatGPT subscription access (Codex + GPT-5.2 family) via ChatGPT backend API | +| Description | ChatGPT subscription access (Codex + GPT-5.3 family) via ChatGPT backend API | | Provider Route on LiteLLM | `chatgpt/` | | Supported Endpoints | `/responses`, `/chat/completions` (bridged to Responses for supported models) | | API Reference | https://chatgpt.com | -ChatGPT subscription access is native to the Responses API. Chat Completions requests are bridged to Responses for supported models (for example `chatgpt/gpt-5.2`). +ChatGPT subscription access is native to the Responses API. Chat Completions requests are bridged to Responses for supported models (for example `chatgpt/gpt-5.3-chat-latest`). Notes: - The ChatGPT subscription backend rejects token limit fields (`max_tokens`, `max_output_tokens`, `max_completion_tokens`) and `metadata`. LiteLLM strips these fields for this provider. - `/v1/chat/completions` honors `stream`. When `stream` is false (default), LiteLLM aggregates the Responses stream into a single JSON response. +Common GPT-5.3 model IDs: +- `chatgpt/gpt-5.3-codex` +- `chatgpt/gpt-5.3-codex-spark` +- `chatgpt/gpt-5.3-chat-latest` +- `chatgpt/gpt-5.3-instant` + ## Authentication ChatGPT subscription access uses an OAuth device code flow: @@ -31,7 +37,7 @@ ChatGPT subscription access uses an OAuth device code flow: import litellm response = litellm.responses( - model="chatgpt/gpt-5.2-codex", + model="chatgpt/gpt-5.3-codex", input="Write a Python hello world" ) @@ -44,7 +50,7 @@ print(response) import litellm response = litellm.completion( - model="chatgpt/gpt-5.2", + model="chatgpt/gpt-5.3-chat-latest", messages=[{"role": "user", "content": "Write a Python hello world"}] ) @@ -55,16 +61,21 @@ print(response) ```yaml showLineNumbers title="config.yaml" model_list: - - model_name: chatgpt/gpt-5.2 + - model_name: chatgpt/gpt-5.3-chat-latest + model_info: + mode: responses + litellm_params: + model: chatgpt/gpt-5.3-chat-latest + - model_name: chatgpt/gpt-5.3-codex model_info: mode: responses litellm_params: - model: chatgpt/gpt-5.2 - - model_name: chatgpt/gpt-5.2-codex + model: chatgpt/gpt-5.3-codex + - model_name: chatgpt/gpt-5.3-codex-spark model_info: mode: responses litellm_params: - model: chatgpt/gpt-5.2-codex + model: chatgpt/gpt-5.3-codex-spark ``` ```bash showLineNumbers title="Start LiteLLM Proxy" From 801e2d615b46858729c6318e48e2a5cc899ee5bc Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 3 Mar 2026 23:51:55 -0500 Subject: [PATCH 04/14] test(chatgpt): cover gpt-5.3 oauth alias registration --- .../test_chatgpt_responses_transformation.py | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py b/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py index 03cea8785b..f469d48831 100644 --- a/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py +++ b/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py @@ -9,6 +9,7 @@ from unittest.mock import MagicMock, patch import httpx +import pytest sys.path.insert(0, os.path.abspath("../../../../..")) @@ -19,9 +20,18 @@ class TestChatGPTResponsesAPITransformation: - def test_chatgpt_provider_config_registration(self): + @pytest.mark.parametrize( + "model_name", + [ + "chatgpt/gpt-5.3-chat-latest", + "chatgpt/gpt-5.3-instant", + "chatgpt/gpt-5.3-codex", + "chatgpt/gpt-5.3-codex-spark", + ], + ) + def test_chatgpt_provider_config_registration(self, model_name): config = ProviderConfigManager.get_provider_responses_api_config( - model="chatgpt/gpt-5.2", + model=model_name, provider=LlmProviders.CHATGPT, ) @@ -75,7 +85,7 @@ def test_validate_environment_headers(self, mock_authenticator_class): def test_chatgpt_forces_streaming_and_reasoning_include(self): config = ChatGPTResponsesAPIConfig() request = config.transform_responses_api_request( - model="chatgpt/gpt-5.2-codex", + model="chatgpt/gpt-5.3-codex", input="hi", response_api_optional_request_params={}, litellm_params=GenericLiteLLMParams(), @@ -91,7 +101,7 @@ def test_chatgpt_forces_streaming_and_reasoning_include(self): def test_chatgpt_drops_unsupported_responses_params(self): config = ChatGPTResponsesAPIConfig() request = config.transform_responses_api_request( - model="chatgpt/gpt-5.2-codex", + model="chatgpt/gpt-5.3-codex-spark", input="hi", response_api_optional_request_params={ # unsupported by ChatGPT Codex @@ -134,7 +144,7 @@ def test_chatgpt_non_stream_sse_response_parsing(self): "object": "response", "created_at": 1700000000, "status": "completed", - "model": "gpt-5.2-codex", + "model": "gpt-5.3-codex", "output": [ { "type": "message", @@ -156,7 +166,7 @@ def test_chatgpt_non_stream_sse_response_parsing(self): logging_obj = MagicMock() parsed = config.transform_response_api_response( - model="chatgpt/gpt-5.2-codex", + model="chatgpt/gpt-5.3-codex", raw_response=raw_response, logging_obj=logging_obj, ) From dc19cc241e9b385cc17106a4c057d61472b63e7b Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Wed, 4 Mar 2026 00:47:11 -0500 Subject: [PATCH 05/14] docs(chatgpt): remove gpt-5.3 model ID list block --- docs/my-website/docs/providers/chatgpt.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/my-website/docs/providers/chatgpt.md b/docs/my-website/docs/providers/chatgpt.md index 5c839d2217..d6248e6274 100644 --- a/docs/my-website/docs/providers/chatgpt.md +++ b/docs/my-website/docs/providers/chatgpt.md @@ -15,12 +15,6 @@ Notes: - The ChatGPT subscription backend rejects token limit fields (`max_tokens`, `max_output_tokens`, `max_completion_tokens`) and `metadata`. LiteLLM strips these fields for this provider. - `/v1/chat/completions` honors `stream`. When `stream` is false (default), LiteLLM aggregates the Responses stream into a single JSON response. -Common GPT-5.3 model IDs: -- `chatgpt/gpt-5.3-codex` -- `chatgpt/gpt-5.3-codex-spark` -- `chatgpt/gpt-5.3-chat-latest` -- `chatgpt/gpt-5.3-instant` - ## Authentication ChatGPT subscription access uses an OAuth device code flow: From f1e4e4a0ce0c5adbdf8fe6a87b9f98ac504ba8a4 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 14:35:31 -0500 Subject: [PATCH 06/14] feat(models): add gpt-5.4-pro and chatgpt 5.4 aliases --- model_prices_and_context_window.json | 91 ++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 342b3fda8b..e4fe94da78 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -18437,6 +18437,35 @@ "max_tokens": 8191, "mode": "embedding" }, + "chatgpt/gpt-5.4": { + "litellm_provider": "chatgpt", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.4-pro": { + "litellm_provider": "chatgpt", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, "chatgpt/gpt-5.3-codex": { "litellm_provider": "chatgpt", "max_input_tokens": 128000, @@ -20949,6 +20978,68 @@ "supports_service_tier": true, "supports_vision": true }, + "gpt-5.4-pro": { + "cache_read_input_token_cost": 2e-06, + "input_cost_per_token": 2e-05, + "litellm_provider": "openai", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "output_cost_per_token": 0.00012, + "supported_endpoints": [ + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "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 + }, + "gpt-5.4-pro-2026-03-05": { + "cache_read_input_token_cost": 2e-06, + "input_cost_per_token": 2e-05, + "litellm_provider": "openai", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "output_cost_per_token": 0.00012, + "supported_endpoints": [ + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "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 + }, "gpt-5-pro": { "input_cost_per_token": 1.5e-05, "input_cost_per_token_batches": 7.5e-06, From 86d04ef3a038b585154c6a441fa8911302563f0d Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 14:35:36 -0500 Subject: [PATCH 07/14] chore(models): sync backup for gpt-5.4-pro and chatgpt 5.4 --- ...odel_prices_and_context_window_backup.json | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 342b3fda8b..e4fe94da78 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -18437,6 +18437,35 @@ "max_tokens": 8191, "mode": "embedding" }, + "chatgpt/gpt-5.4": { + "litellm_provider": "chatgpt", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/chat/completions", + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "chatgpt/gpt-5.4-pro": { + "litellm_provider": "chatgpt", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, "chatgpt/gpt-5.3-codex": { "litellm_provider": "chatgpt", "max_input_tokens": 128000, @@ -20949,6 +20978,68 @@ "supports_service_tier": true, "supports_vision": true }, + "gpt-5.4-pro": { + "cache_read_input_token_cost": 2e-06, + "input_cost_per_token": 2e-05, + "litellm_provider": "openai", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "output_cost_per_token": 0.00012, + "supported_endpoints": [ + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "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 + }, + "gpt-5.4-pro-2026-03-05": { + "cache_read_input_token_cost": 2e-06, + "input_cost_per_token": 2e-05, + "litellm_provider": "openai", + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "output_cost_per_token": 0.00012, + "supported_endpoints": [ + "/v1/responses" + ], + "supported_modalities": [ + "text", + "image" + ], + "supported_output_modalities": [ + "text" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_pdf_input": true, + "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 + }, "gpt-5-pro": { "input_cost_per_token": 1.5e-05, "input_cost_per_token_batches": 7.5e-06, From e358e3af4837795b90ec0c82cfc9021d8d8d3af1 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 14:35:40 -0500 Subject: [PATCH 08/14] docs(openai): add gpt-5.4 and gpt-5.4-pro model rows --- docs/my-website/docs/providers/openai.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/my-website/docs/providers/openai.md b/docs/my-website/docs/providers/openai.md index 782c7072e5..6817c32e9b 100644 --- a/docs/my-website/docs/providers/openai.md +++ b/docs/my-website/docs/providers/openai.md @@ -192,8 +192,12 @@ os.environ["OPENAI_BASE_URL"] = "https://your_host/v1" # OPTIONAL | gpt-5.2-2025-12-11 | `response = completion(model="gpt-5.2-2025-12-11", messages=messages)` | | gpt-5.2-chat-latest | `response = completion(model="gpt-5.2-chat-latest", messages=messages)` | | gpt-5.3-chat-latest | `response = completion(model="gpt-5.3-chat-latest", messages=messages)` | +| gpt-5.4 | `response = completion(model="gpt-5.4", messages=messages)` | +| gpt-5.4-2026-03-05 | `response = completion(model="gpt-5.4-2026-03-05", messages=messages)` | | gpt-5.2-pro | `response = completion(model="gpt-5.2-pro", messages=messages)` | | gpt-5.2-pro-2025-12-11 | `response = completion(model="gpt-5.2-pro-2025-12-11", messages=messages)` | +| gpt-5.4-pro | `response = completion(model="gpt-5.4-pro", messages=messages)` | +| gpt-5.4-pro-2026-03-05 | `response = completion(model="gpt-5.4-pro-2026-03-05", messages=messages)` | | gpt-5.1 | `response = completion(model="gpt-5.1", messages=messages)` | | gpt-5.1-codex | `response = completion(model="gpt-5.1-codex", messages=messages)` | | gpt-5.1-codex-mini | `response = completion(model="gpt-5.1-codex-mini", messages=messages)` | From ef7be611ed7f94aab313c5b102586c18bae1bc57 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 14:35:45 -0500 Subject: [PATCH 09/14] docs(chatgpt): include gpt-5.4 and gpt-5.4-pro examples --- docs/my-website/docs/providers/chatgpt.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/my-website/docs/providers/chatgpt.md b/docs/my-website/docs/providers/chatgpt.md index d6248e6274..702e9441f7 100644 --- a/docs/my-website/docs/providers/chatgpt.md +++ b/docs/my-website/docs/providers/chatgpt.md @@ -4,12 +4,12 @@ Use ChatGPT Pro/Max subscription models through LiteLLM with OAuth device flow a | Property | Details | |-------|-------| -| Description | ChatGPT subscription access (Codex + GPT-5.3 family) via ChatGPT backend API | +| Description | ChatGPT subscription access (Codex + GPT-5.3/5.4 family) via ChatGPT backend API | | Provider Route on LiteLLM | `chatgpt/` | | Supported Endpoints | `/responses`, `/chat/completions` (bridged to Responses for supported models) | | API Reference | https://chatgpt.com | -ChatGPT subscription access is native to the Responses API. Chat Completions requests are bridged to Responses for supported models (for example `chatgpt/gpt-5.3-chat-latest`). +ChatGPT subscription access is native to the Responses API. Chat Completions requests are bridged to Responses for supported models (for example `chatgpt/gpt-5.4`). Notes: - The ChatGPT subscription backend rejects token limit fields (`max_tokens`, `max_output_tokens`, `max_completion_tokens`) and `metadata`. LiteLLM strips these fields for this provider. @@ -44,7 +44,7 @@ print(response) import litellm response = litellm.completion( - model="chatgpt/gpt-5.3-chat-latest", + model="chatgpt/gpt-5.4", messages=[{"role": "user", "content": "Write a Python hello world"}] ) @@ -55,11 +55,16 @@ print(response) ```yaml showLineNumbers title="config.yaml" model_list: - - model_name: chatgpt/gpt-5.3-chat-latest + - model_name: chatgpt/gpt-5.4 model_info: mode: responses litellm_params: - model: chatgpt/gpt-5.3-chat-latest + model: chatgpt/gpt-5.4 + - model_name: chatgpt/gpt-5.4-pro + model_info: + mode: responses + litellm_params: + model: chatgpt/gpt-5.4-pro - model_name: chatgpt/gpt-5.3-codex model_info: mode: responses @@ -70,6 +75,11 @@ model_list: mode: responses litellm_params: model: chatgpt/gpt-5.3-codex-spark + - model_name: chatgpt/gpt-5.3-instant + model_info: + mode: responses + litellm_params: + model: chatgpt/gpt-5.3-instant ``` ```bash showLineNumbers title="Start LiteLLM Proxy" From 68ab37cf34632a14454ac71041e4f9ed12d88c7e Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 14:35:50 -0500 Subject: [PATCH 10/14] test(chatgpt): add gpt-5.4 alias registration coverage --- .../chatgpt/responses/test_chatgpt_responses_transformation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py b/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py index f469d48831..6e3cca309a 100644 --- a/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py +++ b/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py @@ -23,6 +23,8 @@ class TestChatGPTResponsesAPITransformation: @pytest.mark.parametrize( "model_name", [ + "chatgpt/gpt-5.4", + "chatgpt/gpt-5.4-pro", "chatgpt/gpt-5.3-chat-latest", "chatgpt/gpt-5.3-instant", "chatgpt/gpt-5.3-codex", From 9a37fe2821d6bd0a1babe0299069ca498fe11a4c Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 14:35:55 -0500 Subject: [PATCH 11/14] test(openai): add gpt-5.4 detection and xhigh assertions --- .../llms/openai/test_gpt5_transformation.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/test_litellm/llms/openai/test_gpt5_transformation.py b/tests/test_litellm/llms/openai/test_gpt5_transformation.py index 026aba9ba4..53a554ecb1 100644 --- a/tests/test_litellm/llms/openai/test_gpt5_transformation.py +++ b/tests/test_litellm/llms/openai/test_gpt5_transformation.py @@ -267,9 +267,12 @@ def test_gpt5_1_model_detection(gpt5_config: OpenAIGPT5Config): assert gpt5_config.is_model_gpt_5_1_model("gpt-5.1-chat") assert gpt5_config.is_model_gpt_5_1_model("gpt-5.2") assert gpt5_config.is_model_gpt_5_1_model("gpt-5.2-2025-12-11") + assert gpt5_config.is_model_gpt_5_1_model("gpt-5.4") + assert gpt5_config.is_model_gpt_5_1_model("gpt-5.4-2026-03-05") assert not gpt5_config.is_model_gpt_5_1_model("gpt-5.2-chat") assert not gpt5_config.is_model_gpt_5_1_model("gpt-5.2-chat-latest") assert not gpt5_config.is_model_gpt_5_1_model("gpt-5.3-chat-latest") + assert not gpt5_config.is_model_gpt_5_1_model("gpt-5.4-pro") assert not gpt5_config.is_model_gpt_5_1_model("gpt-5.2-pro") assert not gpt5_config.is_model_gpt_5_1_model("gpt-5") assert not gpt5_config.is_model_gpt_5_1_model("gpt-5-mini") @@ -303,6 +306,16 @@ def test_gpt5_2_temperature_with_reasoning_effort_none(config: OpenAIConfig): assert params["reasoning_effort"] == "none" +def test_gpt5_4_allows_reasoning_effort_xhigh(config: OpenAIConfig): + params = config.map_openai_params( + non_default_params={"reasoning_effort": "xhigh"}, + optional_params={}, + model="gpt-5.4", + drop_params=False, + ) + assert params["reasoning_effort"] == "xhigh" + + def test_gpt5_1_temperature_without_reasoning_effort(config: OpenAIConfig): """Test that GPT-5.1 supports any temperature when reasoning_effort is not specified. From 4e3c957bce7459d9e14cc86200dd6366cddd48d1 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 16:49:52 -0500 Subject: [PATCH 12/14] docs(chatgpt): add gpt-5.3-chat-latest proxy example --- docs/my-website/docs/providers/chatgpt.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/my-website/docs/providers/chatgpt.md b/docs/my-website/docs/providers/chatgpt.md index 702e9441f7..222881953d 100644 --- a/docs/my-website/docs/providers/chatgpt.md +++ b/docs/my-website/docs/providers/chatgpt.md @@ -80,6 +80,11 @@ model_list: mode: responses litellm_params: model: chatgpt/gpt-5.3-instant + - model_name: chatgpt/gpt-5.3-chat-latest + model_info: + mode: responses + litellm_params: + model: chatgpt/gpt-5.3-chat-latest ``` ```bash showLineNumbers title="Start LiteLLM Proxy" From fb935a61ae0c9b1d8e553bd3e7c09eabc3d1f2fa Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 17:00:49 -0500 Subject: [PATCH 13/14] test(chatgpt): restore gpt-5.2 codex transformation coverage --- .../test_chatgpt_responses_transformation.py | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py b/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py index 6e3cca309a..c0a0927b7d 100644 --- a/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py +++ b/tests/test_litellm/llms/chatgpt/responses/test_chatgpt_responses_transformation.py @@ -84,10 +84,17 @@ def test_validate_environment_headers(self, mock_authenticator_class): assert headers["accept"] == "text/event-stream" assert headers["session_id"] == "session-123" - def test_chatgpt_forces_streaming_and_reasoning_include(self): + @pytest.mark.parametrize( + "model_name", + [ + "chatgpt/gpt-5.2-codex", + "chatgpt/gpt-5.3-codex", + ], + ) + def test_chatgpt_forces_streaming_and_reasoning_include(self, model_name): config = ChatGPTResponsesAPIConfig() request = config.transform_responses_api_request( - model="chatgpt/gpt-5.3-codex", + model=model_name, input="hi", response_api_optional_request_params={}, litellm_params=GenericLiteLLMParams(), @@ -100,10 +107,17 @@ def test_chatgpt_forces_streaming_and_reasoning_include(self): "You are Codex, based on GPT-5." ) - def test_chatgpt_drops_unsupported_responses_params(self): + @pytest.mark.parametrize( + "model_name", + [ + "chatgpt/gpt-5.2-codex", + "chatgpt/gpt-5.3-codex-spark", + ], + ) + def test_chatgpt_drops_unsupported_responses_params(self, model_name): config = ChatGPTResponsesAPIConfig() request = config.transform_responses_api_request( - model="chatgpt/gpt-5.3-codex-spark", + model=model_name, input="hi", response_api_optional_request_params={ # unsupported by ChatGPT Codex @@ -139,14 +153,23 @@ def test_chatgpt_drops_unsupported_responses_params(self): assert request["tools"] == [{"type": "function", "function": {"name": "hello"}}] assert request["tool_choice"] == {"type": "function", "function": {"name": "hello"}} - def test_chatgpt_non_stream_sse_response_parsing(self): + @pytest.mark.parametrize( + ("model_name", "response_model"), + [ + ("chatgpt/gpt-5.2-codex", "gpt-5.2-codex"), + ("chatgpt/gpt-5.3-codex", "gpt-5.3-codex"), + ], + ) + def test_chatgpt_non_stream_sse_response_parsing( + self, model_name: str, response_model: str + ): config = ChatGPTResponsesAPIConfig() response_payload = { "id": "resp_test", "object": "response", "created_at": 1700000000, "status": "completed", - "model": "gpt-5.3-codex", + "model": response_model, "output": [ { "type": "message", @@ -168,7 +191,7 @@ def test_chatgpt_non_stream_sse_response_parsing(self): logging_obj = MagicMock() parsed = config.transform_response_api_response( - model="chatgpt/gpt-5.3-codex", + model=model_name, raw_response=raw_response, logging_obj=logging_obj, ) From ba3ce77e2967e40e1cbf483cc5dcedf018271f5f Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 5 Mar 2026 17:02:14 -0500 Subject: [PATCH 14/14] test(openai): cover gpt-5.4-pro parameter behavior --- .../llms/openai/test_gpt5_transformation.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/test_litellm/llms/openai/test_gpt5_transformation.py b/tests/test_litellm/llms/openai/test_gpt5_transformation.py index 53a554ecb1..70ed96c91a 100644 --- a/tests/test_litellm/llms/openai/test_gpt5_transformation.py +++ b/tests/test_litellm/llms/openai/test_gpt5_transformation.py @@ -316,6 +316,26 @@ def test_gpt5_4_allows_reasoning_effort_xhigh(config: OpenAIConfig): assert params["reasoning_effort"] == "xhigh" +def test_gpt5_4_pro_allows_reasoning_effort_xhigh(config: OpenAIConfig): + params = config.map_openai_params( + non_default_params={"reasoning_effort": "xhigh"}, + optional_params={}, + model="gpt-5.4-pro", + drop_params=False, + ) + assert params["reasoning_effort"] == "xhigh" + + +def test_gpt5_4_pro_rejects_non_default_temperature(config: OpenAIConfig): + with pytest.raises(litellm.utils.UnsupportedParamsError): + config.map_openai_params( + non_default_params={"temperature": 0.5}, + optional_params={}, + model="gpt-5.4-pro", + drop_params=False, + ) + + def test_gpt5_1_temperature_without_reasoning_effort(config: OpenAIConfig): """Test that GPT-5.1 supports any temperature when reasoning_effort is not specified.