welclaiAI·TREND·DIGEST
도구

함수 호출과 도구: 모델을 행동에 연결하기

함수 호출은 모델이 당신의 코드를 직접 실행하지 않으면서도 그것을 쓰기로 결정하게 합니다. 실제로 무슨 일이 일어나는지, 어디서 어긋나는지 짚어봅니다.

tools2026-05-12 12:05 KST·편집장·7

언어 모델은 그 자체로는 텍스트만 만들어낼 수 있습니다. 오늘의 날씨를 찾아보거나, 데이터베이스를 질의하거나, 이메일을 보내거나, 산술을 안정적으로 하지 못합니다. 함수 호출 — 도구 사용이라고도 합니다 — 은 그 간극을 잇는 메커니즘으로, 모델이 텍스트를 넘어 실제 행동과 실시간 데이터에 닿게 합니다. 거의 모든 AI 에이전트의 토대이며, 그저 말만 하는 것이 아니라 무언가를 하는 애플리케이션을 만드는 데 가장 중요한 단 하나의 역량입니다. 그런데 그 작동 방식은 사람들을 놀라게 합니다. 모델이 당신의 코드를 실제로 실행하는 일은 결코 없기 때문입니다. 이 글은 실제로 무슨 일이 일어나는지, 그리고 어디서 어긋나는지 짚어 갑니다.

함수 호출이 메우는 간극

언어 모델은 본질적으로 텍스트 생성기입니다. 그래서 언어에는 탁월하지만 현재 정보나 현실 세계의 효과가 필요한 모든 것에는 불안정합니다. 날씨를 물으면 어떤 온도계와도 연결되지 않은, 그럴듯하게 들리는 텍스트를 만들어냅니다. 정밀한 산술을 시키면 추측할 수 있습니다. 고객의 주문을 가져오라 하면 들여다볼 방법이 없습니다.

함수 호출은 모델에게 도구 — 당신이 정의하고 통제하는 함수 — 에 대한 접근을 줌으로써 이를 해결합니다. 그 도구는 실제로 그런 일을 할 수 있습니다. API를 호출하고, 계산을 돌리고, 데이터베이스를 질의하고, 행동을 촉발하죠. 모델의 일은 언제 도구가 필요한지 그리고 어떤 입력으로 필요한지를 결정하는 것입니다. 당신 코드의 일은 그것을 실제로 실행하는 것입니다. 그 역할 분담이 전부의 핵심이며, 이를 바로잡는 것이 뒤따르는 모든 것을 이해하는 열쇠입니다.

실제로 무슨 일이 일어나는가 (사람들을 놀라게 하는 부분)

가장 흔한 오해는 모델이 함수를 실행한다는 것입니다. 그렇지 않습니다. 모델은 언제나 텍스트만 만들어냅니다 — 적절할 때, 도구 실행을 원한다고 말하는 구조화된 요청을 포함해서요. 실행은 당신의 애플리케이션이 합니다. 흐름은 이렇습니다.

  1. 사용 가능한 도구를 모델에게 설명합니다 — 이름, 무엇을 하는지, 어떤 입력을 기대하는지.
  2. 사용자가 무언가를 묻습니다. 모델은 잘 답하려면 도구가 필요한지 결정합니다.
  3. 필요하다면, 모델은 구조화된 메시지를 반환합니다: "이 도구를 이런 인자로 호출하라." 모델은 아무것도 실행하지 않습니다.
  4. 당신의 코드가 그 요청을 파싱하고, 실제 함수를 실행해 결과를 얻습니다.
  5. 그 결과를 모델에게 돌려보냅니다.
  6. 모델은 그 결과를 사용해 최종 답을 구성합니다.

모델은 의사 결정자이고, 당신의 애플리케이션은 손입니다. 그 경계를 분명히 유지하는 것이 필수입니다. 보안과 신뢰성에 관한 모든 것이 당신이 실행을 통제하지, 모델이 통제하지 않는다는 점을 기억하는 데 달려 있기 때문입니다.

모델이 잘 쓰도록 도구를 설명하기

도구는 그 설명만큼만 유용합니다. 모델은 당신이 말해 준 것에 전적으로 근거해 도구를 쓸지, 어떻게 쓸지 결정하기 때문입니다. 도구에는 명확한 이름, 무엇을 하고 언제 쓰는지에 대한 설명, 그리고 입력 명세 — 어떤 인자를 받고, 그 타입은 무엇이며, 어느 것이 필수인지 — 가 필요합니다.

이 설명의 품질이 동작을 직접 좌우합니다. 모호하게 설명된 도구는 엉뚱한 때에 혹은 잘못된 형식의 인자로 쓰이고, 명확하게 설명된 도구는 적절히 쓰입니다. 설명을, 당신이 쓴 것만 볼 수 있는 유능한 조수에게 주는 지시라고 생각하면 도움이 됩니다 — 사람이 당신의 설명만으로 언제 그 도구를 쓸지 알 수 없다면, 모델도 알 수 없습니다. Anthropic과 OpenAI의 제공사 문서는 도구를 선언하는 정확한 형식을 명시하며, 그것을 정확히 따르는 것이 모델로 하여금 당신의 코드가 작용할 수 있는 잘 형성된 호출을 반환하게 합니다.

