GetAPI.ONE
GetAPI.ONE Responses 스트리밍
서버 전송 이벤트 스트림을 소비하고 텍스트 델타만 추가하며 completed, failed, incomplete를 서로 다른 종료 결과로 취급합니다.
호환 경로 선택
- Responses 엔드포인트를 명시하는 현재 카탈로그 모델을 사용하세요.
- API 키를 신뢰할 수 있는 서버 또는 로컬 프로세스에 보관하세요.
- 호출자가 부분 텍스트를 표시하고 중단된 스트림을 복구하는 방법을 정하세요.
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY이벤트 생명주기 이해
- 첫 통제된 요청에는 자동 재시도를 끄고 서버 SDK 또는 HTTP 클라이언트로 stream=true를 보내세요.
- 화면 텍스트에 response.output_text.delta 페이로드만 추가하세요.
- response.completed에서 멈추고 애플리케이션에 필요한 최종 응답 메타데이터를 보관하세요.
- response.failed와 response.incomplete를 성공이 아닌 결과로 표시하고 부분 텍스트를 완료로 표시하지 마세요.
- 오류 이벤트, 전송 예외, 완료 전 EOF, 로컬 취소를 성공이 아닌 것으로 취급하고 스트림을 닫으세요.
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.delta | event.delta를 추가하고 이미 표시한 텍스트를 바꾸지 마세요. |
| response.completed | 성공을 표시하고 로딩을 종료하세요. |
| response.failed | 구조화된 오류와 안전한 재시도 작업을 표시하세요. |
| response.incomplete | 부분 출력을 미완료로 표시하고 미완료 상세를 확인하세요. |
예상 결과 확인
- 델타 중복 없이 텍스트가 점진적으로 나타납니다.
- 종료 이벤트 또는 전송 오류 이후에만 로딩이 끝납니다.
- 연결이 중단되어도 거짓 성공 상태를 표시하지 않습니다.
전송 및 프로토콜 오류 처리
- 이벤트가 오지 않으면 정확한 /v1/responses 경로, stream=true, 프록시 버퍼링, 모델의 엔드포인트 명시를 확인하세요.
- 출력이 반복되면 각 델타를 한 번만 추가하고 SDK 누적 출력과 원시 이벤트를 합치지 마세요.
- 보이는 부작용이 발생하기 전이나 애플리케이션 수준 멱등성이 있을 때만 재시도하세요. 연결 종료는 업스트림 요청이 아무것도 하지 않았다는 증거가 아닙니다.
스트리밍을 서버에 유지
Browser → your authenticated backend → GetAPI.ONE
server-held key only