스트리밍 및 비스트리밍 응답
본 페이지는 Claude 네이티브 호출(/v1/messages)의 응답 처리를 설명하며, 연동 방법은
Claude 네이티브 호출 기초를 참조하세요.
비스트리밍 응답
{ "id": "msg_xxx", "type": "message", "role": "assistant", "content": [{ "type": "text", "text": "……" }], "stop_reason": "end_turn", "usage": { "input_tokens": 24, "output_tokens": 180 }}- 본문은
content배열 안에 블록(text / tool_use / thinking) 단위로 구성되며, 블록별로 순회한 후 이어 붙입니다; stop_reason:end_turn정상 종료,max_tokens잘림,tool_use도구 호출 요청.
스트리밍 응답(SSE)
요청에 "stream": true를 추가하면 이벤트가 유형별로 전송됩니다:
| 이벤트 | 의미 |
|---|---|
message_start | 세션 시작, 입력 토큰 수 포함 |
content_block_start | 콘텐츠 블록 시작(text/tool_use/thinking) |
content_block_delta | 본문 증분, delta.text를 이어 붙이면 됩니다 |
content_block_stop | 현재 콘텐츠 블록 종료 |
message_delta | 후미 메타데이터(stop_reason, 출력 토큰 수) |
message_stop | 전체 종료 |
with client.messages.stream( model="claude-sonnet-5", max_tokens=1024, messages=[{"role": "user", "content": "写一首关于大海的短诗"}],) as stream: for text in stream.text_stream: print(text, end="", flush=True)주의사항
- 공식 Anthropic SDK를 사용할 경우 이러한 이벤트는 이미 캡슐화되어 있으며, SSE를 직접 작성할 때만 이벤트별로 처리해야 합니다;
- 토큰 사용량은
message_start(입력) +message_delta(출력) 기준이며, 청구 내역과 일치합니다; - 사고 모드의
thinking블록 파싱은 사고 모드를 참조하세요.