로컬 AI 기초 · 글 11편로컬 AI 기초
  1. 로컬 AI 학습 순서 한눈에 보기
  2. 로컬 AI와 클라우드 AI는 무엇이 다른가
  3. 로컬에서 AI를 돌리는 이유와 한계
  4. 내 PC 사양으로 돌릴 수 있는 모델 고르기
  5. 토큰, 컨텍스트 윈도우, 파라미터, 환각
  6. 공개 모델 계열과 모델 이름 읽는 법
  7. 양자화란 무엇인가
  8. CPU, GPU, 메모리가 하는 일
  9. 작업별로 로컬 모델과 온라인 모델 고르기
  10. 작은 모델에서 더 중요한 프롬프트 기본기
  11. 업무에서 AI를 쓸 때의 안전 습관

이 글에서 다루는 것1B~4B급 로컬 모델에서 결과를 안정시키는 지시문 작성법을 다섯 요소, 세 가지 원칙, 고쳐 쓰기 예시로 정리합니다.

작은 모델은 알아서 해 주지 않습니다

온라인의 대형 모델은 “이거 정리해 줘”처럼 막연하게 말해도 맥락을 짐작해 그럴듯한 결과를 냅니다. 1B~4B급 작은 모델은 그렇지 않습니다. 적어 주지 않은 것은 하지 않고, 적어 준 것도 길어지면 놓칩니다.

강의에서는 이것을 프롬프트가 왜 중요한지 가장 직접 체험하는 방법으로 씁니다. 같은 지시를 큰 모델과 작은 모델에 똑같이 넣어 보면, 작은 모델 쪽에서 지시문의 빈틈이 그대로 드러납니다.

지시문의 다섯 요소

강의 교재가 정리한 좋은 프롬프트의 구조입니다.

요소 적는 내용 예
역할 모델이 어떤 입장에서 답하는가 너는 민원 분류 담당자다
맥락 일의 배경과 읽을 사람 접수된 민원을 담당 부서로 넘기려 한다
작업 무엇을 하라는 것인가 아래 민원을 범주 하나로 분류하라
형식 결과를 어떤 모양으로 내는가 범주 이름만 한 단어로 출력하라
제약 하지 말 것, 지킬 것 목록에 없는 범주는 쓰지 않는다

후배에게 “보고서 좀 써 봐”라고 하는 것과 “내일 결재용으로, 분량은 한 장, 결론은 표로”라고 하는 것의 차이와 같습니다.

작은 모델을 위한 세 가지 원칙

강의의 Ollama 단원에서 정리한 원칙입니다.

1. 지시를 분명하게 적습니다

  • 한 번에 한 가지 일만 시킵니다. “요약하고 분류하고 답변 초안도”라고 하지 않고 세 번에 나누어 부릅니다.
  • 고를 수 있는 답을 목록으로 줍니다. “분류하라”가 아니라 “환경, 교통, 복지, 세무, 기타 중 하나를 골라라”라고 적습니다.
  • 길이를 숫자로 정합니다. “간단히”가 아니라 “3줄 이내”, “30자 이내”라고 적습니다.
  • 답하는 언어를 적습니다. 작은 모델은 한국어 질문에 영어로 답하는 일이 있습니다. “반드시 한국어로 답하라”를 넣습니다.

2. 출력의 모양을 고정합니다

결과를 엑셀 셀이나 다른 프로그램이 받아 쓴다면 모양이 매번 같아야 합니다.

  • “다른 설명 없이 범주 이름만 출력하라”
  • “항목마다 한 줄씩, 앞에 번호를 붙여라”
  • “결과만 출력하고 인사말이나 머리말은 쓰지 마라”

원하는 모양을 예시로 한두 개 보여 주면 더 잘 따릅니다.

3. 넣는 글을 줄입니다

작은 모델은 입력이 길어질수록 지시를 놓칩니다.

  • 일에 필요한 부분만 잘라 넣습니다.
  • 지시는 맨 앞에 두고, 입력 글이 길면 맨 끝에 지시를 한 번 더 적습니다.
  • 지시와 입력 글 사이에 구분선이나 따옴표를 둡니다. 어디까지가 지시이고 어디부터가 처리할 글인지 모델이 헷갈리지 않습니다.

고쳐 쓰기 예시 1: 분류

