Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

이제 도구 사용 워크플로우의 마지막 단계에 도달했습니다. 도구를 실행하고 결과를 얻은 후, Claude가 사용자에게 완전한 응답을 제공할 수 있도록 모든 것을 다시 Claude에게 보내야 합니다.

이 과정은 간단합니다: 생성한 모든 도구 결과 부분을 가져와서 사용자 메시지로 패키징하고, 전체 대화 기록을 원래의 도구 스키마와 함께 Claude에게 다시 보냅니다.

어시스턴트 메시지 추가하기

먼저, 대화 기록이 완전한지 확인해야 합니다. 도구 사용 요청이 포함된 Claude의 초기 응답 이후, add_assistant_message()를 사용하여 해당 응답을 메시지 기록에 추가해야 합니다.

이렇게 하면 완전한 대화 흐름을 확보할 수 있습니다: 사용자 질문 → 어시스턴트 도구 요청 → 도구 결과 → 최종 어시스턴트 응답.

도구 실행 및 도구 결과 생성하기

run_tools() 함수는 Claude의 응답에서 모든 도구 사용 요청을 처리하고 올바르게 형식화된 도구 결과 부분을 생성합니다. 각 도구 결과에는 다음이 포함됩니다:

  • 도구 사용 ID(원래 요청과 일치)
  • 도구 실행에서 나온 실제 출력
  • 성공 또는 오류를 나타내는 상태

이 함수는 성공적인 도구 실행과 오류를 모두 원활하게 처리하며, 모든 것을 Claude가 예상하는 올바른 JSON 구조로 감쌉니다.

대화에 도구 결과 추가하기

도구 결과를 얻으면, add_user_message()를 사용하여 대화에 추가합니다:

python
add_user_message(messages, run_tools(parts))

이렇게 하면 모든 도구 결과 부분을 포함하는 사용자 메시지가 생성됩니다. 이제 대화에는 Claude가 최종 응답을 제공하는 데 필요한 완전한 주고받기가 포함됩니다.

Claude에 대한 최종 호출

마지막 단계는 모든 것을 다시 Claude에게 보내는 것입니다. 이를 위해서는 두 가지 중요한 요소가 필요합니다:

  • 완전한 메시지 기록(사용자 → 어시스턴트 → 사용자)
  • 원래의 도구 스키마
python
text, parts = chat(messages, tools=[get_current_datetime_schema])

도구 스키마를 포함하는 것이 매우 중요합니다. 이것이 없으면 Claude는 대화 기록에 있는 도구 참조에 대해 혼란스러워하고 get_current_datetime이 실제로 무엇을 하는지 이해하지 못할 것입니다.

성공

모든 것이 올바르게 작동하면, Claude는 도구 결과를 받아 완전하고 정보에 기반한 응답을 제공할 수 있습니다. 우리의 예시에서 Claude는 현재 시간을 성공적으로 가져와 자연스러운 응답으로 형식화했습니다: "현재 날짜와 시간은 2025-04-03, 12:54:00입니다."

이는 우리의 도구 통합이 제대로 작동하고 있음을 보여줍니다. Claude는 현재 날짜를 알고 있지만, 정확한 현재 시간과 같은 실시간 정보에는 접근할 수 없습니다 - 이것이 바로 우리의 도구가 제공한 것입니다.

이제 완전한 도구 사용 사이클이 작동하고 있습니다: Claude가 도구를 요청하고, 우리가 이를 실행하고, 결과를 반환하며, Claude가 그 정보를 사용자에 대한 최종 응답에 통합합니다.