Skip to content

Tool Calling (도구 호출)

LLM은 기본적으로 생각하고 말만 하는 존재예요. 질문에 답하고, 텍스트를 만들어내지, 실제로 무언가를 실행하지는 못합니다. 그런데 캔버스가 다이어그램을 그리거나, 뉴런이 실제 행동으로 이어지려면 코드를 실행하고 결과를 받아와야 하죠.

Tool Calling(도구 호출)은 바로 그 연결고리입니다. 모델이 "여기서는 이 도구를 불러야겠다"고 판단하면, 그 도구를 실행할 요청을 우리 코드에 전달하고, 그 실행 결과를 다시 모델이 받아 다음 응답에 반영합니다. 에이전트가 말로 끝나지 않고 실제 행동으로 이어지는 핵심 장치예요.


핵심 개념

함수 호출 (Function Calling)

모델이 외부 함수를 호출하는 기능입니다. 모델은 함수를 직접 실행하지 않아요. 실행할 함수와 그 인자를 결정해 반환하고, 우리 코드가 실제 함수를 실행한 뒤 결과를 모델에게 돌려줍니다. 모델은 그 결과를 보고 응답을 이어갑니다. 즉 모델은 "결정"만 하고, 실제 실행은 우리 코드가 담당하는 분업 구조예요.

도구 스키마 (Tool Schema)

모델이 "어떤 도구가 있고, 어떤 인자를 받는지" 알아야 호출을 정확히 하겠죠. 이를 위해 도구의 이름·설명·매개변수 형태를 JSON 스키마로 정의해 모델에게 전달합니다. 예를 들어 moveElement(x, y) 같은 도구의 인자 형식을 스키마로 미리 알려주는 겁니다.

AI SDK에서의 도구

Vercel AI SDK는 도구 호출을 공통으로 다뤄서, 벤더별(Claude·OpenAI·Gemini) 도구 사용 방식 차이를 숨겨줍니다. 우리는 같은 도구 정의를 여러 모델에 그대로 쓸 수 있어요.

도구 호출이 익숙해지면 "모델이 어떤 일을 실행할지"를 프롬프트 대신 도구 정의로 옮길 수 있어요. 말로 지시하는 것보다 구조화된 스키마로 알려주면 모델이 더 정확히 실행 대상을 고릅니다.


사용 사례 / 실제 적용

  • 캔버스 다이어그램 요소 배치 — 사용자가 설명하면 모델이 "어떤 요소를 어디에 놓을지"를 도구 호출로 결정해서, 실제 캔버스에 반영합니다.
  • 뉴런 (자율 에이전트) 행동 — 상황을 판단한 뒤, 그 다음 행동을 도구 호출로 실행합니다. Tool Calling이 에이전트의 실제 행동 경로예요.
  • 데이터 조회·가공 — 모델이 필요한 데이터를 가져오거나 가공하는 함수를 호출해, 답변을 추측이 아니라 실제 값에 근거하게 합니다.

하위 챕터


더 알아보기