내 맥북을 “스마트폰 액션 에이전트”로! – FunctionGemma Ollama 조합 (1편)

FunctionGemma Ollama 조합 액션 에이전트 이미지

지난 편에서 FunctionGemma를 소개를 했는데요. 이번엔 목표를 하나 설정해보겠습니다.

“맥북에 올려둔 로컬 LLM, FunctionGemma Ollama 조합으로
내 스마트폰에서 할 일을 대신 계획하고 실행까지 도와주는 작은 에이전트

이를 위해서 이번 시리즈 전체 흐름은 이렇게 가려고 합니다.

  1. 1편(지금)에서는 다음의 내용을 살펴봅니다.
    • FunctionGemma가 뭔지, 왜 Ollama랑 같이 쓰는지 개념 정리
    • “내 스마트폰 액션 에이전트” 전체 구조(아키텍처) 그림 잡기
    • MacBook 환경 점검 + 준비 체크리스트
  2. 2편에서는 아래의 내용을 다뤄봅니다.
    • Mac에 Ollama 설치
    • Hugging Face에서 FunctionGemma 모델 받는 흐름 이해
    • FunctionGemma를 GGUF로 변환해서 Ollama에 가져오는 전체 과정 개념 정리
    • 간단한 Python 스크립트로 FunctionGemma + 툴 콜링 맛보기
  3. 3편에서는 다음 내용을 말해보려고 합니다.
    • Django 백엔드에서
      • Ollama HTTP API로 FunctionGemma 호출
      • “스마트폰 액션”을 흉내 내는 Python 함수 세트(예: send_message, open_app)를 만들어
      • FunctionGemma가 자동으로 적절한 함수를 고르고 호출하게 만드는
      • “내 스마트폰 액션 에이전트” API & 간단한 웹 UI 구현

3편까지 따라가면,
오늘 일정 요약해서 카톡으로 보내줘” 같은 자연어 명령을 주면

  • 사용자가 웹 UI(또는 간단 폰 브라우저)에서 입력 →
  • Django API → Ollama → FunctionGemma가 “어떤 함수를 어떤 인자로 부를지”를 결정 →
  • 파이썬 쪽에서 실제 함수 실행(처음에는 모의(Mock) 스마트폰 액션)

까지 한 번의 플로우로 굴러가는 그림을 만들 수 있어요.

FunctionGemma Ollama 조합, 한 번에 감 잡기

1. FunctionGemma가 뭐길래?

FunctionGemma 활용 이미지

FunctionGemma는 구글이 최근 공개한,
함수 호출(Function Calling)에만 꽉 집중해서 튜닝된 작은 LLM입니다.

  • 기반 모델: Gemma 3 270M (약 2억 7천만 파라미터)
  • 역할:
    • 잡담용 챗봇이 아니라
    • “자연어 → API/함수 콜 구조”로 바꿔주는 통역사에 가깝습니다.
  • 특징:
    • 텍스트 전용, 최대 32k 토큰 컨텍스트(입력+출력 합) 지원
    • “이런 JSON 스키마의 함수를 사용할 수 있어”라고 알려주면
      → 거기에 맞는 함수 이름과 파라미터를 정확하게 골라서 제안하는 데 특화됨

즉, FunctionGemma는 “생각은 시키되 실제 행동은 파이썬 함수에게 시키는” 구조를 만들 때 딱 맞는 모델이에요.

이번 시리즈에서는 위에서 살짝 언급한대로이 FunctionGemma를

  • MacBook 안에서
  • 로컬로,
  • Ollama를 통해 호출하면서,
  • 스마트폰 관련 함수들을 실행하는 에이전트로 써볼 겁니다.

2. Ollama는 뭐 하는 애지?

Ollama webpage image
(출처: 올라마)

