본문으로 건너뛰기
GetAPI
한국어
메뉴

GetAPI.ONE

GetAPI.ONE Responses 스트리밍

서버 전송 이벤트 스트림을 소비하고 텍스트 델타만 추가하며 completed, failed, incomplete를 서로 다른 종료 결과로 취급합니다.

호환 경로 선택

  • Responses 엔드포인트를 명시하는 현재 카탈로그 모델을 사용하세요.
  • API 키를 신뢰할 수 있는 서버 또는 로컬 프로세스에 보관하세요.
  • 호출자가 부분 텍스트를 표시하고 중단된 스트림을 복구하는 방법을 정하세요.
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

이벤트 생명주기 이해

  1. 첫 통제된 요청에는 자동 재시도를 끄고 서버 SDK 또는 HTTP 클라이언트로 stream=true를 보내세요.
  2. 화면 텍스트에 response.output_text.delta 페이로드만 추가하세요.
  3. response.completed에서 멈추고 애플리케이션에 필요한 최종 응답 메타데이터를 보관하세요.
  4. response.failed와 response.incomplete를 성공이 아닌 결과로 표시하고 부분 텍스트를 완료로 표시하지 마세요.
  5. 오류 이벤트, 전송 예외, 완료 전 EOF, 로컬 취소를 성공이 아닌 것으로 취급하고 스트림을 닫으세요.
python
import os
from openai import OpenAI

terminal_event = None
try:
    with OpenAI(
        api_key=os.environ["GETAPI_ONE_API_KEY"],
        base_url="https://www.getapi.one/v1",
        timeout=30.0,
        max_retries=0,
    ) as client:
        with client.responses.create(
            model="<RESPONSES_MODEL_ID_FROM_CURRENT_CATALOG>",
            input="Give three concise deployment checks.",
            stream=True,
        ) as stream:
            for event in stream:
                if event.type == "response.output_text.delta":
                    print(event.delta, end="", flush=True)
                elif event.type == "response.completed":
                    terminal_event = event.type
                    print("\ncompleted")
                    break
                elif event.type in {"response.failed", "response.incomplete", "error"}:
                    terminal_event = event.type
                    raise RuntimeError(f"stream ended with {event.type}: {event}")
except KeyboardInterrupt:
    raise SystemExit("cancelled locally; the stream and client were closed")

if terminal_event != "response.completed":
    raise RuntimeError("stream ended before response.completed")

이벤트와 화면 상태 연결

이벤트애플리케이션 작업
response.output_text.deltaevent.delta를 추가하고 이미 표시한 텍스트를 바꾸지 마세요.
response.completed성공을 표시하고 로딩을 종료하세요.
response.failed구조화된 오류와 안전한 재시도 작업을 표시하세요.
response.incomplete부분 출력을 미완료로 표시하고 미완료 상세를 확인하세요.

예상 결과 확인

  • 델타 중복 없이 텍스트가 점진적으로 나타납니다.
  • 종료 이벤트 또는 전송 오류 이후에만 로딩이 끝납니다.
  • 연결이 중단되어도 거짓 성공 상태를 표시하지 않습니다.

전송 및 프로토콜 오류 처리

  • 이벤트가 오지 않으면 정확한 /v1/responses 경로, stream=true, 프록시 버퍼링, 모델의 엔드포인트 명시를 확인하세요.
  • 출력이 반복되면 각 델타를 한 번만 추가하고 SDK 누적 출력과 원시 이벤트를 합치지 마세요.
  • 보이는 부작용이 발생하기 전이나 애플리케이션 수준 멱등성이 있을 때만 재시도하세요. 연결 종료는 업스트림 요청이 아무것도 하지 않았다는 증거가 아닙니다.

스트리밍을 서버에 유지

text
Browser → your authenticated backend → GetAPI.ONE
                 server-held key only

다음 단계