
Gemma4 12B의 양자화와 커스텀 에이전트처럼 사용할 수 있는 방법을 찾아보았다
요약
Gemma4 12B 모델을 활용하여 커스텀 에이전트와 유사한 동작을 구현하는 방법을 탐구합니다. Continue의 Prompts와 Rules 기능을 조합하여 시스템 프롬프트의 한계를 극복하고 자동 로깅 규칙 등을 설정하는 실전 가이드를 제공합니다.
핵심 포인트
- Gemma4에서 시스템 프롬프트가 반영되지 않는 문제 해결 방안 제시
- Continue의 Prompts와 Rules를 활용한 커스텀 에이전트 구현
- 4bit 양자화 모델(gemma4:12b-it-qat) 사용 및 테스트 방법
- 프롬프트와 규칙 조합을 통한 자동 로깅 규칙 작성 예시
지난 기사에서는 Gemma4 12B를 사용하여 VS Code 상에서 에이전트(Agent)를 이용할 수 있음을 확인했습니다.
다만 이때, 에이전트에 시스템 프롬프트 (System Prompt)를 심을 수 있는 것처럼 보였으나, 실제로는 반영되지 않는 듯했습니다.
그래서 조금 더 커스텀 에이전트 (Custom Agent)처럼 사용할 수 있는 방법이 없는지 찾아본 내용입니다.
지난 기사의 보충 자료가 되므로, 우선 지난 기사를 봐 주시기 바랍니다.
또한 현장에서 Gemma4는 양자화 (Quantization)를 전제로 모델이 만들어지고 있다는 이야기도 들었기에, 양자화된 모델로 실천해 보겠습니다.
에이전트에 대한 커스터마이징 (Customizing)은 할 수 없었지만, 프롬프트 (Prompts)와 규칙 (Rules)을 조합하면 커스텀 에이전트와 같은 거동을 하게 할 수 있을 것 같다는 점까지 파악했습니다.
Gemma4 12B의 4bit 양자화 모델 gemma4:12b-it-qat를 사용하여 동작은 했으나, 메모리 사용량은 거의 동일했습니다.
원래 gemma4:12b로 양자화된 모델이 다운로드되어 있을 가능성이 있어 보입니다.
이 기사를 보시기 전에 지난 기사를 봐 주시기 바랍니다. 이 기사를 보고 계신다는 전제하에 이야기를 진행하겠습니다.
지난 기사에도 썼지만, continue의 config.yaml에 있는 baseAgentSystemMessage 등의 요소는 적어도 Gemma4에서는 전혀 반영되지 않는 듯합니다.
하지만 그것만으로는 재미가 없기에, 어떻게 하면 에이전트를 사용하기 쉽게 만들 수 있을지 조사해 왔습니다.
continue에서는 기능으로서 프롬프트 (Prompts)와 규칙 (Rules)을 사용할 수 있습니다.
이름만 들으면 다른 서비스에도 있는 것이지만, 특히 규칙 (Rules)은 사용 편의성이 다른 서비스와 다르므로 설명해 두겠습니다.
| 이름 | 배치 장소 | 용도 |
|---|---|---|
| Prompts | .continue/prompts/ | 사용자가 /명령어로 명시적으로 사용하는 기능 |
| Rules | .continue/rules/ | 프롬프트로부터 추측하여 사용하는 기능 |
Prompts 내의 내용에 따라 Rules가 자동으로 동작하는 구조도 만들 수 있습니다.
이번에는 이것을 이용하여 매우 간단한 자동 로깅 규칙 (Logging Rule)을 작성합니다.
이번에는 이런 느낌으로 만들어 보겠습니다.
---
name: logging
description: 로그에 남길 요건이 있는 경우에 사용. 정해진 장소에 로그를 출력함
...
테스트를 위해 일단 간단히 특정 파일을 읽게 하고 그것을 반환하기만 하는 프롬프트 (Prompt)를 만듭니다.
동시에 로그에 남기도록 지시하고, 규칙 (Rule)을 사용하도록 시킵니다.
read-test-prompts
---
name: read-test
description: 특정 파일의 내용을 읽고 응답함
...
./resources/test.md에는 적당히 12345라고 적어 두었습니다.
채팅창에서 /를 입력하면 작성된 Prompts가 표시되므로, 그것을 선택하여 실행시킵니다.
여기서는 모델로 후술할 4bit 양자화 모델인 Gemma4 12B를 사용했지만, 테스트할 때는 일반적인 gemma4:12b로도 문제없습니다. 4bit 양자화 모델의 사용법은 후술합니다.
실행하면 1회 PowerShell 명령 실행 허가를 요청하므로 그것을 허가합니다.
그러면 파일을 읽어 들여 그것을 로그에 출력해 줍니다.
에이전트에게 시킬 프롬프트 (Prompts)나 규칙 (Rules)을 작성해 두면 커스텀 에이전트 같은 동작을 시킬 수 있을 것 같습니다.
솔직히 그리 똑똑하지는 않습니다. 솔직히 3년 전쯤의 빈약한 온라인 모델을 상대하고 있는 정도의 레벨이라고 생각하는 편이 좋습니다.
방금 제시한 규칙 (Rule)에 대해서도, 사실 겨우 이 정도의 일을 시키기 위해 꽤 많은 시간을 쓰고 있습니다.
아무래도 Gemma4에 빌트인 (Built-in)된 명령어가 적고, 또한 머리도 좋지 않아서, 로그에 추가하는 것은 상당히 구체적인 지시를 쓰지 않으면 생각한 대로 되지 않았습니다.
반대로, 평소에 얼마나 모호한 지시를 하고 있는지를 재인식하게 되었습니다.
이미지상으로는, 신입 사원에게 보내는 자료를 작성하는 정도의 레벨이라면 잘 될 것 같은 느낌이 들고 있습니다.
세세한 지시를 하기보다 대략적인 지시를 내리고 시키는 편이 퍼포먼스 (Performance)가 높을 것 같습니다.
일단 그것으로 만들어 달라고 하는 것만으로도 자료 작성에는 상당히 편해졌습니다.
무엇보다 완전히 거리낌 없이 몇 번이고 던질 수 있으므로 (전기세를 제외하면), 벽치기 (Wall-hitting, 아이디어 브레인스토밍)에 딱 좋다고 생각했습니다.
도구는 어떻게 쓰느냐에 달렸다는 느낌입니다.
로컬 LLM은 온라인 LLM보다 2~3년 정도 뒤처져 성능이 따라온다고들 말하는데, 실제로 이번에 사용한 Gemma4 12B의 경우 파라미터 수가 12B로 상당히 소규모임에도 불구하고 제법 괜찮은 결과물을 만들어낼 수 있습니다.
앞으로 진화가 더 진행되어 로컬에서 구동 가능한 LLM 중에서도 고성능 모델이 등장한다면, 불필요한 비용을 크게 신경 쓰지 않고 실행할 수 있게 되어 심리적 장벽이 낮아질 것이라고 생각합니다.
또한 2026년 6월부터 GitHub Copilot의 제한이 매우 엄격해지며, 만약 향후 OpenAI나 Anthropic이 이를 따른다면 온라인 LLM을 가볍게 사용하지 못하게 될 가능성도 있습니다.
그러한 규제가 있더라도 로컬에서 실행한다는 탈출구가 있다면 대처하기가 쉬울 것이라고 생각했습니다.
Gemma4는 양자화 (Quantization)를 전제로 모델이 만들어졌다는 이야기는 아래 URL에 있었습니다.
양자화에 대해서는 저도 아직 완전히 이해하지 못했지만, 일단은 모델을 경량화하는 기술이라고 파악해 두시면 이번 글을 읽기가 수월할 것입니다.
앞서 언급한 Prompts와 Rules 검증에서도 4bit 양자화 모델을 이용했습니다.
Ollama에서 채팅창 오른쪽 하단에 있는 모델 목록에서 gemma4:12b-it-qat를 입력하고, 나타나는 선택지를 클릭해 주세요.

모델을 설정했다면 우선 아무 채팅이나 한 번 보내주세요.
모델 다운로드가 시작됩니다.
먼저 채팅을 한 번 보내지 않으면 모델이 다운로드되지 않으며, 후술할 continue의 자동 인식도 이루어지지 않습니다.
반드시 한 번은 채팅을 보내보시기 바랍니다.
위 단계에서 모델 다운로드가 완료되었다면 자동으로 감지될 것입니다.
config.yaml에서 모델을 고정하고 싶다면 model에 gemma4:12b-it-qat라고 설정해 두면 됩니다.
provider는 지난번과 동일하게 ollama로 설정해 주세요.

| 모델 | 메모리 사용량 (실행 시 - 실행 전 VRAM) |
|---|---|
| gemma4:12b | 8.5GB |
| gemma4:12b-it-qat | 8.2GB |
조금 줄어들었네요.
애초에 비양자화 모델의 경우 Google Blog에서는 26.7GB라고 적혀 있으므로, gemma4:12b라고 지정하더라도 양자화 모델이 내려오고 있는 것일지도 모릅니다.
예전에 Llama Guard 4에서 4bit 양자화를 수행했을 때는 훨씬 더 눈에 띄게 줄어들었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기