Claude가 도구 호출을 요청한 후에는 함수를 실행하고 결과를 다시 전송해야 합니다. 이는 Claude에게 요청한 정보를 제공함으로써 도구 사용 워크플로우를 완료합니다.
도구 함수 실행하기
Claude가 도구 사용 블록으로 응답하면, 입력 매개변수를 추출하여 함수를 호출합니다. 도구 매개변수에 접근하는 방법은 다음과 같습니다:
이는 Claude가 함수에 전달하려는 인자들의 딕셔너리를 제공합니다. 함수가 딕셔너리가 아닌 키워드 인자를 기대하므로, Python의 언패킹 구문을 사용합니다:

도구 결과 블록
도구 함수를 실행한 후에는 도구 결과 블록을 사용하여 결과를 Claude에게 다시 전송해야 합니다. 이 블록은 사용자 메시지 내부에 들어가며 도구를 실행했을 때 무슨 일이 일어났는지 Claude에게 알려줍니다.

도구 결과 블록에는 몇 가지 중요한 속성이 있습니다:
- tool_use_id - 이 ToolResult가 대응하는 ToolUse 블록의 id와 일치해야 합니다
- content - 도구를 실행한 결과 출력으로, 문자열로 직렬화됩니다
- is_error - 오류가 발생한 경우 True입니다
여러 도구 호출 처리하기
Claude는 단일 응답에서 여러 도구 호출을 요청할 수 있습니다. 예를 들어, 사용자가 "10 + 10은 얼마이고 30 + 30은 얼마인가요?"라고 묻는다면, Claude는 두 개의 별도 ToolUse 블록으로 응답할 수 있습니다.

각 도구 호출은 고유한 ID를 가지며, 결과를 다시 전송할 때 이 ID들을 일치시켜야 합니다. 이는 결과가 다른 순서로 도착하더라도 Claude가 어떤 결과가 어떤 요청에 대응하는지 알 수 있도록 보장합니다.

후속 요청 구성하기
Claude에 대한 후속 요청에는 전체 대화 기록과 새로운 도구 결과가 포함되어야 합니다. 구조는 다음과 같습니다:
이제 전체 메시지 기록에는 다음이 포함됩니다:
- 원본 사용자 메시지
- 도구 사용 블록이 포함된 어시스턴트 메시지
- 도구 결과 블록이 포함된 사용자 메시지
최종 요청 보내기
후속 요청을 전송할 때는 Claude가 또 다른 도구 호출을 하기를 기대하지 않더라도 도구 스키마를 여전히 포함해야 합니다. Claude는 대화 기록에 있는 도구 참조를 이해하기 위해 스키마가 필요합니다.

그러면 Claude는 도구 결과를 사용자를 위한 자연스러운 응답으로 통합한 최종 메시지로 응답합니다. 이제 도구 사용 워크플로우가 완료되었습니다 - 사용자 지정 함수를 통해 Claude가 실시간 정보에 접근할 수 있도록 성공적으로 구현했습니다.