For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
기본 탐색 메뉴
Theme

API 응답 스트리밍

서버 전송 이벤트를 사용해 OpenAI API에서 모델 응답을 스트리밍하는 방법을 알아보세요.

기본적으로 OpenAI API에 요청을 보내면 모델이 출력을 모두 생성한 후 API가 단일 HTTP 응답으로 결과를 반환합니다. 출력이 길면 응답을 받기까지 시간이 걸릴 수 있습니다. 응답을 스트리밍하면 모델이 응답을 계속 생성하는 동안 먼저 도착한 부분부터 표시하거나 처리할 수 있습니다.

이 가이드에서는 서버 전송 이벤트(SSE)를 사용하는 HTTP 스트리밍(stream=true)을 다룹니다. WebSocket 연결을 유지하면서 previous_response_id로 입력을 점진적으로 추가하는 방법은 Responses API의 WebSocket 모드를 참고하세요.

스트리밍 활성화

응답 스트리밍을 시작하려면 Responses 엔드포인트에 보내는 요청에 stream=True를 설정하세요.

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": "Say 'double bubble bath' ten times fast.",
        },
    ],
    stream=True,
)

for event in stream:
    print(event)

Responses API는 스트리밍에 시맨틱 이벤트를 사용합니다. 각 이벤트의 타입은 미리 정의된 스키마를 따르므로 필요한 이벤트만 골라 수신할 수 있습니다.

전체 이벤트 타입 목록은 스트리밍 API 레퍼런스를 참고하세요. 다음은 몇 가지 예시입니다.

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  } else if (event.type === "response.completed") {
    console.log("\nResponse completed.");
  } else if (event.type === "error") {
    console.error(event.message);
  }
}

응답 읽기

OpenAI SDK를 사용하면 각 이벤트를 해당 타입의 인스턴스로 받습니다. 이벤트의 type 속성으로도 개별 이벤트를 구분할 수 있습니다.

응답 수명 주기의 주요 이벤트 중에는 한 번만 발생하는 이벤트도 있고, 응답을 생성하는 동안 여러 번 발생하는 이벤트도 있습니다. 텍스트를 스트리밍할 때 주로 수신하는 이벤트는 다음과 같습니다.

- `response.created`
- `response.output_text.delta`
- `response.completed`
- `error`

수신할 수 있는 전체 이벤트 목록은 스트리밍 API 레퍼런스를 참고하세요.

고급 활용 사례

도구 호출 스트리밍과 같은 고급 활용 사례는 다음 가이드를 참고하세요.

콘텐츠 검토 시 주의 사항

프로덕션 애플리케이션에서 모델 출력을 스트리밍하면 응답 내용을 검토하기가 더 어렵습니다. 아직 완성되지 않은 응답은 평가하기 어려울 수 있기 때문입니다. 이는 애플리케이션의 사용 방식이 승인된 범위에 해당하는지에도 영향을 줄 수 있습니다.

생성 요청과 함께 콘텐츠 검토 점수를 요청하면 전체 출력이 생성된 후에 점수가 전달됩니다. 스트리밍 중에 전달되는 개별 출력 델타에는 점수가 포함되지 않습니다.