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

5장. Function Calling 원리

왜 도구가 필요한가 — 모델은 우리 주문 데이터를 모른다

한 줄 요약

4장에서 만든 분류기는 “주문번호 HR20260701023 지금 어디쯤인가요?”라는 문의를 주문배송조회로 분류하고, 주문번호도 추출했습니다. 하지만 실제 배송 상태까지 알려 주지는 못합니다. 답변에 필요한 정보는 하루마켓의 주문 데이터에 있으며, 모델은 아직 그 데이터를 조회할 수 없기 때문입니다. 이번 장에서는 모델이 함수를 호출해 외부 데이터를 조회하고 답변에 활용하는 방법인 Function Calling의 원리를 배웁니다.


1. 지금까지 만든 것으로 안 되는 일

장 만든 것 주문 조회 문의 앞에서
3장 시스템 프롬프트 말투는 상담원이 됐지만 "확인 후 안내드리겠습니다"까지입니다. 확인할 방법이 없습니다
4장 의도 분류기 주문배송조회라고 분류하고 주문번호를 꺼냈습니다. 그다음이 없습니다

3장에서 정리한 문장을 다시 가져옵니다. 프롬프트는 "어떻게 말할지"를 정할 뿐, "무엇이 사실인지"는 정해 주지 못합니다.


2. 모델이 알 수 없는 세 가지

LLM은 어느 시점까지 모은 글로 학습한 뒤 고정됩니다. 그 시점을 지식 컷오프(knowledge cutoff) 라고 합니다. 그리고 학습에 쓰인 글은 공개된 글입니다. 따라서 모델이 원리상 알 수 없는 정보는 세 종류입니다.

갈래 예 왜 모르는가
실시간 정보 지금의 배송 위치, 현재 재고 학습이 끝난 뒤에 생긴 일입니다
사내 정보 하루마켓의 주문 데이터, 내부 규정 공개된 적이 없어 학습 자료에 없습니다
개인 정보 지금 묻는 고객이 누구이고 무엇을 샀는지 위 둘에 모두 해당합니다

1장에서 본 문의 로그를 떠올려 보세요. 고객지원 문의의 대부분이 정확히 이 세 갈래를 묻습니다.


3. 모르는 것을 물으면

모델에게 모르는 것을 물으면 "조회할 수 없습니다" 라고 하거나, 그럴듯한 말로 빈자리를 채웁니다. 두 번째 경우가 1장에서 정의한 환각(hallucination) 입니다. 어느 쪽이든 고객의 문의는 해결되지 않습니다. 필요한 것은 모델이 데이터를 조회할 수 있게 하는 일입니다.


4. 이걸 모르면 무엇을 판단하지 못하는가

  • 모델의 답이 데이터에서 온 것인지, 지어낸 것인지 가려내지 못합니다.
  • "AI가 주문을 조회했다"는 말에서 실제로 조회한 것이 누구인지 설명하지 못합니다. 이것을 모르면 어디에 검사를 넣어야 하는지도 모릅니다.
  • 모델이 할 수 있는 일의 범위를 누가 정하는지 알지 못합니다. 환불 실행 같은 위험한 일을 어떻게 막는지 답할 수 없습니다.

5. 이번 장에서 하는 것

Function Calling(함수 호출) 은 모델에게 "쓸 수 있는 도구 목록"을 알려 주고, 모델이 그중 무엇을 어떤 값으로 부를지 결정하게 하는 기능입니다. 실제 실행은 우리 코드가 합니다.

이번 장에서는 주문 조회 도구 하나를 붙이고, 질문이 답으로 바뀌기까지의 과정을 한 단계씩 손으로 돌려 봅니다. 도구의 내용은 일부러 가짜로 둡니다. 이번 장의 목적은 조회가 아니라 오가는 구조를 눈으로 보는 것입니다. 진짜 데이터는 6장에서 연결합니다.


핵심 정리

  • 모델은 실시간 정보, 사내 정보, 개인 정보를 원리상 알 수 없습니다.
  • 모델 안에 없는 정보는 물어도 나오지 않습니다. 데이터를 가져다줄 장치가 필요합니다.
  • 프롬프트와 구조화 출력으로는 모델 안에 없는 사실을 꺼낼 수 없습니다.
  • Function Calling은 모델이 바깥의 데이터에 손을 뻗게 하는 장치입니다.
  • 이번 장은 도구 하나로 오가는 구조를 확인합니다.
← 4장실습문제와 해답다음 절 →결정과 실행의 분리 — 모델은 요청서를 쓰고, 코드가 실행한다
오명운 · macro@prag-ai.com