3장. 프롬프트 설계
시스템 프롬프트 — 역할과 규칙을 미리 알려 준다
한 줄 요약
시스템 프롬프트(system prompt) 는 대화가 시작되기 전에 모델에게 주는 역할과 규칙입니다. 고객의 질문보다 우선하여, 모든 답변의 소속·말투·범위·길이를 정합니다. Gemini API에서는 system_instruction이라는 이름으로 넣습니다.
1. 질문과 지시는 자리가 다르다
모델에게 보내는 글은 두 부분으로 나뉩니다.
| 자리 | 누가 쓰나 | 내용 | 코드에서 |
|---|---|---|---|
| 시스템 프롬프트 | 개발자 | 역할, 규칙, 금지 사항, 형식 | system_instruction= |
| 사용자 메시지 | 고객 | 그때그때의 질문 | contents= |
둘을 나누는 이유는 우선순위입니다. 시스템 프롬프트는 "이 대화 전체에서 지켜야 할 것"이고, 사용자 메시지는 "지금 처리할 것"입니다. 고객이 "반말로 답해"라고 해도 시스템 프롬프트의 존댓말 규칙이 먼저입니다.
2. 무엇을 적는가 — 네 덩어리
좋은 시스템 프롬프트는 대체로 네 덩어리로 이루어집니다.
| 덩어리 | 답하는 질문 | 하루마켓에서는 |
|---|---|---|
| 역할 | 너는 누구인가 | 온라인 쇼핑몰 '하루마켓'의 고객지원 상담원 '하루' |
| 원칙 | 어떻게 응대하는가 | 존댓말, 먼저 공감, 모르면 모른다고, 확인 안 된 금액·일정은 단정하지 않기 |
| 금지 | 무엇을 하지 않는가 | 책임 회피 표현, 과장 표현, 반말 |
| 형식 | 답은 어떤 모양인가 | 3~5문장, 마지막 문장에서 다음 행동 안내 |
이번 장에서 쓰는 프롬프트의 전문입니다.
당신은 온라인 쇼핑몰 '하루마켓'의 고객지원 상담원 '하루'입니다.
[응대 원칙]
1. 존댓말을 쓰고, 문장은 짧고 명확하게 씁니다.
2. 고객의 불편에 먼저 공감을 표한 뒤 해결책을 안내합니다.
3. 모르는 것은 아는 척하지 않고 "확인 후 안내드리겠습니다"라고 합니다.
4. 확인되지 않은 환불 금액·배송 일정을 단정해서 말하지 않습니다.
[금지 표현]
- "그건 저희 책임이 아닙니다" 등 책임 회피성 표현
- "무조건", "100% 보장" 등 과장 표현
- 반말, 이모티콘 남용
[형식]
- 3~5문장 이내로 답합니다.
- 다음 행동(버튼/메뉴 위치 등)을 마지막 문장에서 안내합니다.
3. 잘 쓰는 요령
구체적으로 씁니다. "친절하게 답하세요"는 모델마다, 실행마다 다르게 해석됩니다. "고객의 불편에 먼저 공감을 표한 뒤 해결책을 안내합니다"는 확인할 수 있는 규칙입니다. 답을 보고 지켰는지 아닌지 가려낼 수 있어야 좋은 규칙입니다.
길이를 숫자로 정합니다. "간결하게"가 아니라 "3~5문장 이내"입니다. 길이는 곧 비용이고, 채팅 화면에서의 읽기 편함입니다.
하지 말아야 할 것을 적습니다. 원칙 3·4번이 특히 중요합니다. "모르면 모른다고 하라", "확인 안 된 금액을 단정하지 마라"는 1장에서 본 환각에 대한 첫 번째 방어선입니다.
덩어리를 나눠 제목을 붙입니다. [응대 원칙], [금지 표현], [형식]처럼 구획을 나누면 모델도 사람도 읽기 쉽고, 나중에 한 부분만 고치기도 쉽습니다.
4. 프롬프트도 코드다
코드에서 이 프롬프트는 HARU_SYSTEM_V1이라는 이름의 문자열입니다. 이름 끝의 V1에 주목하세요.
프롬프트는 한 번 쓰고 끝나지 않습니다. 과정이 진행되면서 규칙이 늘고 문구가 바뀝니다. 그때 "무엇을 바꿨더니 무엇이 달라졌는지"를 알려면 버전을 남기고 비교해야 합니다. 코드를 다루는 방식과 같습니다.
프롬프트 한 줄을 고치면 모든 답변이 달라집니다. 그래서 고친 뒤에는 표준 질문 12개로 "여전히 전부 되는가"를 다시 확인합니다. 이 습관이 과정 내내 이어집니다.
5. 프롬프트가 맡는 일과 맡지 않는 일
시스템 프롬프트는 말투와 태도를 정할 수 있지만 사실을 만들어 주지는 못합니다.
- "하루마켓 상담원"이라고 알려 줘도 모델은 하루마켓의 주문 데이터를 모릅니다.
- "환불 금액을 단정하지 마라"고 하면 지어내는 일은 줄지만, 정확한 금액을 답하게 되는 것은 아닙니다.
사실은 도구(5장~)와 문서 검색(12장~)이 가져옵니다. 프롬프트는 그 사실을 어떻게 말할지를 정합니다.
핵심 정리
- 시스템 프롬프트는 역할·원칙·금지·형식 네 덩어리로 씁니다.
- 고객의 질문(
contents)보다 위에서 작동합니다. - 규칙은 지켰는지 확인할 수 있게, 길이는 숫자로 적습니다.
- 프롬프트는 코드처럼 버전을 남기고 비교합니다.
- 프롬프트는 말투를 정할 뿐, 모르는 사실을 알게 해 주지는 않습니다.