LangGraph

LangGraph 9강

[스트리밍] 스트리밍 모드

에이전트는 여러 노드를 거치느라 응답이 느릴 수 있다. 스트리밍은 최종 결과를 기다리지 않고 실행 과정을 실시간으로 흘려보낸다. stream()stream_mode를 지정해 전체 상태·변경분·LLM 토큰 중 원하는 단위로 받는다.

LangGraph 9강 구성도

이 강의 목표는 상황별 스트리밍 모드를 골라 쓰는 것이다.

1. 스트리밍 모드

stream_mode 받는 내용
values 매 단계 전체 State
updates 각 노드가 바꾼 부분만
messages LLM이 생성하는 토큰 단위
debug 상세 실행 이벤트

2. updates — 진행 상황 로깅

노드별로 무엇이 바뀌었는지 받아 진행 상황을 표시하기 좋다.

for chunk in app.stream(
        {"messages": [("user", "긴 보고서 써줘")]},
        {"configurable": {"thread_id": "t1"}},
        stream_mode="updates"):
    print(chunk)     # {'chat': {'messages': [...]}} 형태

3. messages — 챗 UI 타이핑 효과

LLM 토큰을 조각조각 받아 화면에 흘려보낸다.

for tok, meta in app.stream(inp, cfg, stream_mode="messages"):
    print(tok.content, end="", flush=True)

여러 모드를 동시에 받으려면 리스트로 준다: stream_mode=["updates", "messages"].

핵심 명령·용어

이름
app.stream() 실행 과정 스트리밍
stream_mode 스트리밍 단위 지정
values / updates 전체 / 변경분
messages LLM 토큰 스트리밍

예제

# 비동기 스트리밍(FastAPI SSE 등)
async for tok, meta in app.astream(inp, cfg, stream_mode="messages"):
    yield tok.content

해설) 서버에서 사용자에게 실시간 응답을 보낼 땐 astream + messages 모드가 표준이다. 내부 진행 로그가 필요하면 updates를 함께 받는다.

댓글 0