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— 새 텍스트 fragmentresponse.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 이 필요 없어.