From 6432647743abc9ee7bc590d3e86fcdf9cd8f65dc Mon Sep 17 00:00:00 2001 From: Mason Daugherty Date: Tue, 26 Aug 2025 22:16:07 -0400 Subject: [PATCH] fix(core): `_should_stream` respects `streaming` param --- .../langchain_core/language_models/chat_models.py | 4 ++++ .../openai/tests/unit_tests/chat_models/test_base.py | 12 ++++++------ .../unit_tests/chat_models/test_responses_stream.py | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/libs/core/langchain_core/language_models/chat_models.py b/libs/core/langchain_core/language_models/chat_models.py index 23872752da5..3cb4a5950df 100644 --- a/libs/core/langchain_core/language_models/chat_models.py +++ b/libs/core/langchain_core/language_models/chat_models.py @@ -451,6 +451,10 @@ class BaseChatModel(BaseLanguageModel[BaseMessage], ABC): if self.disable_streaming == "tool_calling" and kwargs.get("tools"): return False + # Check if streaming has been disabled via the streaming parameter. + if hasattr(self, "streaming") and not self.streaming: + return False + # Check if a runtime streaming flag has been passed in. if "stream" in kwargs: return kwargs["stream"] diff --git a/libs/partners/openai/tests/unit_tests/chat_models/test_base.py b/libs/partners/openai/tests/unit_tests/chat_models/test_base.py index 2c33fe062bf..797b2e6b9d4 100644 --- a/libs/partners/openai/tests/unit_tests/chat_models/test_base.py +++ b/libs/partners/openai/tests/unit_tests/chat_models/test_base.py @@ -350,7 +350,7 @@ def mock_glm4_completion() -> list: async def test_glm4_astream(mock_glm4_completion: list) -> None: llm_name = "glm-4" - llm = ChatOpenAI(model=llm_name, stream_usage=True) + llm = ChatOpenAI(model=llm_name, stream_usage=True, streaming=True) mock_client = AsyncMock() async def mock_create(*args: Any, **kwargs: Any) -> MockAsyncContextManager: @@ -375,7 +375,7 @@ async def test_glm4_astream(mock_glm4_completion: list) -> None: def test_glm4_stream(mock_glm4_completion: list) -> None: llm_name = "glm-4" - llm = ChatOpenAI(model=llm_name, stream_usage=True) + llm = ChatOpenAI(model=llm_name, stream_usage=True, streaming=True) mock_client = MagicMock() def mock_create(*args: Any, **kwargs: Any) -> MockSyncContextManager: @@ -431,7 +431,7 @@ def mock_deepseek_completion() -> list[dict]: async def test_deepseek_astream(mock_deepseek_completion: list) -> None: llm_name = "deepseek-chat" - llm = ChatOpenAI(model=llm_name, stream_usage=True) + llm = ChatOpenAI(model=llm_name, stream_usage=True, streaming=True) mock_client = AsyncMock() async def mock_create(*args: Any, **kwargs: Any) -> MockAsyncContextManager: @@ -455,7 +455,7 @@ async def test_deepseek_astream(mock_deepseek_completion: list) -> None: def test_deepseek_stream(mock_deepseek_completion: list) -> None: llm_name = "deepseek-chat" - llm = ChatOpenAI(model=llm_name, stream_usage=True) + llm = ChatOpenAI(model=llm_name, stream_usage=True, streaming=True) mock_client = MagicMock() def mock_create(*args: Any, **kwargs: Any) -> MockSyncContextManager: @@ -499,7 +499,7 @@ def mock_openai_completion() -> list[dict]: async def test_openai_astream(mock_openai_completion: list) -> None: llm_name = "gpt-4o" - llm = ChatOpenAI(model=llm_name, stream_usage=True) + llm = ChatOpenAI(model=llm_name, stream_usage=True, streaming=True) mock_client = AsyncMock() async def mock_create(*args: Any, **kwargs: Any) -> MockAsyncContextManager: @@ -523,7 +523,7 @@ async def test_openai_astream(mock_openai_completion: list) -> None: def test_openai_stream(mock_openai_completion: list) -> None: llm_name = "gpt-4o" - llm = ChatOpenAI(model=llm_name, stream_usage=True) + llm = ChatOpenAI(model=llm_name, stream_usage=True, streaming=True) mock_client = MagicMock() def mock_create(*args: Any, **kwargs: Any) -> MockSyncContextManager: diff --git a/libs/partners/openai/tests/unit_tests/chat_models/test_responses_stream.py b/libs/partners/openai/tests/unit_tests/chat_models/test_responses_stream.py index eca5ee1c255..28a232e64e6 100644 --- a/libs/partners/openai/tests/unit_tests/chat_models/test_responses_stream.py +++ b/libs/partners/openai/tests/unit_tests/chat_models/test_responses_stream.py @@ -621,7 +621,7 @@ def _strip_none(obj: Any) -> Any: def test_responses_stream() -> None: - llm = ChatOpenAI(model="o4-mini", output_version="responses/v1") + llm = ChatOpenAI(model="o4-mini", output_version="responses/v1", streaming=True) mock_client = MagicMock() def mock_create(*args: Any, **kwargs: Any) -> MockSyncContextManager: