"stream": true를 설정하여 서버 전송 이벤트 (SSE)를 사용해 응답을 점진적으로 스트리밍할 수 있습니다.
SDK로 스트리밍하기
우리의 Python 및 TypeScript SDK는 여러 가지 스트리밍 방법을 제공합니다. Python SDK는 동기 및 비동기 스트림을 모두 지원합니다. 자세한 내용은 각 SDK의 문서를 참조하세요.이벤트 유형
각 서버 전송 이벤트는 명명된 이벤트 유형과 관련 JSON 데이터를 포함합니다. 각 이벤트는 SSE 이벤트 이름(예:event: message_stop)을 사용하고, 데이터에 일치하는 이벤트 type을 포함합니다.
각 스트림은 다음 이벤트 흐름을 사용합니다:
message_start: 빈content가 있는Message객체를 포함합니다.- 일련의 콘텐츠 블록, 각각은
content_block_start, 하나 이상의content_block_delta이벤트, 그리고content_block_stop이벤트를 가집니다. 각 콘텐츠 블록은 최종 Messagecontent배열의 인덱스에 해당하는index를 가집니다. - 하나 이상의
message_delta이벤트, 최종Message객체의 최상위 변경사항을 나타냅니다. - 최종
message_stop이벤트.
message_delta 이벤트의 usage 필드에 표시된 토큰 수는 누적입니다.Ping 이벤트
이벤트 스트림에는 임의의 수의ping 이벤트가 포함될 수도 있습니다.
오류 이벤트
이벤트 스트림에서 때때로 오류를 보낼 수 있습니다. 예를 들어, 높은 사용량 기간 동안overloaded_error를 받을 수 있으며, 이는 일반적으로 비스트리밍 컨텍스트에서 HTTP 529에 해당합니다:
Example error
기타 이벤트
우리의 버전 관리 정책에 따라 새로운 이벤트 유형을 추가할 수 있으며, 코드는 알 수 없는 이벤트 유형을 우아하게 처리해야 합니다.콘텐츠 블록 델타 유형
각content_block_delta 이벤트는 주어진 index에서 content 블록을 업데이트하는 유형의 delta를 포함합니다.
텍스트 델타
text 콘텐츠 블록 델타는 다음과 같습니다:
Text delta
입력 JSON 델타
tool_use 콘텐츠 블록의 델타는 블록의 input 필드에 대한 업데이트에 해당합니다. 최대 세분성을 지원하기 위해 델타는 _부분 JSON 문자열_이며, 최종 tool_use.input은 항상 _객체_입니다.
문자열 델타를 누적하고 content_block_stop 이벤트를 받으면 JSON을 파싱할 수 있습니다. Pydantic과 같은 라이브러리를 사용하여 부분 JSON 파싱을 하거나, 파싱된 증분 값에 액세스할 수 있는 도우미를 제공하는 우리의 SDK를 사용할 수 있습니다.
tool_use 콘텐츠 블록 델타는 다음과 같습니다:
Input JSON delta
input에서 하나의 완전한 키와 값 속성만 방출하는 것을 지원합니다. 따라서 도구를 사용할 때 모델이 작업하는 동안 스트리밍 이벤트 사이에 지연이 있을 수 있습니다. input 키와 값이 누적되면 형식이 향후 모델에서 더 세밀한 세분성을 자동으로 지원할 수 있도록 청크된 부분 json으로 여러 content_block_delta 이벤트로 방출합니다.
사고 델타
스트리밍이 활성화된 확장 사고를 사용할 때,thinking_delta 이벤트를 통해 사고 콘텐츠를 받게 됩니다. 이러한 델타는 thinking 콘텐츠 블록의 thinking 필드에 해당합니다.
사고 콘텐츠의 경우, 특별한 signature_delta 이벤트가 content_block_stop 이벤트 직전에 전송됩니다. 이 서명은 사고 블록의 무결성을 확인하는 데 사용됩니다.
일반적인 사고 델타는 다음과 같습니다:
Thinking delta
Signature delta
전체 HTTP 스트림 응답
스트리밍 모드를 사용할 때는 우리의 클라이언트 SDK를 사용하는 것을 강력히 권장합니다. 그러나 직접 API 통합을 구축하는 경우 이러한 이벤트를 직접 처리해야 합니다. 스트림 응답은 다음으로 구성됩니다:message_start이벤트- 잠재적으로 여러 콘텐츠 블록, 각각은 다음을 포함합니다:
content_block_start이벤트- 잠재적으로 여러
content_block_delta이벤트 content_block_stop이벤트
message_delta이벤트message_stop이벤트
ping 이벤트가 분산될 수도 있습니다. 형식에 대한 자세한 내용은 이벤트 유형을 참조하세요.
기본 스트리밍 요청
Response
도구 사용이 포함된 스트리밍 요청
도구 사용은 이제 베타 기능으로 매개변수 값에 대한 세밀한 스트리밍을 지원합니다. 자세한 내용은 세밀한 도구 스트리밍을 참조하세요.
Response
확장 사고가 포함된 스트리밍 요청
이 요청에서는 스트리밍과 함께 확장 사고를 활성화하여 Claude의 단계별 추론을 확인합니다.Response
웹 검색 도구 사용이 포함된 스트리밍 요청
이 요청에서는 Claude에게 현재 날씨 정보를 웹에서 검색하도록 요청합니다.Response
오류 복구
네트워크 문제, 시간 초과 또는 기타 오류로 인해 스트리밍 요청이 중단된 경우, 스트림이 중단된 지점부터 재개하여 복구할 수 있습니다. 이 접근 방식을 사용하면 전체 응답을 다시 처리할 필요가 없습니다. 기본 복구 전략은 다음과 같습니다:- 부분 응답 캡처: 오류가 발생하기 전에 성공적으로 받은 모든 콘텐츠를 저장합니다
- 연속 요청 구성: 부분 어시스턴트 응답을 새 어시스턴트 메시지의 시작으로 포함하는 새 API 요청을 생성합니다
- 스트리밍 재개: 중단된 지점부터 응답의 나머지 부분을 계속 받습니다
오류 복구 모범 사례
- SDK 기능 사용: SDK의 내장 메시지 누적 및 오류 처리 기능을 활용합니다
- 콘텐츠 유형 처리: 메시지에 여러 콘텐츠 블록(
text,tool_use,thinking)이 포함될 수 있음을 인식합니다. 도구 사용 및 확장 사고 블록은 부분적으로 복구할 수 없습니다. 가장 최근의 텍스트 블록부터 스트리밍을 재개할 수 있습니다.