deepset-ai/haystack · error · ValueError
These components do not support streaming: {sorted(non_strea
Error message
These components do not support streaming: {sorted(non_streaming)} What it means
Pipeline.stream raises ValueError (pipeline.py:1303) when entries in streaming_components name valid components that do not support streaming (their run does not accept a streaming callback). Streaming can only be requested for components with streaming capability.
Source
Thrown at haystack/core/pipeline/pipeline.py:1303
it to get stuck and fail running, or if a Component fails or returns output in an unsupported type.
:raises PipelineMaxComponentRuns:
Surfaced during iteration. If a Component reaches the maximum number of times it can be run in this
Pipeline.
"""
streaming_capable = {
name
for name in self.graph.nodes
if getattr(self.graph.nodes[name]["instance"], "__haystack_supports_async__", False)
and "streaming_callback" in self.graph.nodes[name]["instance"].__haystack_input__
}
if streaming_components is not None:
requested = set(streaming_components)
unknown = requested - set(self.graph.nodes)
non_streaming = requested - unknown - streaming_capable
if unknown:
raise ValueError(f"Unknown components in streaming_components: {sorted(unknown)}")
if non_streaming:
raise ValueError(f"These components do not support streaming: {sorted(non_streaming)}")
queue: asyncio.Queue[StreamingChunk | _EndOfStream] = asyncio.Queue()
def make_forwarder(user_callback: StreamingCallbackT | None) -> AsyncStreamingCallbackT:
async def forwarder(chunk: StreamingChunk) -> None:
await queue.put(chunk)
if user_callback is not None:
await _invoke_streaming_callback(user_callback, chunk)
return forwarder
new_data: dict[str, Any] = self._prepare_component_input_data(data)
for name in streaming_capable:
if streaming_components is not None and name not in streaming_components:
continue
instance = self.graph.nodes[name]["instance"]
comp_inputs = new_data.setdefault(name, {})
View on GitHub (pinned to e318778c9b)
Solutions
- Remove non-streaming components from streaming_components and keep only those whose run accepts a streaming callback.
- Inspect the component's input sockets to confirm streaming support before adding it.
- Leave streaming_components as None to use the default streaming-capable set.
Example fix
// before pipe.stream(data, streaming_components=["retriever", "llm"]) // after pipe.stream(data, streaming_components=["llm"]) # only streaming-capable components
Defensive patterns
Strategy: validation
Validate before calling
# keep only streaming-capable components
def is_streaming_capable(name, pipe):
from haystack.core.component import component
inst = pipe.get_component(name)
return hasattr(inst, 'run') and any(
p.get('streaming_callback') is not None
for p in component.registry[type(inst)].run.input_types.values()
)
names = [n for n in requested if is_streaming_capable(n, pipe)] Try / catch
try:
stream = pipe.stream(data, streaming_components=names)
except ValueError as e:
if 'do not support streaming' in str(e):
stream = pipe.stream(data, streaming_components=None) Prevention
- Only list generator/chat-generator style components in streaming_components.
- Default to streaming_components=None and let Haystack pick capable components.
- Check component input sockets for a streaming_callback parameter before including a name.
When it happens
Trigger: streaming_components containing a non-LLM component, e.g. ["retriever", "llm"] where only the generator supports streaming callbacks; requesting streaming for converters or embedders.
Common situations: Assuming all components stream; passing the whole pipeline's component list instead of only generator-style components.
Related errors
- Unknown components in streaming_components: {sorted(unknown)
- Cannot stream multiple responses, please set n=1.
- Input '${input_name}' not found in component '${component_na
- Missing mandatory input '${socket_name}' for component '${co
- break_point {break_point} is not a registered component in t
AI-assisted analysis of deepset-ai/haystack@e318778c9b (2026-08-30).
Data as JSON: /api/errors/daacc3c99841a825.
Report an issue: GitHub.