From d57bf205ab709c3dc9d35be649c390dd5356f07f Mon Sep 17 00:00:00 2001 From: Alex Castillo Date: Wed, 28 Oct 2026 10:52:07 -0400 Subject: [PATCH] fix: replace the retired gpt-3.5-turbo default for openai.com OpenAI shut gpt-3.5-turbo down on 2026-10-23. With OPENAI_CHAT_HOST=openaicom and no OPENAICOM_CHAT_MODEL, the app fell back to it and the chat calls failed. Use gpt-5.4, the same model as the Azure default, in the fallback, the Bicep setting, the sample env file and the tests, and add a test for the fallback. --- .env.sample | 2 +- infra/main.bicep | 2 +- src/backend/fastapi_app/dependencies.py | 2 +- tests/conftest.py | 2 +- tests/test_dependencies.py | 9 ++++++++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.env.sample b/.env.sample index 6fee2d2..e770b53 100644 --- a/.env.sample +++ b/.env.sample @@ -25,7 +25,7 @@ AZURE_TENANT_ID= AZURE_OPENAI_KEY= # Needed for OpenAI.com: OPENAICOM_KEY=YOUR-OPENAI-API-KEY -OPENAICOM_CHAT_MODEL=gpt-3.5-turbo +OPENAICOM_CHAT_MODEL=gpt-5.4 OPENAICOM_EMBED_MODEL=text-embedding-3-large OPENAICOM_EMBED_DIMENSIONS=1024 OPENAICOM_EMBEDDING_COLUMN=embedding_3l diff --git a/infra/main.bicep b/infra/main.bicep index ea80075..b465a05 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -354,7 +354,7 @@ var webAppEnv = union(azureOpenAIKeyEnv, openAIComKeyEnv, [ } { name: 'OPENAICOM_CHAT_MODEL' - value: openAIChatHost == 'openaicom' ? 'gpt-3.5-turbo' : '' + value: openAIChatHost == 'openaicom' ? 'gpt-5.4' : '' } { name: 'OPENAI_EMBED_HOST' diff --git a/src/backend/fastapi_app/dependencies.py b/src/backend/fastapi_app/dependencies.py index fdd7063..575b4a3 100644 --- a/src/backend/fastapi_app/dependencies.py +++ b/src/backend/fastapi_app/dependencies.py @@ -65,7 +65,7 @@ async def common_parameters(): openai_embed_model = os.getenv("OLLAMA_EMBED_MODEL") or "nomic-embed-text" else: openai_chat_deployment = None - openai_chat_model = os.getenv("OPENAICOM_CHAT_MODEL") or "gpt-3.5-turbo" + openai_chat_model = os.getenv("OPENAICOM_CHAT_MODEL") or "gpt-5.4" return FastAPIAppContext( openai_chat_model=openai_chat_model, openai_embed_model=openai_embed_model, diff --git a/tests/conftest.py b/tests/conftest.py index 4400685..6820784 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -97,7 +97,7 @@ def mock_session_env_openai(monkeypatch_session): monkeypatch_session.setenv("OPENAI_CHAT_HOST", "openai") monkeypatch_session.setenv("OPENAI_EMBED_HOST", "openai") monkeypatch_session.setenv("OPENAICOM_KEY", "fakekey") - monkeypatch_session.setenv("OPENAICOM_CHAT_MODEL", "gpt-3.5-turbo") + monkeypatch_session.setenv("OPENAICOM_CHAT_MODEL", "gpt-5.4") monkeypatch_session.setenv("OPENAICOM_EMBED_MODEL", "text-embedding-3-large") monkeypatch_session.setenv("OPENAICOM_EMBED_DIMENSIONS", "1024") monkeypatch_session.setenv("OPENAICOM_EMBEDDING_COLUMN", "embedding_3l") diff --git a/tests/test_dependencies.py b/tests/test_dependencies.py index 1c4d90d..135b799 100644 --- a/tests/test_dependencies.py +++ b/tests/test_dependencies.py @@ -26,13 +26,20 @@ async def test_get_common_parameters_ollama(mock_session_env_ollama): @pytest.mark.asyncio async def test_get_common_parameters_openai(mock_session_env_openai): result = await common_parameters() - assert result.openai_chat_model == "gpt-3.5-turbo" + assert result.openai_chat_model == "gpt-5.4" assert result.openai_embed_model == "text-embedding-3-large" assert result.openai_embed_dimensions == 1024 assert result.openai_chat_deployment is None assert result.openai_embed_deployment is None +@pytest.mark.asyncio +async def test_get_common_parameters_openai_default_chat_model(mock_session_env_openai, monkeypatch): + monkeypatch.delenv("OPENAICOM_CHAT_MODEL", raising=False) + result = await common_parameters() + assert result.openai_chat_model == "gpt-5.4" + + @pytest.mark.asyncio async def test_get_azure_credential(mock_session_env, mock_azure_credential): result = await get_azure_credential()