Skip to main content

개요

Streaming은 출력을 점진적으로 전달합니다. 모델이 네이티브 Responses 계약을 공개하고 동일 프로토콜 upstream 경로가 있을 때 Responses streaming을 사용하세요. 그 외에는 Chat Completions 또는 모델이 공개한 네이티브 프로토콜을 사용합니다.

권장: Responses Streaming

Responses 및 Gemini streaming 경계

Responses SSE에서는 upstream 이벤트 이름, 순서, 필드를 보존하고 wire를 바꾸지 않은 채 usage와 종료 상태를 out-of-band로 읽습니다. 첫 이벤트 전달 후에는 다른 channel이나 credential을 시도하지 않습니다. Responses WebSocket은 공식 response.create 이벤트만 받습니다. stream은 암시적이며 이 transport에서는 backgroundresponse.cancel을 제공하지 않습니다. background는 HTTP에서만 동작합니다. 연결은 직렬이며 multiplexing하지 않고 최대 60분입니다. Gemini SSE는 네이티브 chunk를 보존합니다. metadata-only 이벤트, finishReason 없는 중간 chunk, 자연스러운 EOF가 유효하며 Chat [DONE]을 추가하지 않습니다.

Chat Completions 스트리밍

프레임워크가 여전히 /v1/chat/completions의 SSE 청크를 기대하는 경우에도 동작합니다:

스트림 종료 조건

일반적인 완료 조건:
  • Responses API 스트림의 경우 response.completed
  • Chat Completions 스트림의 경우 finish_reason: "stop"
  • token 제한에 도달했을 때 finish_reason: "length"
  • 모델이 도구를 사용하려고 할 때의 tool/function call 이벤트

웹 앱 패턴

모범 사례

SDK 또는 앱이 이미 이를 지원한다면 /v1/responses를 사용하세요. 호환성이 중요한 통합에는 /v1/chat/completions 스트리밍을 유지하세요.
전체 응답을 기다리기보다 delta 청크가 도착하는 대로 UI 또는 터미널에 추가하세요.
네트워크 끊김과 업스트림 연결 해제를 일반적인 실패 모드로 간주하고, 장시간 실행되는 세션에서는 신중하게 재연결하세요.