Function Calling
Function Calling은 LLM이 "이 함수를 호출하면 좋겠다"라고 판단하면 개발자가 만든 함수를 실행하는 기능 def get_weather(city): 함수를 개발했다면 사용자가 '서울날씨알려줘'라했을때 LLM이 get_weather를 호출하도록 결정하는것 .
수동루프는 초기 Function Calling 방식으로 LLM이 함수를 직접 실행하지않고 '이 함수를 호출하세요'라고 알려준다. 개발자가 함수호출을 읽고 실제함수를 실행하고 결과를 다시 LLM에게 보내야한다.
자동실행은 최신 SDK 에서의 자동과정으로 @function_tool만 작성하면 Agent가 Tool을 선택하고 실행, 결과전달, 다음 Tool 실행 최종답변까지 모두 자동으로 처리한다 .
Docstring
"이 함수를 인자로 호출하세요"
LLM은 함수를 직접 실행하지못한다 다만 이 함수를 이런 인자로 불러달라는 json 요청을 만들 수 있다. LLM은 토큰을 생성하는 기계일 뿐 파이썬 코드를 돌릴 능력이 없다는 것을 이해하자.
LLM은 함수본문 코드를 볼 수 없고 함수이름, 독스트링, 인자타입만 보고 도구사용을 판단함으로 독스트링을 명확하게 쓰는 것이 도구 성능을 좌우한다.
LLM이 좋은 판단을 하기위해 좋은 독스트링이 필요하다 .
def funtion():
"""독스트링"""
function calling - 수동루프
사용자 요청 - LLM JSON 생성 - 개발자가 JSON으로 함수실행 - 결과 LLM에게 전달 - LLM 최종응답
from openai import OpenAI
import json
client = OpenAI()
# 1. LLM에게 요청
response = client.responses.create(
model="gpt-5",
input="서울 날씨 알려줘."
)
# 2. LLM이 함수 호출 JSON 생성
tool_call = response.output[0]
args = json.loads(tool_call.arguments)
# 3. 개발자가 함수 실행
result = get_weather(args["city"])
# 4. 결과를 다시 LLM에 전달
final = client.responses.create(
model="gpt-5",
input=[
tool_call,
{
"type": "function_call_output",
"call_id": tool_call.call_id,
"output": result
}
]
)
print(final.output_text)
function calling - 자동실행
최신 OpenAI API에서는 이 과정을 SDK가 자동으로 처리할 수 있다.
사용자 요청 - LLM JSON 생성 - SDK 자동으로 함수실행 - SDK가 결과 LLM에게 전달 - LLM 최종응답
response = client.responses.create(
model="gpt-5",
tools=[get_weather],
input="서울 날씨 알려줘."
)
print(response.output_text)
| 수동 루프 (Manual Loop) | 자동 실행 (Automatic Execution) |
| 개발자가 Tool 실행 | Agent가 Tool 실행 |
| Tool 결과를 다시 LLM에 전달 | 자동 전달 |
| 여러 Tool이면 반복 코드 작성 | 자동으로 반복 |
| 구현이 복잡 | 구현이 간단 |
| 세밀한 제어 가능 | 개발 생산성이 높음 |
'이론' 카테고리의 다른 글
| Agent와 Workflow (0) | 2026.07.15 |
|---|---|
| Agent Loop과 ReAct 패턴 Trimming과 Conversation Summarization (0) | 2026.07.14 |
| Self-Consistency(자기 일관성)이란? (feat.Verify() 프롬프트 기법) (0) | 2026.07.14 |
| CoT란? Chain of Thought, Reasoning Prompt 프롬프트 방법 (" 단계적으로 생각하고 마지막에 최종 답을 제시해.") (0) | 2026.07.14 |
| MCP란? Model Context Protocol: 사용자를 위한 서버가 아니라 AI를 위한 서버 (feat. Function Calling) (0) | 2026.07.14 |