Claude Platform Docs
Messages도구

도구 호출 처리하기

tool_use 블록을 파싱하고, tool_result 응답을 포맷하며, is_error로 오류를 처리합니다.

이 페이지는 도구 호출 수명 주기를 다룹니다. Claude의 응답에서 tool_use 블록을 읽고, 회신에서 tool_result 블록을 포맷하며, 오류를 알리는 방법을 설명합니다. 이를 자동으로 처리하는 SDK 추상화에 대해서는 Tool Runner를 참조하세요.

Claude의 응답은 클라이언트 도구 또는 서버 도구 중 어느 것을 사용하는지에 따라 달라집니다.

클라이언트 도구의 결과 처리하기

응답은 tool_usestop_reason과 다음을 포함하는 하나 이상의 tool_use 콘텐츠 블록을 갖습니다.

  • id: 이 특정 도구 사용 블록의 고유 식별자입니다. 나중에 도구 결과를 매칭하는 데 사용됩니다.
  • name: 사용 중인 도구의 이름입니다.
  • input: 도구의 input_schema를 따르며 도구에 전달되는 입력을 담고 있는 객체입니다.

컴퓨터 사용 또는 브라우저 사용 도구 세트의 멤버에 대한 tool_use 블록은 toolset_name 필드("computer" 또는 "browser")도 함께 전달합니다. 이 블록의 namescreenshot이나 navigate처럼 Claude가 호출하는 멤버 도구이므로, 이러한 블록은 두 필드 모두를 기준으로 디스패치하세요.

클라이언트 도구에 대한 도구 사용 응답을 받으면 다음을 수행해야 합니다.

  1. tool_use 블록에서 name, id, input을 추출합니다.
  2. 해당 도구 이름에 대응하는 코드베이스의 실제 도구를 실행하고, 도구 input을 전달합니다.
  3. roleuser이고, tool_result 타입과 다음 정보를 담은 content 블록이 포함된 새 메시지를 보내 대화를 계속합니다.
    • tool_use_id: 이 결과가 대응하는 도구 사용 요청의 id입니다.
    • content (선택 사항): 도구의 결과로, 문자열(예: "content": "15 degrees"), 중첩된 콘텐츠 블록 목록(예: "content": [{"type": "text", "text": "15 degrees"}]), 또는 문서 블록 목록(예: "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}])일 수 있습니다. 이러한 콘텐츠 블록은 text, image, document 또는 search_result 타입을 사용할 수 있습니다.
    • is_error (선택 사항): 도구 실행 결과 오류가 발생한 경우 true로 설정합니다.

컴퓨터 사용 또는 브라우저 사용 멤버 블록에 응답하는 tool_resulttool_use 블록과 동일한 toolset_name 값도 그대로 반환해야 합니다. 이를 생략한 멤버 결과는 거부됩니다. content도 더 제한적입니다. 멤버 결과는 textimage 블록만 포함할 수 있으며, 브라우저 사용 결과는 browser_state 블록 하나를 추가할 수 있습니다(탭 관리 멤버는 해당 블록만 반환합니다).

도구 결과를 받은 후, Claude는 해당 정보를 사용하여 원래 사용자 프롬프트에 대한 응답 생성을 계속합니다.

서버 도구의 결과 처리하기

Claude는 도구를 내부적으로 실행하고 추가적인 사용자 상호작용 없이 결과를 응답에 직접 통합합니다.

is_error로 오류 처리하기

Claude와 함께 도구를 사용할 때 발생할 수 있는 오류에는 몇 가지 유형이 있습니다.

다음 단계

Claude가 한 턴에 여러 도구를 호출하는 응답을 처리합니다.

SDK가 tool_use 루프, 결과 포맷, 재시도를 대신 관리하도록 합니다.

Claude를 올바른 도구로 이끄는 스키마와 설명을 작성합니다.

Was this page helpful?