이것이 에이전트를 여는 이유

함수 호출은 AI 에이전트라는 개념 전체를 떠받치는 구성 요소입니다. 에이전트란 대략 하나의 루프입니다. 모델에게 목표와 도구 묶음이 주어지고, 모델이 행동을 결정하면, 당신의 코드가 그것을 실행하고, 결과가 되먹임되며, 모델이 다음 행동을 결정합니다 — 작업이 끝날 때까지 반복하면서요.

그 루프의 매 턴이 함수 호출입니다. 모델이 도구를 살펴 하나를 고르면, 당신이 그것을 실행하고, 그 결과가 다음 결정을 빚습니다. 이것이 "가장 싼 항공편을 찾아 예약해 줘" 같은 모호한 요청을, 모델 자신은 하나도 수행하지 않지만 모두를 조율하는 구체적인 도구 사용의 연쇄 — 검색, 비교, 예약 — 로 시스템이 쪼갤 수 있는 방식입니다. 에이전트가 루프 속의 함수 호출임을 보고 나면, 에이전트형 시스템의 마법 같던 동작은 훨씬 덜 신비로워집니다. 목표를 향해 거듭 돌려지는, 똑같은 여섯 단계 흐름일 뿐입니다.

어디서 어긋나는가

함수 호출은 텍스트 전용 생성에는 없는 실패 양상을 들여오며, 그것들을 예상하는 것이 견고한 시스템을 만드는 일의 대부분입니다.

  • 모델이 잘못된 도구나 잘못된 인자를 고른다. 모델은 당신의 설명에 근거해 결정하므로, 형편없는 설명은 형편없는 결정을 낳습니다. 모호하거나 겹치는 도구가 흔한 원흉입니다.
  • 도구가 실패한다. API가 다운되고, 질의가 오류를 내며, 입력이 유효하지 않습니다. 당신의 코드는 도구 실패를 처리하고 모델에게 무엇을 보고할지 정해야 하며, 모델은 무엇이 잘못됐는지 들으면 종종 우아하게 회복할 수 있습니다.
  • 모델이 인자를 지어낸다. 필요한 정보를 다 갖추지 않은 채 도구를 호출하라 하면, 모델은 그럴듯하지만 틀린 값을 채워 넣을 수 있습니다. 작용하기 전에 인자를 검증하세요. 절대 맹목적으로 믿지 마세요.
  • 루프가 폭주한다. 에이전트 환경에서 모델은 수렴하지 못한 채 도구를 계속 호출하는 데 갇힐 수 있습니다. 단계 수에 대한 가드레일이 혼란에 빠진 에이전트가 영원히 도는 것을 막습니다.

이것들은 별난 예외 사례가 아닙니다 — 도구로 무언가를 만드는 일의 평범한 결입니다. 운영 시스템은 그 하나하나를 모두 처리해야 합니다.

건너뛸 수 없는 보안 경계

도구가 실제 행동을 하기에, 함수 호출은 보안 표면이기도 하며, 부주의함이 가장 비싼 단 하나의 지점입니다. 지배 원칙은 도구를 호출하라는 모델의 요청이 신뢰할 수 없는 입력이라는 것입니다. 그것은 사용자의 프롬프트에 의해 빚어지고, 사용자는 당신이 의도하지 않은 방식으로 도구를 호출하도록 모델을 몰아가려 시도할 수 있습니다.

그 말은, 신뢰할 수 없는 사용자가 임의의 인자로 촉발하게 두지 않을 도구를 모델에게 결코 주지 않는다는 뜻입니다. 작용하기 전에 모든 인자를 검증하세요. 각 도구가 할 수 있는 일을 업무가 허용하는 한 좁게 범위 짓세요. 당신의 시스템으로 향하는 다른 어떤 경로에든 적용할 동일한 인가와 속도 제한을 적용하세요. 레코드를 삭제하거나 돈을 쓰는 도구는 공개 데이터 피드를 읽는 도구보다 훨씬 큰 주의를 요구합니다. 모델은 결정하고, 당신의 코드는 작용하기 전에 검증해야 합니다.

정리

함수 호출은 텍스트 생성기를 행동하는 시스템으로 바꾸는 것입니다 — 당신의 어느 도구를 어떤 입력으로 쓸지 모델이 결정하게 하되, 실제 실행은 당신의 코드가 합니다. 그 경계가 전부의 핵심입니다. 모델은 의사 결정자, 당신의 애플리케이션은 손이며, 실행에 대한 통제권은 당신에게 남습니다. 유능한 조수가 설명만으로 쓸 수 있을 만큼 명확하게 도구를 설명하고, 피할 수 없는 잘못된 선택과 도구 실패를 처리하며, 모든 도구 호출을 작용하기 전에 검증하는 신뢰할 수 없는 입력으로 다루세요. 그것을 제대로 하면 함수 호출은 에이전트의, 그리고 실제 일을 해내는 모든 애플리케이션의 토대가 됩니다 — 처음부터 끝까지 추론할 수 있는 하나의 단순한 여섯 단계 흐름 위에 세워진 채로요.

#function-calling#tools#agents#integration