왜 stream하나
Non-streaming Messages 호출은 응답 전체 생성될 때까지 블록. 긴 완성이면 그게 몇 초 dead UX. 스트리밍은 모델이 토큰 만드는 대로 Server-Sent Events 반환, 인지 지연을 last-token이 아니라 first-token까지로 떨어뜨림.
실제로 다루는 이벤트 타입
SDK가 SSE wire format을 typed 이벤트로 추상화. 첫날에 알 가치 있는 다섯 — message_start(초기 응답 shell), content_block_start(새 텍스트 또는 tool 블록 시작), content_block_delta(증분 텍스트), content_block_stop(블록 닫힘), message_stop(응답 완료). Tool use는 자기 delta 모양 가진 별도 블록 타입으로 stream.
스트리밍은 보이는 것보다 어려워
스트림 중간 disconnect는 partial output에 자동 retry 없음. Token 카운트는 message_stop에서만 확정. Tool-use 블록은 parse 전에 delta에서 재조립해야 함. 스트리밍은 더 빠른 피드백 주는 대신 더 많은 애플리케이션 코드를 요구해.
원칙: User가 기다리고 있으면 stream. 아니면 buffer. '할 수 있어서' stream하지 마.