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

지난 편에서 FunctionGemma를 소개를 했는데요. 이번엔 목표를 하나 설정해보겠습니다.
“맥북에 올려둔 로컬 LLM, FunctionGemma Ollama 조합으로
내 스마트폰에서 할 일을 대신 계획하고 실행까지 도와주는 작은 에이전트”
이를 위해서 이번 시리즈 전체 흐름은 이렇게 가려고 합니다.
- 1편(지금)에서는 다음의 내용을 살펴봅니다.
- FunctionGemma가 뭔지, 왜 Ollama랑 같이 쓰는지 개념 정리
- “내 스마트폰 액션 에이전트” 전체 구조(아키텍처) 그림 잡기
- MacBook 환경 점검 + 준비 체크리스트
- 2편에서는 아래의 내용을 다뤄봅니다.
- Mac에 Ollama 설치
- Hugging Face에서 FunctionGemma 모델 받는 흐름 이해
- FunctionGemma를 GGUF로 변환해서 Ollama에 가져오는 전체 과정 개념 정리
- 간단한 Python 스크립트로 FunctionGemma + 툴 콜링 맛보기
- 3편에서는 다음 내용을 말해보려고 합니다.
- Django 백엔드에서
- Ollama HTTP API로 FunctionGemma 호출
- “스마트폰 액션”을 흉내 내는 Python 함수 세트(예:
send_message,open_app)를 만들어 - FunctionGemma가 자동으로 적절한 함수를 고르고 호출하게 만드는
- “내 스마트폰 액션 에이전트” API & 간단한 웹 UI 구현
- Django 백엔드에서
3편까지 따라가면,
“오늘 일정 요약해서 카톡으로 보내줘” 같은 자연어 명령을 주면
- 사용자가 웹 UI(또는 간단 폰 브라우저)에서 입력 →
- Django API → Ollama → FunctionGemma가 “어떤 함수를 어떤 인자로 부를지”를 결정 →
- 파이썬 쪽에서 실제 함수 실행(처음에는 모의(Mock) 스마트폰 액션)
까지 한 번의 플로우로 굴러가는 그림을 만들 수 있어요.
FunctionGemma Ollama 조합, 한 번에 감 잡기
1. FunctionGemma가 뭐길래?

FunctionGemma는 구글이 최근 공개한,
함수 호출(Function Calling)에만 꽉 집중해서 튜닝된 작은 LLM입니다.
- 기반 모델: Gemma 3 270M (약 2억 7천만 파라미터)
- 역할:
- 잡담용 챗봇이 아니라
- “자연어 → API/함수 콜 구조”로 바꿔주는 통역사에 가깝습니다.
- 특징:
- 텍스트 전용, 최대 32k 토큰 컨텍스트(입력+출력 합) 지원
- “이런 JSON 스키마의 함수를 사용할 수 있어”라고 알려주면
→ 거기에 맞는 함수 이름과 파라미터를 정확하게 골라서 제안하는 데 특화됨
즉, FunctionGemma는 “생각은 시키되 실제 행동은 파이썬 함수에게 시키는” 구조를 만들 때 딱 맞는 모델이에요.
이번 시리즈에서는 위에서 살짝 언급한대로이 FunctionGemma를
- MacBook 안에서
- 로컬로,
- Ollama를 통해 호출하면서,
- 스마트폰 관련 함수들을 실행하는 에이전트로 써볼 겁니다.
2. Ollama는 뭐 하는 애지?

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에서 쓰려면 보통 이런 단계가 필요해요.
- Hugging Face에서 FunctionGemma 모델 파일(safetensors/weights) 접근권한 수락
- GGUF 포맷으로 변환
- Gemma 계열 모델 →
convert_hf_to_gguf.py같은 스크립트로 변환
- Gemma 계열 모델 →
- 맥북에 변환된
functiongemma-270m.gguf같은 파일을 둔다. - 같은 폴더에 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. """ - Ollama에 모델 등록:
ollama create functiongemma-local -f Modelfile - 이제 명령어로 실행:
ollama run functiongemma-local
이 전체 과정을 2편에서 좀 더 구체적으로 정리할 거고,
필요하면 “이미 GGUF로 변환된 FunctionGemma”를 가져오는 변형 흐름도 같이 볼 거예요.
“내 스마트폰 액션 에이전트” 아키텍처 미리 보기

실제 우리가 만들 구조를 설명해보면 대략 이렇게 됩니다.
- 사용자 (스마트폰 브라우저)
- 간단한 웹 페이지에서 명령 입력
- 예: “오늘 일정 요약해서 메모 앱에 정리해줘”
- Django 웹 서버 (MacBook에서 실행)
/api/agent같은 엔드포인트로 요청 수신- 요청 내용을 정제해서 Ollama API로 전달
- Ollama + FunctionGemma (MacBook 로컬)
- Django가 넘긴 함수 스키마 (JSON)와 사용자 요청을 보고
"tool": "create_note", "arguments": {...}같은 형식으로 “어떤 함수를 어떻게 부르라”는 계획을 만들어 줌
- Django의 “스마트폰 액션 함수”들
create_note,send_message,open_app같은 파이썬 함수- 처음에는 진짜 휴대폰 대신 로컬에서 로그 찍기 / DB에 저장 / Todo 리스트 추가로 흉내
- 나중에는 iOS Shortcut / Android ADB / Push 서버 등으로 확장 가능
- 결과 응답
- 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이번 편에서 꼭 기억하면 좋은 포인트
- FunctionGemma는
- “대화 잘하는 애”가 아니라
- “어떤 함수를 어떤 인자로 호출해야 하는지 잘 정하는 애”다.
- Ollama는
- 로컬 LLM 서버 + 모델 매니저 역할
- GGUF 모델(예: 변환된 FunctionGemma)을 가져다가 한 줄 명령으로 돌리게 해준다.
- 스마트폰 액션 에이전트 구조는
- “브라우저 → Django → Ollama(FunctionGemma) → Python 함수 → 결과 응답”
- LLM은 “생각 / 계획 / 함수 콜 설계”,
실제 행동은 Django + Python이 담당.
- 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 코드까지 한 번에 가볼게요.






