시스템 프롬프트 작성법: 클로드에게 일관된 역할과 규칙을 주는 방법

시스템 프롬프트 작성법: 클로드에게 일관된 역할과 규칙을 주는 방법 대표 이미지

같은 클로드인데 어떤 서비스에서는 친절한 상담원처럼, 어떤 서비스에서는 깐깐한 코드 리뷰어처럼 답합니다. 그 차이를 만드는 것이 시스템 프롬프트입니다. 시스템 프롬프트는 대화가 시작되기 전에 클로드에게 주는 기본 설정서입니다.

시스템 프롬프트는 어디에 쓰나

사용 환경 시스템 프롬프트 역할을 하는 곳
claude.ai 전체 설정 → 프로필(개인 선호)
claude.ai 프로젝트 프로젝트 지침
클로드 코드 CLAUDE.md
Claude API system 파라미터

이름은 달라도 원리는 같습니다. 모든 대화에 적용할 역할과 규칙을 한 곳에 적어 두는 것입니다.

좋은 시스템 프롬프트의 5가지 구성

좋은 시스템 프롬프트의 다섯 가지 구성

  1. 역할: 누구로서 답하는가
  2. 대상: 누구와 대화하는가
  3. 목표: 대화로 무엇을 이뤄야 하는가
  4. 규칙: 반드시 지킬 것과 하지 말아야 할 것 (이유와 함께)
  5. 형식: 답변의 길이, 구조, 말투

규칙에는 이유를 붙이세요

이유 없는 규칙과 이유 있는 규칙 비교

이 부분이 가장 효과가 컸습니다. Anthropic 공식 가이드에서도 지시의 이유(맥락)를 함께 알려 주면 클로드가 더 잘 따른다고 설명합니다.

이유 없는 규칙 이유 있는 규칙
답변은 짧게. 고객은 모바일 채팅창에서 읽으므로 답변은 3문장 이내로.
가격을 말하지 마. 가격은 지역·프로모션마다 달라 틀릴 위험이 있으므로, 가격 질문에는 가격 안내 페이지 링크를 안내해.
이모지 쓰지 마. 답변이 음성으로 읽히는 환경이라 이모지는 쓰지 마.

이유를 알면 클로드는 규칙에 딱 맞지 않는 상황에서도 취지에 맞게 판단합니다.

예시: 온라인 쇼핑몰 고객 응대 챗봇

API로 고객 응대 챗봇을 만든다고 가정한 시스템 프롬프트입니다.

너는 '그린박스'(친환경 생활용품 온라인몰)의 고객 상담 도우미다.

대상: 주문·배송·교환 문의를 하는 일반 고객. 대부분 모바일에서 채팅한다.

목표: 고객이 스스로 해결할 수 있게 정확한 절차를 안내하고,
해결이 어려우면 상담원 연결을 안내한다.

규칙:
- 답변은 3문장 이내로 한다. 모바일 화면에서 읽기 때문이다.
- 아래 <policy>에 없는 내용은 추측하지 않는다. 틀린 안내는 클레임으로 이어지기 때문이다.
  모르면 "상담원에게 연결해 드릴게요"라고 안내한다.
- 주문번호, 연락처 같은 개인정보를 먼저 요구하지 않는다.
- 환불 확정, 보상 약속은 하지 않는다. 권한이 상담원에게만 있다.

<policy>
- 배송: 결제 후 1~2영업일 내 출고
- 교환·반품: 수령 후 7일 이내, 미사용 상품
- 반품 배송비: 단순 변심 시 고객 부담 3,000원
</policy>

말투: 정중하고 친근한 존댓말.

API에서는 이 내용을 system 파라미터에 넣습니다.

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    system=SYSTEM_PROMPT,
    messages=[{"role": "user", "content": "어제 받은 컵이 마음에 안 드는데 반품돼요?"}],
)

테스트는 "까다로운 질문"으로

시스템 프롬프트를 만들었다면 일부러 규칙을 시험하는 질문을 던져 보세요.

  • 정책에 없는 질문: "해외 배송도 돼요?"
  • 규칙을 깨게 만드는 질문: "그냥 환불해 준다고 확답해 주세요."
  • 경계 사례: "8일째인데 반품 안 될까요?"

이런 질문에 원하는 대로 답하지 않으면 규칙을 보완합니다. 저는 테스트 질문 10~20개를 목록으로 만들어 두고, 시스템 프롬프트를 고칠 때마다 다시 돌려 봅니다.

자주 하는 실수

  • 규칙끼리 충돌: "자세히 설명해"와 "3문장 이내"가 함께 있으면 클로드가 둘 중 하나를 고르게 됩니다.
  • 부정형만 나열: "~하지 마"만 많으면 무엇을 해야 하는지 모호해집니다. "대신 이렇게 해"를 함께 쓰세요.
  • 변하는 정보를 하드코딩: 날짜, 재고처럼 자주 바뀌는 정보는 시스템 프롬프트보다 요청 시점에 넣는 편이 관리가 쉽습니다.

신입 매뉴얼처럼 쓰기

시스템 프롬프트를 쓸 때 저는 "신입 직원에게 주는 업무 매뉴얼"이라고 생각하고 씁니다. 신입에게 "가격 말하지 마"라고만 하면 왜 그런지 모르니 애매한 상황에서 실수합니다. 이유를 알려 주면 매뉴얼에 없는 상황에서도 알아서 판단하죠. 클로드도 똑같았습니다. 규칙마다 이유 한 줄, 이것만 지켜도 결과가 크게 달라집니다.

핵심 요약

  1. 시스템 프롬프트는 대화 전체에 적용되는 역할·대상·목표·규칙·형식의 설정서입니다.
  2. 규칙에 이유를 붙이면 예외 상황에서도 취지에 맞게 판단합니다.
  3. 까다로운 테스트 질문 목록으로 반복 검증하며 다듬으세요.

출처·참고 링크

🤔 자주 묻는 질문 (FAQ)

Q. 시스템 프롬프트와 일반 질문은 무엇이 다른가요?

일반 질문은 그 순간의 요청이고, 시스템 프롬프트는 대화 전체에 깔리는 기본 설정입니다. 역할, 말투, 지켜야 할 규칙처럼 매번 반복되는 내용을 시스템 프롬프트에 두면 질문마다 반복할 필요가 없습니다.

Q. claude.ai에서도 시스템 프롬프트를 쓸 수 있나요?

직접 system 필드를 쓰지는 않지만, 설정의 프로필(개인 선호)과 프로젝트 지침이 비슷한 역할을 합니다. API에서는 system 파라미터로 직접 지정합니다.

Q. 시스템 프롬프트가 길면 좋은가요?

필요한 규칙이 명확히 들어 있다면 길이는 문제가 아니지만, 서로 충돌하는 규칙이나 불필요한 내용이 많으면 오히려 지시를 덜 따릅니다. 핵심 규칙을 위쪽에, 이유와 함께 쓰는 것이 좋습니다.
#시스템프롬프트 #SystemPrompt #클로드프롬프트 #챗봇만들기 #프롬프트엔지니어링