일타 저스틴의 책 읽기 – Agentic Design Patterns – 5장. Tool Use (Function Calling)
자, 집중! 다시 돌아온 대한민국 넘버원 일타 강사, 저스틴입니다!
지금까지 우리는 AI 에이전트의 뇌와 신경계를 만드는 법을 배웠습니다. 순서대로 일하는 ‘체이닝’, 길을 찾는 ‘라우팅’, 동시에 일하는 ‘병렬화’, 그리고 스스로를 돌아보는 ‘리플렉션’까지! 이로써 우리의 에이전트는 생각하고, 판단하고, 개선하는 능력까지 갖추게 되었죠. 하지만 아직 결정적인 한 가지가 빠졌습니다. 바로 ‘손’과 ‘발’입니다! 오늘은 ‘Chapter 5: Tool Use (Function Calling)’ 을 교재 삼아, 방구석 똑똑이에 불과했던 우리 AI에게 세상을 향한 손과 발을 달아주는 경이로운 기술, 도구 사용(Tool Use)에 대해 완벽하게 마스터해 보겠습니다. 이건 AI 에이전트 개발의 화룡점정이라 할 수 있으니, 눈 크게 뜨고 따라오세요!
AI에게 손과 발을 달아주자! ‘도구 사용’ 완벽 가이드
왜 AI에게 ‘도구’가 필요한가?
자, 여러분. 상상해 봅시다. 세상의 모든 지식을 머릿속에 담고 있는 천재가 유리 상자 안에 갇혀있다면, 그 천재가 할 수 있는 일은 뭘까요? 그냥 알고 있는 걸 말하는 것뿐이겠죠. 어제까지의 지식은 알지만, ‘오늘’의 날씨는 모르고, 복잡한 계산은 암산으로만 해야 하며, 누군가에게 이메일을 보낼 수도 없습니다. 바로 이게 ‘도구’가 없는 거대 언어 모델(LLM)의 한계입니다.
이 글의 저자는 바로 이 점을 정확히 짚고 있습니다. 에이전트가 진짜 쓸모 있으려면, 현실 세계나 외부 시스템과 상호작용해야만 합니다. 이때 필요한 것이 바로 ‘도구 사용(Tool Use)’ 패턴입니다. 종종 ‘함수 호출(Function Calling)’이라는 기술로 구현되는데, 쉽게 말해 AI가 필요에 따라 외부의 API, 데이터베이스, 코드 실행기 같은 ‘도구’를 직접 사용하는 능력을 말합니다.
이제 AI는 더 이상 유리 상자 안의 천재가 아닙니다. 날씨를 물어보면 기상청 API라는 ‘전화기’를 쓰고, 재고를 물어보면 회사 재고 데이터베이스라는 ‘컴퓨터’를 켜서 확인하고, 이메일을 보내달라고 하면 이메일 전송 API라는 ‘비서’에게 일을 시키는, 진짜 ‘행동하는’ 에이전트가 되는 겁니다!
도구 사용의 모든 것
1. 도구 사용은 어떤 과정으로 이루어질까?
AI가 마법처럼 도구를 쓰는 게 아닙니다. 아주 체계적인 과정을 거치죠. 저자는 이 과정을 6단계로 설명합니다. 제가 아주 쉽게 풀어줄게요.
- 도구 정의 (사용 설명서 전달): 먼저 AI에게 “너한테는 이런 도구들이 있어. 이 도구는 이런 기능이고, 이렇게 쓰는 거야”라고 적힌 사용 설명서를 줍니다. 도구의 이름, 기능, 필요한 재료(파라미터) 등을 명확하게 알려주는 거죠.
- LLM의 결정 (스스로 판단): 사용자의 요청을 받은 AI는 방금 받은 설명서를 보고 “아, 이 요청을 처리하려면 ‘날씨 조회’ 도구가 필요하겠군!” 하고 스스로 판단을 내립니다.
- 함수 호출 생성 (작업 지시서 작성): 도구를 쓰기로 결정했다면, AI는 아주 정확한 형식(주로 JSON)으로 작업 지시서를 작성합니다. “날씨 조회 도구를 써줘. 장소는 ‘런던’으로 해서!” 와 같이 말이죠.
- 도구 실행 (실제 행동): 에이전트 시스템이 AI가 작성한 작업 지시서를 가로채서, 실제 외부 함수(API)를 실행합니다. 정말로 기상청 서버에 “런던 날씨 알려줘!”라고 물어보는 거죠.
- 관찰/결과 (결과 보고): 도구를 실행한 결과(예: “런던 날씨: 맑음, 15도”)가 시스템으로 돌아옵니다.
- LLM의 처리 (최종 답변 생성): AI는 방금 받은 따끈따끈한 결과 보고를 보고, “현재 런던의 날씨는 맑고 기온은 15도입니다.” 와 같이 자연스러운 최종 답변을 만들어 사용자에게 전달합니다.
자, 이 부분은 별표 세 개! 이 6단계 사이클이 바로 AI가 텍스트만 생성하는 모델을 넘어, 정보를 가져오고, 계산하고, 실제 행동을 유발하는 진정한 에이전트로 거듭나게 하는 핵심 프로세스입니다.
저스틴) AI 에이전트는 ReAct에서 시작되었다고 봐도 과언이 아닙니다. 이름도 참 잘 정했습니다.
2. 도구 사용의 화려한 실전 사례들
이 놀라운 기술은 대체 어디에 쓰일까요? 사실상 ‘진짜 일’을 하는 모든 AI에 사용됩니다.
- 외부 정보 검색: “오늘 런던 날씨 어때?” -> 날씨 API 도구 사용!
- 데이터베이스 및 API 연동: “이 신발 재고 있어요?” -> 재고 관리 API 도구 사용!
- 계산 및 데이터 분석: “AAPL 주식 100주를 150달러에 샀는데 지금 팔면 이익이 얼마야?” -> 주식 시세 API 도구로 현재가 조회 후, 계산기 도구로 이익 계산!
- 커뮤니케이션: “존에게 내일 회의에 대해 이메일 보내줘.” -> 이메일 전송 API 도구 사용!
- 코드 실행: “이 파이썬 코드 실행하면 결과가 뭐야?” -> 코드 인터프리터 도구 사용!
- 외부 시스템 제어: “거실 불 좀 꺼줘.” -> 스마트홈 제어 API 도구 사용!
보이죠? 도구 사용은 LLM을 단순한 ‘텍스트 생성기’에서 우리 세계를 감지하고, 추론하고, 행동하는 ‘에이전트’로 변신시키는 마법 지팡이와도 같습니다.
3. 코드 예제 훑어보기: 도구는 어떻게 만들고 쓸까?
자, 이제 코드를 보면서 이 마법이 어떻게 구현되는지 살짝 엿봅시다. 겁먹지 마세요, 핵심만 짚어드립니다!
- LangChain 예제:
@langchain_tool
이라는 데코레이터(장식)가 보이시나요? 이게 바로 마법의 주문입니다. 파이썬 함수 위에 이걸 붙여주기만 하면 “이 함수는 AI가 쓸 수 있는 도구야!”라고 등록이 됩니다. 그 다음create_tool_calling_agent
를 통해 이 도구들을 AI에게 장착시켜주면 끝! AI는 이제 “아, 나한테search_information
이라는 도구가 있구나!” 하고 인식하게 됩니다. - CrewAI 예제: CrewAI도 비슷합니다.
@tool
데코레이터로 ‘주식 가격 조회 도구’를 만듭니다. 그리고 ‘선임 금융 분석가’라는 역할을 가진 에이전트를 만들 때tools=[get_stock_price]
와 같이 이 도구를 직접 쥐여줍니다. 그러면 이 에이전트는 자기 임무를 수행하다가 “아, 주가를 알아봐야겠군!” 싶을 때 자기가 가진 도구를 꺼내 쓰는 거죠. - Google ADK 예제: Google ADK는 아주 강력한 기성품 도구들을 제공하는 게 특징입니다. 코드에서
tools=[google_search]
한 줄만 추가하면, 에이전트가 바로 구글 검색 능력을 갖게 됩니다.BuiltInCodeExecutor
를 장착하면 계산기 에이전트처럼 코드를 실행할 수 있고,VSearchAgent
를 쓰면 회사 내부 데이터베이스를 검색하는 전문 에이전트도 뚝딱 만들 수 있습니다. 마치 전문가용 공구 세트를 바로 지급하는 것과 같죠.
강의 마무리: 핵심 요약 및 저자의 메시지
자, 오늘 정말 어마어마한 내용을 배웠습니다. AI 에이전트의 잠재력을 폭발시키는 ‘도구 사용’! 머릿속에 완벽하게 정리해 봅시다.
- What (무엇): LLM은 그 자체로는 외부 세계와 단절된 똑똑한 뇌일 뿐입니다. 지식은 과거에 머물러 있고, 실제 행동은 불가능하죠.
- Why (왜): ‘도구 사용’ 패턴은 AI에게 외부 API나 서비스와 연결되는 다리를 놓아줍니다. AI는 이 다리를 통해 실시간 정보를 가져오고, 외부 시스템에 명령을 내리는 등 ‘행동’을 할 수 있게 됩니다.
- Rule of Thumb (언제 쓸까): 이건 시험에 100% 나옵니다! 에이전트가 LLM의 내부 지식을 벗어나는 무언가를 해야 할 때 무조건 도구를 사용하세요. 실시간 정보(날씨, 주가), 개인/회사 내부 데이터(데이터베이스 조회), 정확한 계산, 코드 실행, 외부 시스템에 대한 조치(이메일 전송, 스마트 기기 제어)가 필요하다면? 정답은 ‘도구 사용’입니다!
핵심 정리 (Key Takeaways):
- 도구 사용은 에이전트가 외부 시스템과 상호작용하고 동적 정보에 접근하게 해줍니다.
- LLM이 이해할 수 있도록 도구의 기능과 사용법을 명확하게 설명해주는 것이 핵심입니다.
- LLM은 스스로 도구 사용 여부를 결정하고, 정확한 작업 지시서를 생성합니다.
- LangChain, CrewAI, Google ADK와 같은 프레임워크는 이런 도구를 쉽게 만들고 에이전트에 통합할 수 있도록 도와줍니다.
- 도구 사용은 AI를 현실 세계에서 행동하는 주체로 만드는 가장 중요한 패턴 중 하나입니다.
이 글의 저자는 결론적으로 도구 사용 패턴이 LLM의 기능적 범위를 텍스트 생성을 넘어 확장시키는 핵심적인 구조 원리라고 말합니다. 여러분이 만들 에이전트가 단순히 말만 잘하는 챗봇이 아니라, 진짜로 여러분을 위해 일하고, 문제를 해결하고, 세상을 움직이게 만들고 싶다면, 이 ‘도구 사용’ 패턴을 반드시 정복해야 합니다.