AI가 외부 기능(함수)을 직접 호출하여, 더 정밀하고 실용적인 작업을 수행하는 기능입니다.
사용자:
What’s the weather in Seoul?
→ AI는 날씨 정보를 가져오기 위해 다음과 같은 함수를 호출하려고 시도함:
get_weather("Seoul")
Function Calling을 확장한 개념으로, AI가 다양한 도구(API, 계산기, 웹 브라우저 등)를 자동으로 활용할 수 있게 만든 시스템입니다.
| 구분 | 설명 |
|---|---|
| Function Calling | 미리 정의된 함수를 호출 |
| Tool Calling | 함수뿐 아니라 계산기, 검색기 등 다양한 도구 사용 가능 |
함수나 툴을 쓸 때, AI가 어떤 입력값이 필요한지 이해할 수 있도록 도와주는 명세서입니다.
즉, "이 함수는 이런 식으로 써야 해!"라고 알려주는 구조입니다.
tools = [{
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Name of the city"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Temperature unit"
}
},
"required": ["city"]
}
}]
사용자가 자연어로 질문하면,
AI는 그걸 해석해서 함수(또는 툴)를 호출하고,
해당 함수의 결과를 받아서 자연어로 다시 대답하는 흐름입니다.
즉, 자연어 → 함수 호출 → 결과 → 자연어 응답 으로 이어지는 자동화된 작업 처리 구조라고 볼 수 있어요.
먼저 개발자가 GPT에게 사용할 수 있는 툴을 등록해둡니다.
예: get_weather(location)
이 함수는 "어느 위치의 날씨 정보를 알려주는 함수"라고 가정합니다.
이제 사용자가 질문합니다.
What’s the weather in Paris?
(파리 날씨 어때?)
🔍 이때 모델(GPT)은 질문을 이해한 뒤,
"날씨 관련 정보가 필요하니 get_weather 함수를 호출해야겠다" 라고 스스로 판단합니다.
모델이 위 질문을 바탕으로 적절한 파라미터를 만들어 툴을 호출할 준비를 합니다.
get_weather("paris")
이 과정에서 모델은 자연어 문장을
→ 함수의 입력값 형태로 자동 변환한 것입니다.
즉, 사람의 말 → 코드 입력값으로 변환하는 역할을 수행합니다.
이제 실제로 툴이 호출되어 백엔드에서 실행됩니다.
즉, 이 부분은 GPT가 아닌 시스템/서버 쪽에서 담당합니다.
get_weather("paris")
# → 결과: { "temperature": 14 }
예를 들어, 날씨 API에 요청을 보내고, 파리의 온도 정보를 받아오는 식이죠.
결과적으로 다음과 같은 데이터가 도착합니다:
{ "temperature": 14 }
이제 이 실행 결과를 다시 모델에게 전달합니다.
모델은 기존의 대화 기록과 함께 이 결과도 받습니다.
👀 모델은 이렇게 생각합니다:
“음, 방금 실행한 함수의 결과를 보니 온도가 14도네.
그럼 사용자의 질문에 맞게 자연스럽게 대답을 만들어야겠다!”
모델은 위의 결과 데이터를 바탕으로, 사용자가 이해하기 쉬운 자연어 문장을 생성합니다.
It’s currently 14°C in Paris.
사용자는 단지 "파리 날씨 어때?" 라고 물었을 뿐인데,
그 사이에 GPT는:
까지 모두 자동으로 처리해준 것입니다!
| 단계 | 내용 | 예시 |
|---|---|---|
| 1단계 | 사용자 질문 → 툴 정의 기반 분석 | "What’s the weather in Paris?" |
| 2단계 | 적절한 함수 호출 준비 | get_weather("paris") |
| 3단계 | 툴 실행 (백엔드) | 결과: { "temperature": 14 } |
| 4단계 | 결과 전달 → 모델이 해석 | 모델이 정보 인식 |
| 5단계 | 자연어 응답 생성 | "It’s currently 14°C in Paris." |