AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

Gemma 튜토리얼 – 로컬 함수 호출(function calling)로 AI 에이전트 만들기

gemma는 클라우드 API 없이도 로컬에서 에이전트형 워크플로우를 실험할 수 있는 오픈 모델 계열이다. 이 문서는 Gemma의 함수 호출(function calling)을 이용해 “자연어 요청을 함수 호출로 바꾸고, 애플리케이션이 실제 실행을 담당하는” 기본 패턴을 단계별로 정리한다.

함수 호출이란

사용자가 “서울 날씨 알려줘”라고 말했을 때 모델이 직접 날씨를 가져오는 것이 아니라, 아래처럼 구조화된 호출 요청을 만든다.

{
  "name": "get_weather",
  "parameters": {
    "location": "Seoul"
  }
}

애플리케이션은 이 출력을 파싱해 실제 함수를 실행한 뒤, 결과를 다시 모델에 넘겨 최종 답변을 만든다.

1. 함수 스키마를 먼저 정의한다

Gemma에는 사용할 수 있는 함수 이름, 설명, 파라미터 스키마를 명확히 알려줘야 한다.

[
  {
    "name": "get_weather",
    "description": "도시 이름으로 현재 날씨를 조회한다",
    "parameters": {
      "type": "object",
      "properties": {
        "location": { "type": "string" }
      },
      "required": ["location"]
    }
  }
]

2. 출력 형식을 강하게 고정한다

Gemma는 전용 툴 토큰을 자동으로 출력하지 않기 때문에, 개발자가 출력 포맷을 분명히 고정해야 한다.

함수를 호출해야 한다면 반드시
{"name": "...", "parameters": {...}}
형식으로만 답하라. 다른 텍스트는 포함하지 마라.

3. 모델 출력이 함수 호출인지 검사한다

다른 일부 플랫폼처럼 도구 호출 여부를 모델이 자동 태깅해주지 않으므로, 애플리케이션 레이어에서 JSON 구조를 검사해 함수 호출 여부를 판정해야 한다.

4. 실제 함수 실행은 앱이 맡는다

중요한 점은 Gemma가 생성한 호출은 “제안”일 뿐이라는 사실이다. 실행 전 아래 검증이 필요하다.

  • 허용된 함수 이름인지
  • 파라미터 타입이 맞는지
  • 위험한 코드나 파일 접근이 포함되지 않는지

5. 결과를 다시 모델에 넣어 최종 응답을 만든다

함수 결과를 받은 뒤 모델에 다시 전달하면, 자연어 응답으로 마무리할 수 있다. 이 2단계 구조 덕분에 로컬 에이전트에서도 외부 API·파일·도구를 안전하게 연결할 수 있다.

언제 유용한가

  • 로컬 실행형 에이전트 프로토타입
  • 사내 API를 자연어 인터페이스로 감싸는 도구
  • 인터넷 없이도 제한된 기능을 수행하는 온디바이스 앱

관련 문서

  • gemma — Gemma 모델 계열 개요
  • mini-coding-agent — 에이전트 루프 구성 요소를 학습할 수 있는 최소 구현

참고 자료


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)