brunch

내 주식 포트폴리오, AI에게 물어보세요!

by 위키북스
내 주식 포트폴리오, AI에게 물어보세요! 외부 API를 연동하는 '펑션 콜링' 실전


우리가 사용하는 ChatGPT 같은 LLM(거대 언어 모델)은 정말 놀라운 능력을 보여주지만, 한 가지 아쉬운 점이 있습니다. 바로 '지금' 세상에서 일어나는 일에 대해서는 잘 모른다는 것이죠. 예를 들어 "오늘 삼성전자 주가 얼마야?"라고 물어보면, 훈련 데이터에 없는 최신 정보이기에 대답을 망설이거나 부정확한 정보를 내놓기 일쑤입니다.


기존의 RAG(검색 증강 생성) 기술은 PDF나 TXT 같은 정적인 문서를 참조하여 이러한 지식의 한계를 보완했지만, 주가나 날씨처럼 실시간으로 변하는 데이터를 다루기에는 적합하지 않았습니다. 데이터를 계속해서 새로 수집하고 처리해야 하는 부담 때문이죠.


하지만 이제 '펑션 콜링(Function Calling)'이라는 기술을 통해 AI가 실시간 데이터와 소통하는 것이 가능해졌습니다. 오늘은 『LLM과 RAG로 구현하는 AI 애플리케이션』 8장의 내용을 바탕으로, AI가 스스로 외부 API를 호출하여 실시간 주식 정보를 가져오는 '펑션 콜링 에이전트'를 직접 만들어 보겠습니다.





펑션 콜링(Function Calling)이란 무엇일까요?

펑션 콜링은 LLM이 마치 개발자가 만든 함수(Function)를 직접 '호출(Calling)'할 수 있게 만드는 기술입니다. AI에게 특정 작업을 수행할 수 있는 '도구(Tool)' 목록을 알려주면, AI는 사용자의 질문 의도를 파악하고 가장 적절한 도구를 스스로 선택하여 실행합니다.


작동 방식은 다음과 같습니다.

함수 정의: 주식 가격을 조회하는 것과 같은 특정 작업을 파이썬 함수로 작성합니다.

도구 등록: 작성한 함수를 AI가 인식할 수 있는 '도구'로 등록합니다.

LLM의 판단 및 함수 호출: 사용자가 질문하면, LLM이 질문을 분석해 등록된 도구가 필요한지 판단하고, 필요하다면 해당 함수를 적절한 인자(Argument)와 함께 호출합니다.

결과 처리 및 응답: 함수 실행 결과를 다시 LLM이 받아, 사람이 이해하기 쉬운 자연스러운 문장으로 가공하여 최종 답변을 생성합니다.


이러한 방식은 여러 도구를 순차적으로 실행하며 문제를 해결하는 ReAct 에이전트와 달리, 사고 과정을 생략하고 바로 행동(Action)에 옮겨 구현이 간단하고 빠르다는 장점이 있습니다.





실전! 실시간 주식 조회 AI 에이전트 만들기

이제 『LLM과 RAG로 구현하는 AI 애플리케이션』 8.3절의 예제를 따라 실시간 주식 정보를 알려주는 AI 에이전트를 직접 만들어 보겠습니다.


1단계: 환경 설정 및 라이브러리 설치

먼저 필요한 라이브러리를 설치해야 합니다. 이번 실습에서는 라마인덱스와 함께 야후 파이낸스(Yahoo Finance)의 데이터를 쉽게 가져올 수 있는 yfinance 라이브러리를 사용합니다.

Bash
pip install llama-index==0.11.11 yfinance==0.2.55 openai


설치가 완료되면, 실습에 필요한 모듈들을 임포트합니다.

스크린샷 2025-10-21 152931.png


2단계: AI가 사용할 '도구(Tool)' 정의하기

이제 AI 에이전트가 호출할 실제 함수, 즉 '도구'를 만들어 보겠습니다. 책의 예제처럼 미국 주식과 한국 주식의 종가를 각각 조회하는 두 개의 함수를 정의합니다.

스크린샷 2025-10-21 153632.png


yf.Ticker()는 특정 종목의 정보를 가져오는 객체를 생성합니다.

history(period='1d')는 최근 하루 동안의 주가 데이터를 가져옵니다.

특히 한국 주식을 조회할 때는 종목 코드 뒤에 .KS (코스피)를 붙여야 한다는 점이 중요합니다. 이를 생략하면 정보를 찾지 못하는 오류가 발생할 수 있습니다.



