함수 호출 및 툴 스키마

발행: (2026년 2월 8일 오후 10:28 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

개요

이 학습 세션에서는 함수 호출 및 도구 스키마—에이전트가 외부 도구와 어떻게 상호작용하는지—를 탐구합니다. 대화는 사용자와 AI 어시스턴트인 Klover 사이의 오고‑받기를 포착하며, 오해, 수정, 그리고 더 깊은 통찰을 강조합니다.

도구 스키마 정의

도구 스키마는 사용 가능한 도구를 나열하는 것 이상으로, 각 도구를 호출하는 방법을 정의합니다. 이는 코드의 함수 시그니처와 유사합니다.

  • Name – 모델이 사용하는 식별자.
  • Description – LLM을 위한 자연어 설명.
  • Parameters – 필수/선택 플래그가 있는 타입이 지정된 필드.

날씨 도구에 대한 예시 스키마:

name: get_weather
description: "Get current weather for a location"
parameters:
  location:
    type: string
    required: true
    description: City name
  units:
    type: string
    required: false
    description: '"celsius" or "fahrenheit"'

스키마가 위치하는 곳

스키마는 모델의 학습 데이터에 포함되지 않습니다. 런타임에 주입되며, 일반적으로 다음 방법으로 제공됩니다:

  • 시스템 프롬프트, 혹은
  • 요청 페이로드의 전용 “tools” 섹션.

모델은 학습 과정에서 스키마 형식을 익히므로, 한 번도 본 적 없는 커스텀 도구와도 작업할 수 있습니다.

전체 라운드‑트립 (LLM ↔ 도구)

  1. Thought – 모델이 도구가 필요하다고 판단합니다.
  2. Action – 도구 호출의 구조화된 JSON 표현을 출력합니다.
  3. Observation – 오케스트레이터가 도구를 실행하고 결과를 캡처해 모델에 다시 전달합니다.
  4. Thought – 모델이 관찰을 통합하고 계속 진행합니다.

예시 도구 호출 출력

{
  "tool": "get_weather",
  "parameters": {
    "location": "Singapore",
    "units": "celsius"
  }
}

LLM은 직접 호출을 실행하지 않으며, JSON을 내보낸 뒤 멈춥니다. 애플리케이션(오케스트레이터)은 다음을 수행합니다:

  • JSON을 파싱한다.
  • 실제 API를 호출한다.
  • API 응답을 관찰로 반환한다.
  • LLM이 다음 생각을 생성하도록 허용한다.

오케스트레이터의 역할

오케스트레이터는 LLM과 외부 도구 사이에 위치하여 필수적인 보호 장치를 제공합니다:

  • Validate – 실행 전에 매개변수를 검증한다.
  • Rate limit – 무한 루프를 방지한다.
  • Filter – 상황이나 권한에 따라 허용되지 않은 도구를 차단한다.
  • Log – 디버깅 및 감사용으로 모든 호출을 기록한다.
  • Sanitize – 도구 출력을 다시 모델에 전달하기 전에 정제한다.

이 레이어가 없으면 악의적인 프롬프트가 모델을 위험한 행동(예: delete_database)으로 유도할 수 있습니다.

잘 작성된 스키마의 중요성

형편없는 스키마는 신뢰성을 떨어뜨립니다:

문제결과
모호한 설명모델이 잘못된 도구를 선택하거나 적절한 도구를 건너뛴다.
잘못된 타입 / 누락된 필수 항목형식이 틀린 요청, 충돌, 혹은 쓰레기 출력이 발생한다.
파라미터 세부 정보 누락모델이 의미를 추측하게 되어 예측 불가능한 호출이 이루어진다.

도구 스키마 설계는 본질적으로 도구를 위한 프롬프트 엔지니어링입니다. 명확한 이름, 정확한 설명, 올바른 타입 지정이 신뢰할 수 있는 에이전트를 만들기 위한 핵심 요소입니다.

세션 세부 정보

  • Date: February 8, 2026
  • Status: Exposure
  • Notes: 사용자는 직관적으로 개념을 ReAct 루프와 연결했으며, 좋은 직감을 보여주었습니다. 내일 검토가 예정되어 있습니다.
0 조회
Back to Blog

관련 글

더 보기 »

ReAct 패턴 — 리뷰

빈 결과 — 다음에 무슨 일이 일어나나요? Klover: 에이전트가 검색 도구를 호출했지만 빈 결과를 반환받습니다. ReAct 루프에서 다음에 일어나는 과정을 단계별로 설명해 주세요 — wh...