함수 호출Function Calling

모델이 필요한 도구를 정해진 양식으로 불러 쓰는 것

핵심 정리
  • 함수 호출은 모델이 스스로 못 하는 일을 바깥 프로그램에 요청서로 넘기는 방식이에요.
  • 모델이 직접 도구를 돌리지는 않아요. 무엇을 어떤 값으로 부를지 적어 낼 뿐이에요.
  • 그래서 도구마다 이름과 필요한 값을 미리 알려 줘야 모델이 골라 쓸 수 있어요.
  • 실행 결과가 돌아오면 모델은 그 값을 읽고 답을 마저 써요. 한 번에 여러 번 오갈 수도 있어요.
  • 엉뚱한 도구를 부르거나 값을 지어내기도 해서, 실행 전 확인 장치가 필요해요.
목차

1비유로 이해하기

진료실에서 의사가 직접 피를 뽑아 현미경을 들여다보지는 않아요. 대신 검사 의뢰서를 한 장 써요. 어떤 검사를 어느 부위에서 어떤 조건으로 할지 칸에 맞춰 적어 검사실로 넘겨요. 기계를 돌리는 일은 검사실이 맡고, 잠시 뒤 결과지가 돌아와요. 의사는 그 숫자를 받아 든 뒤에야 다음 이야기를 이어 가요.

모델의 함수 호출도 이 의뢰서 한 장이에요. 오늘 환율이나 자릿수가 긴 계산처럼 자기가 감당하지 못하는 일이 나오면, 모델은 답을 지어내는 대신 어떤 도구를 어떤 값으로 불러 달라는 요청서를 적어 내요. 실행은 바깥 프로그램이 하고, 돌아온 결과를 보고서야 답을 마저 써요.

칸을 아무렇게나 채운 의뢰서는 검사실에서 되돌아오죠. 요청서의 양식이 미리 정해져 있는 것도 같은 이유예요.

2자세히 알아보기

모델이 하는 일은 요청서를 쓰는 것까지예요

언어 모델은 글을 이어 쓰는 기계라서, 인터넷에 접속하거나 파일을 저장하는 손이 없어요. 함수 호출은 이 손을 달아 주는 방법이 아니라, 손을 가진 프로그램에게 심부름을 시키는 방법이에요.

모델이 만들어 내는 것은 여전히 글이에요. 다만 사용자에게 보여 줄 문장 대신, 도구 이름과 값이 칸에 맞게 들어간 짧은 요청서를 내놓아요. 이 요청서를 받아서 진짜로 실행하는 쪽은 모델을 감싸고 있는 프로그램이에요.

그래서 무엇을 하게 할지, 무엇을 막을지는 전부 프로그램 쪽에서 정해요. 모델이 아무리 그럴듯하게 요청서를 써도, 프로그램이 그 도구를 쥐여 주지 않았다면 아무 일도 일어나지 않아요.

도구 설명서를 미리 건네줘요

모델은 세상에 어떤 도구가 있는지 스스로 알지 못해요. 그래서 대화를 시작할 때 도구 목록을 함께 넣어 줘요. 도구의 이름, 무엇을 하는 도구인지, 어떤 값이 필요하고 어떤 값은 없어도 되는지를 적은 짧은 설명서예요.

이 설명이 곧 사용법이에요. "도시 이름을 넣으면 그 도시의 오늘 날씨를 돌려줍니다"라고 적어 두면, 모델은 날씨 질문이 나올 때 이 도구를 떠올려요. 설명이 두루뭉술하면 엉뚱한 상황에서 부르고, 값의 형식이 안 적혀 있으면 제멋대로 채워 넣어요. 도구를 잘 쓰게 만드는 일의 절반은 이 설명을 다듬는 일이에요.

값의 형태를 정해 두는 것도 중요해요. 날짜를 어떤 순서로 쓸지, 도시 이름은 어느 나라 말로 넣을지 같은 것을 정해 두지 않으면, 프로그램이 받아 봐야 알아듣지 못해요.

