시스템 프롬프트
시스템 프롬프트(System Prompt)는 LLM에게 '너는 누구이고, 무엇을 해야 하며, 무엇을 하지 말아야 하는가'를 정의해 전체 대화의 기준을 잡는 최상위 지시문입니다. 사용자가 직접 입력하는 유저 프롬프트와 달리, 시스템 프롬프트는 앱 개발자가 미리 주입하며 대화 내내 일관된 동작을 보장합니다.
시스템 프롬프트(System Prompt)는 LLM에게 '너는 누구이고, 무엇을 해야 하며, 무엇을 하지 말아야 하는가'를 정의해 전체 대화의 기준을 잡는 최상위 지시문입니다. 사용자가 직접 입력하는 유저 프롬프트와 달리, 시스템 프롬프트는 앱 개발자가 미리 주입하며 대화 내내 일관된 동작을 보장합니다.
왜 중요한가
시스템 프롬프트는 LLM 기반 제품의 '설계 언어'입니다. 사용자가 아무리 자유로운 질문을 해도, 잘 설계된 시스템 프롬프트가 있으면 모델은 정의된 역할·톤·한계 안에서만 응답합니다. ChatGPT, Claude, Gemini 같은 챗봇 제품뿐 아니라 AI 검색 엔진, 코드 에이전트, 고객 지원 봇 등 모든 LLM 애플리케이션이 시스템 프롬프트를 통해 '제품의 성격'을 결정합니다.
구성 요소
역할(Role): "당신은 SaaS 블로그 운영을 돕는 마케팅 카피 전문가입니다." 모델이 어떤 관점에서 응답할지 결정합니다.
목표(Goal): "사용자가 블로그 포스트 초안을 빠르게 작성하도록 돕습니다." 전체 대화의 방향을 제시합니다.
제약(Constraints): "한국어로만 답하세요.", "코드 예시를 포함하지 마세요.", "300자 이내로 답하세요." 원치 않는 동작을 사전 차단합니다.
톤(Tone): "친근하지만 전문적이며, 과장하지 않습니다." 브랜드 목소리를 일관되게 유지합니다.
출력 형식(Format): "답변을 ### 소제목으로 구조화하세요." 후처리 부담을 줄입니다.
지식 경계(Knowledge Cutoff): "최신 정보는 모를 수 있다고 명시하세요." 할루시네이션 리스크를 줄입니다.
도구 설명(Tool Descriptions): 함수 호출을 사용하는 에이전트라면 사용할 수 있는 도구의 목록과 설명을 시스템 프롬프트에 포함합니다.
시스템 프롬프트 vs 유저 프롬프트
| 항목 | 시스템 프롬프트 | 유저 프롬프트 |
|---|---|---|
| 주체 | 앱 개발자 | 실사용자 |
| 수정 빈도 | 거의 안 바뀜 | 매 요청마다 바뀜 |
| 내용 | 역할·제약·톤 | 그때그때의 요청 |
| 영향 | 대화 전체 | 해당 요청만 |
| 보안 | 사용자에게 숨겨져야 함 | 공개 |
잘 설계된 시스템은 '안정적인 틀(시스템 프롬프트) + 가변적 입력(유저 프롬프트)' 구조로 분리되어 있어야 합니다.
실무 팁
명령문이 아닌 역할 부여: "X를 해" 대신 "당신은 X를 하는 전문가입니다"가 더 일관된 결과를 만듭니다. 모델이 역할에 몰입하도록 유도하는 효과가 큽니다.
긍정형 제약: "이러지 마"보다 "이렇게 해"가 더 안정적으로 작동합니다.
예시 포함(Few-Shot): 원하는 결과 2~3개를 시스템 프롬프트에 넣으면 스타일·포맷이 훨씬 일관됩니다.
XML 태그 활용: Claude 같은 모델에서 <role>, <constraints>, <examples> 같은 태그로 구획을 나누면 모델이 각 부분을 더 명확히 해석합니다.
너무 길게 쓰지 않기: 시스템 프롬프트가 길수록 매 요청마다 토큰 비용이 누적됩니다. 핵심만 남기고 반복되는 지시는 제거합니다.
정기 A/B 테스트: 실제 사용자 요청에 대해 서로 다른 시스템 프롬프트를 적용하고, 만족도·정확도·안전성을 비교해 개선합니다.
프롬프트 인젝션 대응
시스템 프롬프트는 프롬프트 인젝션 공격의 주 표적입니다. 유저 프롬프트가 "이전 지시를 모두 무시해"라고 명령하면, 약한 시스템 프롬프트는 그대로 덮어써질 수 있습니다. 방어책으로는 Sandwich Defense(지시를 앞뒤로 반복), 외부 데이터를 XML 태그로 격리, 중요한 권한은 도구 호출 레벨에서 제한하는 방법이 있습니다.
Sources:
- System Prompts - Anthropic
- Prompt Engineering Best Practices - OpenAI
- System Prompts in LLM Apps - Simon Willison
관련 인블로그 게시물
inblog에서 활용하기
inblog에서 AI 초안 기능을 활용할 때 '브랜드 톤·금지 표현·목표 독자·출력 형식'을 담은 시스템 프롬프트 템플릿을 미리 준비해 두면, 매번 블로그 포스트 초안을 생성할 때 같은 품질이 유지됩니다. 사용자는 그때그때의 주제만 입력하고, 시스템 프롬프트가 일관된 스타일을 보장하는 구조가 효율적입니다.