Ollama는 로컬에서 LLM을 쉽게 돌리게 해주는 런타임/서버 플랫폼이에요.

  • ollama run llama3 같은 방식으로 터미널에서 바로 모델 실행
  • HTTP API도 제공 → Python, Django, Node 등 어디서든 쉽게 호출
  • GGUF 포맷 모델을 가져다 “Ollama 모델”로 만들 수 있음 (Ollama Docs)
  • Tool calling(함수 호출)도 Ollama 레벨에서 지원해서, 모델이 어떤 툴을 쓸지 제안하면 코드에서 그 툴을 실행하게 연결할 수 있어요.

이번 시리즈에서 Ollama의 역할은

“FunctionGemma를 맥북 로컬에서 잘 돌릴 수 있게 해주는 엔진 + 게이트웨이

라고 보면 됩니다.

FunctionGemma를 Ollama에서 돌리는 큰 그림

FunctionGemma는 현재 Hugging Face에 공개된 모델로 제공되고,
사용하려면 라이선스 동의가 필요합니다.

Ollama에서 쓰려면 보통 이런 단계가 필요해요.

  1. Hugging Face에서 FunctionGemma 모델 파일(safetensors/weights) 접근권한 수락
  2. GGUF 포맷으로 변환
    • Gemma 계열 모델 → convert_hf_to_gguf.py 같은 스크립트로 변환
  3. 맥북에 변환된 functiongemma-270m.gguf 같은 파일을 둔다.
  4. 같은 폴더에 Modelfile 작성: FROM ./functiongemma-270m.gguf PARAMETER temperature 0.2 PARAMETER num_ctx 8192 SYSTEM """ You are a function calling specialist model. Always respond using the provided tools schema. """
  5. Ollama에 모델 등록: ollama create functiongemma-local -f Modelfile
  6. 이제 명령어로 실행: ollama run functiongemma-local

이 전체 과정을 2편에서 좀 더 구체적으로 정리할 거고,
필요하면 “이미 GGUF로 변환된 FunctionGemma”를 가져오는 변형 흐름도 같이 볼 거예요.

“내 스마트폰 액션 에이전트” 아키텍처 미리 보기

FunctionGemma를 Ollama에서 돌리는 큰 그림 이미지

실제 우리가 만들 구조를 설명해보면 대략 이렇게 됩니다.

  1. 사용자 (스마트폰 브라우저)
    • 간단한 웹 페이지에서 명령 입력
    • 예: “오늘 일정 요약해서 메모 앱에 정리해줘”
  2. Django 웹 서버 (MacBook에서 실행)
    • /api/agent 같은 엔드포인트로 요청 수신
    • 요청 내용을 정제해서 Ollama API로 전달
  3. Ollama + FunctionGemma (MacBook 로컬)
    • Django가 넘긴 함수 스키마 (JSON)와 사용자 요청을 보고
    • "tool": "create_note", "arguments": {...} 같은 형식으로 “어떤 함수를 어떻게 부르라”는 계획을 만들어 줌
  4. Django의 “스마트폰 액션 함수”들
    • create_note, send_message, open_app 같은 파이썬 함수
    • 처음에는 진짜 휴대폰 대신 로컬에서 로그 찍기 / DB에 저장 / Todo 리스트 추가로 흉내
    • 나중에는 iOS Shortcut / Android ADB / Push 서버 등으로 확장 가능
  5. 결과 응답
    • FunctionGemma가 “함수 호출 → 결과 요약문”까지 생성
    • Django가 이것을 다시 웹 UI로 반환
    • 스마트폰 브라우저에서 결과 확인

이 구조를 사용하면

  • LLM은 “어떤 행동을 할지 결정”까지
  • 실제 행동은 전부 내가 짠 파이썬 함수가 담당

하는 식이기 때문에, 보안·안정성 면에서 훨씬 통제가 쉽습니다.

내 MacBook 환경이면 괜찮을까요?

제가 현재 사용 중인 맥북의 환경은 다음과 같습니다.

MacBook Pro, 메모리 16GB, SSD 512GB

FunctionGemma는 270M짜리 굉장히 작은 모델이라, MacBook Pro + 16GB RAM이면 여유롭게 돌릴 수 있는 사이즈입니다.