결과를 받아 다시 이어 써요

프로그램이 도구를 돌려서 얻은 결과는 대화에 다시 끼워 넣어져요. 모델이 보기에는 방금 새 정보가 하나 도착한 셈이에요. 그 값을 읽고 답을 이어 쓰거나, 필요하면 또 다른 요청서를 적어요.

한 번에 끝나지 않는 일도 많아요. 먼저 검색 도구를 불러 후보를 찾고, 그중 하나를 골라 상세 조회 도구를 다시 부르고, 마지막에 정리해서 답하는 식이에요. 이렇게 요청과 결과가 여러 번 오가며 일을 끝내는 방식이 AI 에이전트의 뼈대가 돼요.

잘못 부르는 일도 생겨요

모델은 어떤 도구를 부를지 확률로 고르기 때문에 실수도 해요. 부를 필요가 없는데 부르고, 필요한데 부르지 않고, 값을 잘못 채워 넣어요. 대화 속에 도구 이름과 비슷한 말이 섞여 있으면 그쪽으로 끌려가기도 해요.

그래서 값이 형식에 맞는지 프로그램이 한 번 더 검사하고, 틀리면 되돌려 보내 다시 쓰게 해요. 메일 보내기나 결제, 삭제처럼 되돌릴 수 없는 도구는 실행 전에 사람에게 물어보게 만들어요. 문서나 웹 페이지 안에 숨겨 둔 문장이 모델을 꾀어 엉뚱한 도구를 부르게 하는 공격도 있어서, 위험한 도구일수록 권한을 좁게 주는 편이 안전해요.

3조금 더 정확하게

함수 호출에서 모델이 내놓는 것은 도구 이름과 값이 담긴 짧은 구조화된 데이터예요. 어떤 도구를 쓸 수 있는지는 미리 정해진 형식의 목록으로 모델에게 전달되고, 실행과 결과 반환은 전부 바깥 프로그램의 몫이에요.

비유가 어긋나는 지점도 있어요. 의사는 검사실이 실제로 존재한다는 걸 알고 의뢰서를 쓰지만, 모델은 목록에 적힌 설명만 보고 판단해요. 목록에 없는 도구를 상상해서 부르기도 하고, 결과가 이상해도 그대로 믿고 답에 옮기기도 해요. 결과를 검증하는 눈이 따로 없다는 뜻이에요. 또 하나, 도구를 고르는 판단이 사람처럼 신중한 검토를 거치는 것도 아니에요. 지금까지의 대화를 보고 다음에 올 법한 글로 요청서를 만들어 내는 것에 가까워요. 그래서 같은 질문에도 어떤 때는 도구를 부르고 어떤 때는 그냥 답해 버리는 흔들림이 남아 있어요. 도구 설명을 또렷하게 적고, 언제 부르라는 지침을 함께 주는 편이 결과를 훨씬 고르게 만들어요.

4직접 해보기

5흔한 오해

  • 함수 호출을 켜면 AI가 직접 프로그램을 실행한다고 생각하기 쉽지만, 실제로는 요청서를 써 낼 뿐이고 실행은 바깥 프로그램이 해요.

  • 도구를 붙이면 잘못된 답이 사라진다고 여기기 쉽지만, 실제로는 도구를 안 부르거나 결과를 잘못 읽어 그대로 틀리는 경우가 남아요.

  • 도구를 많이 붙일수록 좋다고 생각하기 쉽지만, 실제로는 설명이 길어질수록 고르기가 어려워져 엉뚱한 선택이 늘어요.

7한 줄 요약

그러니까함수 호출은 모델이 못 하는 일을 정해진 양식의 요청서로 바깥 프로그램에 넘기고, 돌아온 결과를 받아 답을 마저 쓰는 방식이에요.

잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02