고치기 전

이 민원 분류해 줘. 골목에 쓰레기가 방치되어 악취가 심합니다

작은 모델은 이 지시에 긴 설명을 붙이거나, 범주를 제멋대로 지어내거나, 영어로 답할 수 있습니다.

고친 뒤

너는 민원 분류 담당자다.
아래 민원을 다음 범주 중 하나로 분류하라.
범주: 환경, 교통, 복지, 세무, 안전, 기타
규칙:
- 범주 이름만 한 단어로 출력한다.
- 목록에 없는 범주는 쓰지 않는다.
- 설명을 붙이지 않는다.

민원: """골목에 쓰레기가 방치되어 악취가 심합니다"""

범주가 열 개를 넘어가면 작은 모델은 구분이 흔들립니다. 강의에서는 범주가 3~5개면 3B급으로 충분하고, 10개가 넘으면 더 큰 모델을 쓰라고 안내합니다.

고쳐 쓰기 예시 2: 요약

고치기 전

아래 회의록 요약해 줘

고친 뒤

아래 회의록을 한국어로 요약하라.
형식:
1. 결정된 사항 (최대 3줄)
2. 담당자와 기한 (있는 경우만)
3. 다음 회의에서 다룰 것 (최대 2줄)
회의록에 없는 내용은 쓰지 않는다. 해당 내용이 없으면 "없음"이라고 쓴다.

회의록:
"""
(여기에 회의록)
"""

위 형식대로 요약만 출력하라.

끝의 한 줄은 지시를 다시 적은 것입니다. 회의록이 길 때 효과가 있습니다.

고쳐 쓰기 예시 3: 모른다고 말하게 하기

작은 모델은 모르는 것을 지어내는 일이 잦습니다. 빠져나갈 길을 지시문에 열어 둡니다.

아래 자료 안에서만 답하라.
자료에 답이 없으면 "확인 후 안내드리겠습니다"라고만 답하라.

시스템 프롬프트로 고정하기

매번 같은 역할과 규칙을 붙여 넣는 것은 번거롭고 빠뜨리기 쉽습니다. 역할과 규칙은 시스템 프롬프트에 한 번 적어 두고, 대화에서는 처리할 글만 넣습니다.

Ollama에서는 대화 중에 다음과 같이 넣을 수 있습니다.

/set system "너는 민원 상담 담당자다. 3줄 이내로 존댓말로 답한다."

업무별로 아예 이름을 붙여 저장해 두려면 Modelfile을 씁니다. 방법은 Modelfile과 파라미터로 업무용 모델 만들기에 있습니다.

설정값도 같이 조정합니다

지시문만으로 안 잡히는 흔들림은 설정값으로 줄입니다.

증상 조정
같은 입력에 답이 매번 다름 temperature를 0.1~0.3으로 낮춤
답이 끝없이 길어짐 num_predict로 최대 길이를 정함
같은 말을 되풀이함 repeat_penalty를 조금 올림
결과를 다시 재현해야 함 seed를 고정

프롬프트를 모델에게 쓰게 하기

지시문을 처음부터 잘 쓰기 어렵다면 큰 모델에게 맡깁니다. 강의에서 메타프롬프트라고 부르는 방법입니다.

  1. 온라인의 큰 모델에 내가 할 일을 대충 설명합니다.
  2. “이 일을 4B급 작은 로컬 모델에게 시킬 프롬프트를 작성해 줘. 역할, 작업, 출력 형식, 제약을 포함하고 짧고 분명하게.“라고 요청합니다.
  3. 받은 프롬프트를 로컬 모델에 넣고 실제 문장 몇 개로 시험합니다.
  4. 틀린 사례를 큰 모델에 보여 주고 프롬프트를 고치게 합니다.

이때 시험용 문장은 실제 자료가 아니라 지어낸 예문을 씁니다.

점검 목록

지시문을 쓴 뒤 확인합니다.

  • 한 번에 한 가지 일만 시켰는가
  • 고를 수 있는 답을 목록으로 주었는가
  • 길이를 숫자로 정했는가
  • 답하는 언어를 적었는가
  • 출력 모양을 정했는가
  • 모를 때 어떻게 답할지 정했는가
  • 지시와 입력 글을 구분했는가
  • 실제 문장 열 개로 시험했는가

다음에 읽을 글