Streaming 이 사주는 건 time-to-first-token
Gemini 2.5 Flash 의 time-to-first-token (TTFT) 보통 200–400ms. 500 단어 답변의 time-to-last-token 은 3–8 초. Streaming 이 모델을 빠르게 만드는 건 X — user 의 기다림을 빈 화면 대신 visible progress 로 만드는 거야.
Streaming 안 쓰는 product 비용은 "이 앱 느려" 와 "이 앱 살아있어" 의 차이. 같은 총 시간, 다른 perception.
Server-Sent Events — wire format
Gemini 의 streaming endpoint 가 Server-Sent Events (SSE) 사용. 각 event 는 data: 로 시작하는 line + complete JSON 객체 — non-streaming response 와 같은 모양인데 parts 배열에 text slice 만 들어있음.
Endpoint variant 두 가지
같은 URL, 다른 query string:
/streamGenerateContent(?alt=sse없이) — buffered JSON array 반환. streaming chunk 받고 싶지만 SSE parse 하기 싫을 때./streamGenerateContent?alt=sse— SSE 반환. browser 로 stream 포워딩하거나 line-by-line parse 할 때.
Final chunk 가 usageMetadata 옮김
Token count 는 stream 의 마지막 chunk 에만 나타남. 호출 billing 이나 logging 하려면 모든 chunk 가로질러 text accumulate 하고 usageMetadata 들어있는 chunk 잡아.