✅ LLM Function Calling이란?
LLM(Function Calling, 함수 호출)**은 대형 언어 모델(LLM)이 외부 함수(API, 데이터베이스 쿼리 등)를 직접 호출하여 응답을 생성하는 방식입니다.
이 기능을 활용하면 LLM이 단순한 텍스트 생성이 아니라, 코드 실행, API 요청, 데이터 검색 등 다양한 작업을 수행할 수 있습니다.
📌 기존 LLM의 한계
- 일반적인 LLM은 정적 정보(사전 학습 데이터) 기반으로 답변을 생성합니다.
- 실시간 데이터나 특정 기능(API 요청, DB 조회 등)을 수행할 수 없음.
📌 Function Calling으로 해결 가능!
- LLM이 적절한 함수를 자동으로 선택하고 실행할 수 있음
- LLM이 직접 API를 호출하거나, 코드를 실행하여 최신 정보를 반영한 응답을 제공할 수 있음
- 예: “오늘 서울 날씨 어때?” → LLM이 get_weather() 함수를 호출하여 API에서 최신 날씨 데이터 가져옴
✅ 1. Function Calling의 주요 흐름(Flow)
1. 사용자의 입력을 LLM이 분석
2. 어떤 함수가 적절한지 판단하고 해당 함수 호출
3. 실제 함수 실행 후 결과를 LLM이 응답에 반영
4. 최종적으로 사용자에게 완성된 응답을 제공
📌 예제:
사용자가 “현재 비트코인 가격은?” 이라고 질문하면?
- LLM은 get_crypto_price("BTC") 함수가 적절하다고 판단
- 해당 함수를 호출하여 실시간 데이터를 가져옴
- 결과 값을 응답에 포함하여 출력
✅ 2. Function Calling이 가능한 주요 프레임워크
1️⃣ OpenAI GPT-4 Function Calling
- OpenAI의 최신 모델(GPT-4-turbo)은 Function Calling을 지원
- API를 통해 특정 함수를 호출하도록 설정 가능
- 자동 호출(Auto function calling) 지원
• 예제 코드:
import openai
client = openai.OpenAI()
functions = [
{
"name": "get_weather",
"description": "현재 날씨 정보를 가져옵니다.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "날씨를 조회할 지역"}
},
"required": ["location"]
}
}
]
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": "서울의 날씨 알려줘"}],
functions=functions,
function_call="auto"
)
print(response)
📌 실행 흐름
1. 사용자의 질문 “서울의 날씨 알려줘” 입력
2. get_weather 함수가 적절하다고 판단됨
3. API를 통해 날씨 정보를 가져와 LLM 응답 생성
2️⃣ LangChain Function Calling
LangChain을 활용하면 다양한 외부 시스템(API, DB 등)과 연동할 수 있음.
from langchain.chat_models import ChatOpenAI
from langchain.schema import SystemMessage, HumanMessage, AIMessage
from langchain.tools import Tool
# Function 정의
def get_weather(location: str) -> str:
return f"{location}의 현재 날씨는 맑음, 기온 20도입니다."
# LangChain Function Calling 설정
tools = [
Tool(
name="get_weather",
func=get_weather,
description="현재 날씨 정보를 가져오는 함수"
)
]
llm = ChatOpenAI(model_name="gpt-4-turbo", openai_api_key="your-api-key")
llm_with_tools = llm.bind_tools(tools)
# 실행
messages = [HumanMessage(content="서울 날씨 알려줘")]
response = llm_with_tools.invoke(messages)
print(response)
📌 LangChain의 Function Calling 특징
- 여러 개의 함수(도구) 설정 가능
- 함수를 자동 실행하거나, LLM이 선택적으로 호출 가능
- OpenAI, Hugging Face 등 다양한 모델과 연동 가능
✅ 3. Function Calling이 사용되는 주요 사례
✅ 1️⃣ 실시간 데이터 검색
• 환율, 주식 가격, 날씨 등의 최신 정보를 API에서 가져와서 응답
• 예: “현재 비트코인 가격은?” → get_crypto_price("BTC") 호출
✅ 2️⃣ 데이터베이스 조회
• 사용자의 요청을 분석하여 적절한 SQL 쿼리를 실행
• 예: “우리 회사의 이번 달 매출 알려줘” → get_sales_data("2024-06") 실행
✅ 3️⃣ 자동화된 작업 수행
• 이메일 전송, 파일 다운로드, 일정 등록 등의 기능을 수행
• 예: “내일 회의 일정 추가해줘” → add_event("회의", "2024-06-15 10:00")
✅ 4️⃣ 코드 실행
• LLM이 특정 코드(Python, SQL 등)를 실행하여 결과를 반환
• 예: “2의 10제곱은?” → execute_python_code("2**10") 실행
결론
✅ LLM Function Calling은 단순 텍스트 생성이 아니라, 실제 함수(API, DB 쿼리, 자동화 기능)를 실행할 수 있도록 확장하는 기능
✅ OpenAI GPT-4-turbo, LangChain 등에서 Function Calling을 지원
✅ 실시간 데이터 조회, DB 검색, 자동화 기능 수행 등 다양한 분야에서 활용 가능
✅ 코드 실행과 외부 API 호출을 통해 LLM의 활용도를 극대화할 수 있음
즉, Function Calling을 활용하면 LLM을 단순한 챗봇이 아니라, 실제 기능을 수행하는 “AI 어시스턴트”로 발전시킬 수 있습니다!
조만간 실제 LLM Function Calling을 사용한 사례를 만들어 공유해보겠습니다. 읽어주셔서 감사합니다.