generate_content_stream — 같은 인자로 이터레이터 받기
스트리밍 메서드는 일반 메서드와 나란히 있고 같은 인자를 받아. 다른 점은 반환값뿐이야. GenerateContentResponse 하나 대신 부분 응답의 동기 이터레이터나 비동기 이터레이터를 받아.
기억할 패턴 세 가지
- 동기 스트림:
for chunk in client.models.generate_content_stream(...) - 비동기 스트림:
async for chunk in await client.aio.models.generate_content_stream(...)— 호출 자체를await한 뒤async for로 순회해. - 스트리밍 채팅:
chat.send_message_stream(...)/chat.aio.send_message_stream(...)
진행하면서 이어 붙이고 마지막에 사용량을 잡아
각 청크의 chunk.text에는 그 구간의 텍스트 조각이 있어. 모두 이어 붙이면 전체 답변이 돼. usage_metadata는 마지막 청크에만 있으므로 순회하다 값이 나타날 때 저장해.
멀티모달도 같은 방식으로 스트리밍해
이미지, 업로드한 파일, 일반 호출에 쓸 여러 part의 콘텐츠를 그대로 전달할 수 있어. 모델이 첫 텍스트 토큰을 만드는 순간 스트림이 시작돼.