이 시리즈에서 전제로 두는 기본 사양은

  • CPU: Apple Silicon(M1/M2/M3) 또는 최신 Intel Mac
  • RAM: 최소 8GB (권장 16GB 이상)
  • OS: macOS 14 Sonoma 근처 버전 (Ollama 최신 버전 지원 범위)
  • 필수 설치 예정:
    • Homebrew
    • Python 3.11 근처 버전(정확 버전은 Django/라이브러리와 맞춰서)
    • Ollama for macOS
    • Django, requests 등 Python 패키지

사전 점검용 간단 체크

터미널에서 이런 것들을 미리 확인해두면 좋아요.

# 파이썬 버전 확인
python3 --version

# pip 버전 & 위치
python3 -m pip --version
which python3
which pip3

이번 편에서 꼭 기억하면 좋은 포인트

  1. FunctionGemma
    • “대화 잘하는 애”가 아니라
    • “어떤 함수를 어떤 인자로 호출해야 하는지 잘 정하는 애”다.
  2. Ollama
    • 로컬 LLM 서버 + 모델 매니저 역할
    • GGUF 모델(예: 변환된 FunctionGemma)을 가져다가 한 줄 명령으로 돌리게 해준다.
  3. 스마트폰 액션 에이전트 구조
    • “브라우저 → Django → Ollama(FunctionGemma) → Python 함수 → 결과 응답”
    • LLM은 “생각 / 계획 / 함수 콜 설계”,
      실제 행동은 Django + Python이 담당.
  4. MacBook Pro 16GB 메모리 환경이면
    • FunctionGemma + Django + 약간의 부가 작업까지 충분히 여유로운 수준이다.

용어 정리 (초보자용)

  • FunctionGemma
    구글 Gemma 3 270M 기반의 함수 호출 특화 LLM.
    자연어를 “어떤 함수를 어떤 인자로 호출해야 할지” JSON 구조로 바꿔주는 데 강하다.
  • 함수 호출(Function Calling / Tool Calling)
    LLM이 “그냥 답을 문장으로” 주는 대신,
    {"tool": "send_message", "arguments": {...}}처럼 코드가 실행할 수 있는 형태로 요청을 만들어 주는 방식.
  • Ollama
    Mac/로컬에서 여러 LLM을 쉽고 편하게 돌리게 해주는 로컬 LLM 서버/도구.
    CLI와 HTTP API를 제공하고, GGUF 모델을 간단히 등록해서 쓸 수 있다.
  • GGUF
    llama.cpp 계열에서 쓰는 경량 양자화 모델 포맷.
    대형 LLM/소형 LLM을 로컬에서 돌리기 좋은 형태로 만든 “모델 파일 포맷”이라고 생각하면 편하다.
  • 엣지(Edge or On-device) 모델
    클라우드 서버가 아니라 사용자 기기(폰, 노트북 등)에서 직접 돌리는 AI 모델.
    개인정보 보호, 지연 시간, 오프라인 사용에 강점이 있다. FunctionGemma도 이런 엣지/온디바이스 사용을 겨냥한 모델이다.
  • 스마트폰 액션 에이전트
    “스마트폰에서 실제로 할 일을 대신 생각하고 실행해주는 에이전트”를 이렇게 이해하셔도 무방
    예: 일정 정리, 메시지 보내기, 메모 작성, 앱 열기, 알람 세팅 등.

마무리 & 다음 편 예고

정리해보면, 1편에서는

  • 왜 FunctionGemma Ollama 조합이 “스마트폰 액션 에이전트”에 찰떡인지,
  • 우리가 만들 전체 구조가 어떻게 생겼는지,
  • 그리고 MacBook 환경이 충분히 준비된 상태인지를 확인했습니다.

이제 2편에서는 진짜로 손을 움직여서 다음을 하려고 합니다.

  • Ollama 설치
  • FunctionGemma 모델 다운로드/접근 흐름 정리
  • GGUF 변환 개념
  • 간단한 함수 호출 예제 Python 코드까지 한 번에 가볼게요.

유사한 게시물