C.W.K.
Stream
Lesson 03 of 06 · published

Responses API Streaming — typed semantic events

~22 min · streaming, responses-api, semantic-events

Level 0Tokenizer
0 XP0/54 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Chat Completions 가 raw delta 를 주고 의미 조립을 dev 에 맡긴다면, Responses 는 typed semantic event 를 줘. response.output_text.delta, response.output_text.done, response.tool_call.created, response.error — type 으로 filter, type 위에서 build.

왜 typed 가 더 나아

Untyped delta 는 'concat 해서 의미 만들어' 가 dev 의 일. Typed event 는 'text delta 인지, tool 시작인지, error 인지' 가 wire 에서 명시. 같은 코드가 더 짧고 더 robust.

Event 의 종류 (대표적)

  • response.created — response 시작
  • response.output_text.delta — 새 텍스트 fragment
  • response.output_text.done — 텍스트 완료
  • response.tool_call.created / ...arguments.delta — tool 호출 흐름
  • response.error — 실패
  • response.completed — 전체 종료

Filtering 패턴

async for event in stream: if event.type.endswith('.delta'): ... — type prefix/suffix 로 grouping. Untyped delta 의 'concat 한 후 정규식' 같은 hack 이 필요 없어.

Code

for event in stream — typed events·python
stream = client.responses.create(
    model="gpt-5.4",
    input="Write a poem about the ocean.",
    stream=True,
)

for event in stream:
    match event.type:
        case "response.output_text.delta":
            print(event.delta, end="", flush=True)
        case "response.function_call_arguments.delta":
            print(f"[tool args: {event.delta}]")
        case "response.completed":
            print(f"\\n\\nDone. Tokens: {event.response.usage.total_tokens}")
        case "error":
            print(f"Error: {event.message}")

External links

Exercise

EventLogger 만들어 — 모든 semantic event 를 4-color terminal 로 print: text delta 녹색, tool event 청록, error 빨강, done dim white. Tool 사용하는 복잡한 prompt 한 번 끝까지 follow.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.