실무 Multi-Agent 오케스트레이션 5장 · Function Calling 원리 6 / 7 ← 이전목차다음 → TechLead Cro

5장. Function Calling 원리

정리와 체크리스트

5장에서 배운 것

  • 지식 컷오프 — 모델의 학습이 끝난 시점. 그 뒤의 일과 공개되지 않은 데이터는 모델 안에 없습니다.
  • Function Calling — 모델이 "이 함수를 이 인자로 불러 달라"는 요청을 응답으로 보내는 기능입니다. 실행은 코드가 합니다.
  • 도구 선언 — 이름, 설명, 인자의 형식을 적은 안내문. 모델은 이것만 보고 판단합니다.
  • function call — 모델이 보낸 결정. 함수 이름과 인자가 들어 있습니다.
  • function response — 함수의 실행 결과를 모델에게 돌려주는 조각. role="user"로 보냅니다.
  • 왕복 — 선언 → 결정 → 실행 → 반환. 모델을 두 번 호출합니다.

한눈에 보는 핵심

# ① 선언과 함께 첫 번째 호출 — 결정을 받는다
response = client.models.generate_content(
    model=MODEL, contents=[user_content],
    config=types.GenerateContentConfig(
        tools=[tool],
        automatic_function_calling=types.AutomaticFunctionCallingConfig(disable=True),
    ),
)
fc = response.function_calls[0]                    # ② 모델의 결정

result = get_order_status(**fc.args)               # ③ 실행 — 우리 코드

final = client.models.generate_content(            # ④ 반환 — 두 번째 호출
    model=MODEL,
    contents=[
        user_content,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(name=fc.name, response={"result": result})]),
    ],
    config=types.GenerateContentConfig(tools=[tool]),
)
모델이 한 일 우리 코드가 한 일 개발자가 정한 일
도구가 필요한지 판단 함수 실행 어떤 도구를 줄지
문장에서 인자를 찾아 넣기 결과를 모델에게 돌려주기 도구의 이름과 설명
결과를 문장으로 풀어 쓰기 (검사, 거부, 기록을 넣을 수 있음) 도구가 돌려줄 값

체크리스트

  • [ ] 모델이 원리상 알 수 없는 정보 세 갈래를 말할 수 있다.
  • [ ] "Function Calling은 모델이 함수를 실행하는 기능이다"가 왜 틀린 말인지 설명할 수 있다.
  • [ ] 왕복의 네 단계를 순서대로, 각 단계의 주체와 함께 말할 수 있다.
  • [ ] 도구 선언의 세 항목(이름, 설명, 인자의 형식)이 각각 무엇에 쓰이는지 말할 수 있다.
  • [ ] 모델이 함수의 코드를 보지 못한다는 사실이 선언 작성에 주는 의미를 설명할 수 있다.
  • [ ] 두 번째 호출의 contents에 세 덩어리를 모두 넣는 이유를 설명할 수 있다.
  • [ ] 실행 결과를 어떤 role로 보내는지 안다.
  • [ ] 실험 3의 "내일 도착 예정"이 어디서 온 말인지 설명할 수 있다.
  • [ ] 위험한 일을 프롬프트로 금지하는 것과 도구 목록에 넣지 않는 것의 차이를 설명할 수 있다.
  • [ ] lesson05_function_calling.py를 실행해 세 실험의 결과를 확인했다.

한 줄 핵심

모델은 무엇을 부를지 결정하고, 실행은 코드가 합니다. 모델이 할 수 있는 일의 범위는 우리가 준 도구 목록이 정합니다.

← 이전 절따라하기 — 첫 도구 왕복다음 절 →실습문제와 해답
오명운 · macro@prag-ai.com