Skip to content

Commit a3e4f4c

Browse files
authored
fix(core): override streaming callback if streaming attribute is set (#33351)
1 parent b5030ba commit a3e4f4c

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

libs/core/langchain_core/language_models/chat_models.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,8 +470,10 @@ def _should_stream(
470470
if "stream" in kwargs:
471471
return kwargs["stream"]
472472

473-
if getattr(self, "streaming", False):
474-
return True
473+
if "streaming" in self.model_fields_set:
474+
streaming_value = getattr(self, "streaming", None)
475+
if isinstance(streaming_value, bool):
476+
return streaming_value
475477

476478
# Check if any streaming callback handlers have been passed in.
477479
handlers = run_manager.handlers if run_manager else []

libs/core/tests/unit_tests/language_models/chat_models/test_base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ def _llm_type(self) -> str:
364364

365365

366366
class StreamingModel(NoStreamingModel):
367+
streaming: bool = False
368+
367369
@override
368370
def _stream(
369371
self,
@@ -427,6 +429,13 @@ async def test_disable_streaming_async(
427429
).content == expected
428430

429431

432+
async def test_streaming_attribute_overrides_streaming_callback() -> None:
433+
model = StreamingModel(streaming=False)
434+
assert (
435+
await model.ainvoke([], config={"callbacks": [_AstreamEventsCallbackHandler()]})
436+
).content == "invoke"
437+
438+
430439
@pytest.mark.parametrize("disable_streaming", [True, False, "tool_calling"])
431440
def test_disable_streaming_no_streaming_model(
432441
*,

0 commit comments

Comments
 (0)