실무 Multi-Agent 오케스트레이션 5장 · Function Calling 원리 2 / 7 ← 이전목차다음 → TechLead Cro

5장. Function Calling 원리

결정과 실행의 분리 — 모델은 요청서를 쓰고, 코드가 실행한다

한 줄 요약

Function Calling은 이름과 달리 모델이 함수를 실행하는 기능이 아닙니다. 모델은 "이 함수를 이 값으로 불러 달라"는 요청을 응답으로 보낼 뿐이고, 실행은 우리 코드가 합니다. 이 분리가 에이전트를 통제할 수 있게 해 주는 바탕입니다.


1. 네 단계로 오간다

Function Calling 왕복 4단계

그림의 화살표 네 개를 표로 옮기면 이렇습니다.

단계 누가 무엇을
① 선언 개발자 → 모델 "get_order_status라는 도구가 있다. 주문번호를 받는다"고 알려 줍니다
② 결정 모델 → 코드 "get_order_status를 order_id='HR2026...'로 불러 달라"고 응답합니다
③ 실행 코드 그 함수를 실제로 실행해 결과를 얻습니다
④ 반환 코드 → 모델 결과를 모델에게 돌려주고, 모델이 그것으로 답변 문장을 씁니다

모델을 두 번 호출한다는 점을 눈여겨봅니다. ②에서 한 번, ④에서 한 번입니다. 이렇게 한 바퀴 도는 것을 이 과정에서는 왕복(round trip) 이라고 부릅니다.


2. 모델의 응답이 문장이 아니다

②에서 모델이 보내는 응답은 문장이 아니라 함수 이름과 인자입니다. 인자(argument) 는 함수를 부를 때 넘기는 값입니다.

get_order_status({'order_id': 'HR20260701023'})

이 응답을 function call이라고 합니다. 4장에서 배운 구조화 출력과 본질이 같습니다. 자유 문장이 아니라 정해진 구조의 데이터가 오는 것입니다. 모델이 한 일은 고객의 문장을 읽고 그것을 함수 호출의 모양으로 옮겨 적은 것입니다.

모델은 여기서 멈춥니다. 데이터베이스에 접속하지도, 파일을 열지도 않습니다. 모델에게는 그럴 수단이 없습니다.


3. 왜 이렇게 나눠 놓았는가

실행하는 쪽이 코드라는 것은, 모델의 결정과 실제 실행 사이에 우리가 끼어들 자리가 있다는 뜻입니다.

우리 코드가 할 수 있는 일 예
실행 전에 검사한다 주문번호 형식이 맞는가, 이 고객의 주문이 맞는가
실행을 거부한다 금액이 한도를 넘으면 실행하지 않는다
실행을 기록한다 언제 어떤 도구가 어떤 값으로 불렸는가
도구 목록을 정한다 위험한 일은 애초에 도구로 만들지 않는다

마지막 줄이 가장 강력합니다. 1장에서 "환불 실행은 도구에 넣지 않는다"고 정했습니다. 도구 목록에 없는 일은 모델이 아무리 하려 해도 요청할 방법 자체가 없습니다.

프롬프트에 "환불을 실행하지 마라"고 적는 것과 비교해 봅니다.

프롬프트로 금지 도구 목록에 넣지 않음
막는 방식 모델이 지시를 따르기를 기대합니다 할 수단이 없습니다
뚫릴 수 있는가 지시를 무시하게 만드는 입력(표준 질문 Q12)에 흔들릴 수 있습니다 흔들릴 것이 없습니다

에이전트가 할 수 있는 일의 범위는 모델이 스스로 얻는 것이 아니라 개발자가 도구 목록으로 정해 주는 것입니다.


4. 누가 무엇을 했나

"AI가 주문을 조회했다"는 말을 정확히 풀면 이렇습니다.

한 일 누가
어떤 도구를 줄지 정했다 개발자
이 질문에 도구가 필요하다고 판단했다 모델
문장에서 주문번호를 찾아 인자에 넣었다 모델
함수를 실행해 데이터를 가져왔다 우리 코드
가져온 데이터를 문장으로 풀어 썼다 모델

답이 틀렸을 때 이 표의 어느 줄에서 틀렸는지부터 찾습니다. 도구를 잘못 골랐는지, 인자가 틀렸는지, 함수가 틀린 데이터를 돌려줬는지, 맞는 데이터를 틀리게 풀어 썼는지에 따라 고치는 곳이 다릅니다.


핵심 정리

  • Function Calling에서 모델은 함수를 실행하지 않습니다. 불러 달라고 요청합니다.
  • 왕복은 선언 → 결정 → 실행 → 반환 네 단계이고, 모델은 두 번 호출됩니다.
  • 모델의 결정(function call)은 문장이 아니라 함수 이름과 인자입니다.
  • 실행이 코드에 있으므로 검사, 거부, 기록을 넣을 자리가 생깁니다.
  • 모델이 할 수 있는 일은 도구 목록이 정합니다. 목록에 없는 일은 할 수 없습니다.
← 이전 절왜 도구가 필요한가 — 모델은 우리 주문 데이터를 모른다다음 절 →도구 선언 — 모델이 읽는 안내문
오명운 · macro@prag-ai.com