- Graph state stream —
updates와values모드로 state 업데이트 / 값을 가져옵니다. - Subgraph 출력 stream — 부모 graph와 중첩된 subgraph의 출력을 모두 포함합니다.
- LLM token stream — node, subgraph 또는 tool 내부 어디에서든 token stream을 캡처합니다.
- 사용자 정의 데이터 stream — tool function에서 직접 사용자 정의 업데이트 또는 진행 신호를 전송합니다.
- 여러 streaming 모드 사용 —
values(전체 state),updates(state 델타),messages(LLM token + metadata),custom(임의의 사용자 데이터), 또는debug(상세한 trace) 중에서 선택합니다.
지원되는 stream 모드
다음 stream 모드 중 하나 이상을 리스트로stream 또는 astream 메서드에 전달하세요:
| 모드 | 설명 |
|---|---|
values | graph의 각 단계 후 state의 전체 값을 stream합니다. |
updates | graph의 각 단계 후 state에 대한 업데이트를 stream합니다. 동일한 단계에서 여러 업데이트가 발생하면(예: 여러 node가 실행됨), 해당 업데이트는 개별적으로 stream됩니다. |
custom | graph node 내부에서 사용자 정의 데이터를 stream합니다. |
messages | LLM이 호출되는 모든 graph node에서 2-tuple (LLM token, metadata)을 stream합니다. |
debug | graph 실행 전반에 걸쳐 가능한 한 많은 정보를 stream합니다. |
기본 사용 예제
LangGraph graph는stream (동기) 및 astream (비동기) 메서드를 노출하여 stream된 출력을 iterator로 생성합니다.
확장 예제: streaming updates
확장 예제: streaming updates
여러 모드 stream
stream_mode 매개변수에 리스트를 전달하여 여러 모드를 동시에 stream할 수 있습니다.
stream된 출력은 (mode, chunk) tuple이 되며, 여기서 mode는 stream 모드의 이름이고 chunk는 해당 모드에서 stream된 데이터입니다.
Graph state stream
stream 모드updates와 values를 사용하여 graph가 실행될 때 state를 stream합니다.
updates는 graph의 각 단계 후 state에 대한 업데이트를 stream합니다.values는 graph의 각 단계 후 state의 전체 값을 stream합니다.
- updates
- values
각 단계 후 node에서 반환된 state 업데이트만 stream하려면 이것을 사용하세요. stream된 출력에는 node의 이름과 업데이트가 포함됩니다.
Subgraph 출력 stream
stream된 출력에 subgraph의 출력을 포함하려면, 부모 graph의.stream() 메서드에서 subgraphs=True를 설정할 수 있습니다. 이렇게 하면 부모 graph와 모든 subgraph의 출력이 stream됩니다.
출력은 tuple (namespace, data)로 stream되며, 여기서 namespace는 subgraph가 호출되는 node의 경로를 가진 tuple입니다. 예: ("parent_node:<task_id>", "child_node:<task_id>").
확장 예제: subgraph에서 streaming
확장 예제: subgraph에서 streaming
Debugging
debug streaming 모드를 사용하여 graph 실행 전반에 걸쳐 가능한 한 많은 정보를 stream합니다. stream된 출력에는 node의 이름과 전체 state가 포함됩니다.
LLM token
messages streaming 모드를 사용하여 graph의 모든 부분(node, tool, subgraph 또는 task 포함)에서 Large Language Model (LLM) 출력을 token 단위로 stream합니다.
messages 모드에서 stream된 출력은 tuple (message_chunk, metadata)이며, 여기서:
message_chunk: LLM의 token 또는 message segment입니다.metadata: graph node 및 LLM 호출에 대한 세부 정보를 포함하는 dictionary입니다.
LLM이 LangChain integration으로 제공되지 않는 경우, 대신 custom 모드를 사용하여 출력을 stream할 수 있습니다. 자세한 내용은 모든 LLM과 함께 사용을 참조하세요.
Python < 3.11에서 async를 위한 수동 config 필요
Python < 3.11에서 async 코드를 사용할 때는 적절한 streaming을 활성화하기 위해
ainvoke()에 RunnableConfig를 명시적으로 전달해야 합니다. 자세한 내용은 Python < 3.11에서 Async를 참조하거나 Python 3.11+로 업그레이드하세요.LLM 호출별로 필터링
LLM 호출과tags를 연결하여 LLM 호출별로 stream된 token을 필터링할 수 있습니다.
확장 예제: tag로 필터링
확장 예제: tag로 필터링
Node별로 필터링
특정 node에서만 token을 stream하려면,stream_mode="messages"를 사용하고 stream된 metadata의 langgraph_node 필드로 출력을 필터링하세요:
확장 예제: 특정 node에서 LLM token streaming
확장 예제: 특정 node에서 LLM token streaming
사용자 정의 데이터 stream
LangGraph node 또는 tool 내부에서 사용자 정의 데이터를 전송하려면 다음 단계를 따르세요:get_stream_writer를 사용하여 stream writer에 액세스하고 사용자 정의 데이터를 emit합니다..stream()또는.astream()을 호출할 때stream_mode="custom"을 설정하여 stream에서 사용자 정의 데이터를 가져옵니다. 여러 모드를 결합할 수 있지만(예:["updates", "custom"]), 최소한 하나는"custom"이어야 합니다.
Python < 3.11에서 async에서는
get_stream_writer 사용 불가
Python < 3.11에서 실행되는 async 코드에서는 get_stream_writer가 작동하지 않습니다.
대신, node 또는 tool에 writer 매개변수를 추가하고 수동으로 전달하세요.
사용 예제는 Python < 3.11에서 Async를 참조하세요.- node
- tool
모든 LLM과 함께 사용
stream_mode="custom"을 사용하여 모든 LLM API에서 데이터를 stream할 수 있습니다 — 해당 API가 LangChain chat model interface를 구현하지 않더라도 가능합니다.
이를 통해 자체 streaming interface를 제공하는 raw LLM client 또는 외부 서비스를 통합할 수 있어, LangGraph를 사용자 정의 설정에 매우 유연하게 만듭니다.
확장 예제: 임의의 chat model streaming
확장 예제: 임의의 chat model streaming
특정 chat model에 대해 streaming 비활성화
애플리케이션이 streaming을 지원하는 model과 지원하지 않는 model을 혼합하는 경우, streaming을 지원하지 않는 model에 대해 명시적으로 streaming을 비활성화해야 할 수 있습니다. model을 초기화할 때disable_streaming=True를 설정하세요.
- init_chat_model
- chat model interface
Python < 3.11에서 Async
Python 버전 < 3.11에서는 asyncio task가context 매개변수를 지원하지 않습니다.
이는 LangGraph의 context 자동 전파 기능을 제한하며, LangGraph의 streaming 메커니즘에 두 가지 주요 방식으로 영향을 미칩니다:
- async LLM 호출(예:
ainvoke())에RunnableConfig를 명시적으로 전달해야 합니다. callback이 자동으로 전파되지 않기 때문입니다. - async node 또는 tool에서
get_stream_writer를 사용할 수 없습니다 —writer인수를 직접 전달해야 합니다.
확장 예제: 수동 config를 사용한 async LLM 호출
확장 예제: 수동 config를 사용한 async LLM 호출
확장 예제: stream writer를 사용한 async 사용자 정의 streaming
확장 예제: stream writer를 사용한 async 사용자 정의 streaming
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.