3단계: 함수를 AI가 인식할 수 있는 '도구'로 등록하기

방금 만든 파이썬 함수들을 AI가 이해하고 사용할 수 있는 FunctionTool 형태로 변환해야 합니다.

스크린샷 2025-10-21 153714.png


FunctionTool.from_defaults()는 우리가 만든 함수(fn=...)를 감싸 AI 에이전트가 사용할 수 있는 표준화된 도구 형식으로 만들어 줍니다.





에이전트 생성 및 쿼리 실행

이제 모든 준비가 끝났습니다. 정의된 도구들을 탑재한 FunctionCallingAgent를 생성하고, 직접 질문을 던져보겠습니다.

스크린샷 2025-10-21 153801.png


from_tools() 메서드에 우리가 만든 도구 리스트 [stock_k, stock_u]를 전달하여 에이전트를 생성합니다. verbose=True로 설정하면 AI가 어떤 판단을 내리고 어떤 함수를 호출하는지 전 과정을 상세히 볼 수 있어 매우 유용합니다.



실전 사례 1: "TESLA 최신 종가가 어떻게 돼?"


이제 에이전트에게 직접 질문해 보겠습니다.

스크린샷 2025-10-21 153843.png


실행 결과는 다음과 같습니다.

스크린샷 2025-10-21 153921.png


정말 놀랍지 않나요? 실행 로그를 보면 AI 에이전트가 "TESLA"라는 단어를 보고 미국 주식임을 인지한 뒤, 종목 코드인 "TSLA"를 스스로 찾아내어 get_stock_price_us 함수를 정확히 호출한 것을 볼 수 있습니다. 함수가 반환한 숫자 252.31을 다시 LLM이 받아 "테슬라(Tesla)의 최신 종가는 $252.31입니다."라는 자연스러운 문장으로 만들어주었습니다.



실전 사례 2: "삼성전자의 최신 종가가 어떻게 돼?"

국내 주식도 잘 조회하는지 확인해 보겠습니다.

스크린샷 2025-10-21 154013.png



실행 결과는 다음과 같습니다.

스크린샷 2025-10-21 154037.png



이번에도 에이전트는 '삼성전자'라는 자연어에서 종목 코드 '005930'을 스스로 알아내고, 한국 주식을 조회하는 get_stock_price_Korea 함수를 정확히 호출했습니다.

Screen_Shot_2025-10-14_at_5.38.37_AM.png?type=w966





결론: 행동하는 AI의 시작, 펑션 콜링

오늘 우리는 펑션 콜링을 통해 AI가 단순히 저장된 지식을 답변하는 것을 넘어, 외부 API와 연동하여 실시간 정보를 가져오고 실제 작업을 수행하는 '행동하는 AI'로 거듭나는 과정을 직접 확인했습니다. 사용자가 자연어로 질문하면, AI가 그 의도를 파악해 적절한 도구를 선택하고 실행하는 모습은 AI 에이전트 기술의 무한한 가능성을 보여줍니다.


오늘 살펴본 내용은 『LLM과 RAG로 구현하는 AI 애플리케이션』 8장의 핵심 내용을 바탕으로 한 것입니다. 책에서는 이 외에도 여러 개의 함수를 동시에 호출하는 방법, 복잡한 문서들을 기반으로 작동하는 RAG 에이전트, 그리고 데이터베이스와 대화하는 Text-to-SQL 에이전트 등 훨씬 더 강력하고 실용적인 에이전트 구축 방법을 A부터 Z까지 상세히 다루고 있습니다.


AI가 당신을 위해 일하게 만들고 싶으신가요? 지금 바로 책을 통해 더 강력한 AI 에이전트 개발에 도전해 보세요!



https://wikibook.co.kr/llm-rag/


이 책은 빠르게 진화하는 AI 기술 트렌드를 단순히 따라가는 데 그치지 않고 실제 구현과 통합에 필요한 핵심 통찰과 실용적인 해법을 제시하는 완성도 높은 실무 가이드입니다. 생성형 AI 기술의 주요 흐름을 실무 관점에서 체계적으로 다뤄 개발자와 기획자 모두가 RAG 시스템을 손쉽게 구축할 수 있도록 구성했습니다.

keyword
작가의 이전글AI에게 물어보면 다 알려주는 데이터 분석