중단 이유 처리하기
Messages API에 요청을 보낼 때, Claude의 응답에는 모델이 응답 생성을 중단한 이유를 나타내는 stop_reason
필드가 포함됩니다. 이러한 값들을 이해하는 것은 다양한 응답 유형을 적절하게 처리하는 견고한 애플리케이션을 구축하는 데 매우 중요합니다.
API 응답의 stop_reason
에 대한 자세한 내용은 Messages API 참조를 참조하세요.
stop_reason이란 무엇인가요?
stop_reason
필드는 모든 성공적인 Messages API 응답의 일부입니다. 요청 처리 실패를 나타내는 오류와 달리, stop_reason
은 Claude가 응답 생성을 성공적으로 완료한 이유를 알려줍니다.
중단 이유 값
end_turn
가장 일반적인 중단 이유입니다. Claude가 자연스럽게 응답을 완료했음을 나타냅니다.
max_tokens
Claude가 요청에 지정된 max_tokens
제한에 도달했기 때문에 중단되었습니다.
stop_sequence
Claude가 사용자 지정 중단 시퀀스 중 하나를 만났습니다.
tool_use
Claude가 도구를 호출하고 있으며 사용자가 이를 실행하기를 기대합니다.
pause_turn
Claude가 장시간 실행 작업을 일시 중지해야 할 때 웹 검색과 같은 서버 도구와 함께 사용됩니다.
중단 이유 처리를 위한 모범 사례
1. 항상 stop_reason 확인하기
응답 처리 로직에서 stop_reason
을 확인하는 습관을 들이세요:
2. max_tokens를 우아하게 처리하기
토큰 제한으로 인해 응답이 잘렸을 때:
3. pause_turn을 위한 재시도 로직 구현하기
일시 중지할 수 있는 서버 도구의 경우:
중단 이유 vs. 오류
stop_reason
값과 실제 오류를 구분하는 것이 중요합니다:
중단 이유 (성공적인 응답)
- 응답 본문의 일부
- 생성이 정상적으로 중단된 이유 표시
- 응답에 유효한 콘텐츠 포함
오류 (실패한 요청)
- HTTP 상태 코드 4xx 또는 5xx
- 요청 처리 실패 표시
- 응답에 오류 세부 정보 포함
스트리밍 고려사항
스트리밍을 사용할 때 stop_reason
은:
- 초기
message_start
이벤트에서null
message_delta
이벤트에서 제공됨- 다른 모든 이벤트에서 null이 아님
일반적인 패턴
도구 사용 워크플로우 처리하기
완전한 응답 보장하기
stop_reason
값을 적절히 처리함으로써, 다양한 응답 시나리오를 우아하게 처리하고 더 나은 사용자 경험을 제공하는 더 견고한 애플리케이션을 구축할 수 있습니다.