XML 태그·역할 부여·예시·명확성·컨텍스트 — 더 이상 감으로 쓰지 않아도 된다
문제 제기: 프롬프트를 열심히 썼는데 왜 결과가 다를까
두 개발자가 Claude API를 쓴다.
한 명은 "이 코드 리뷰해줘"라고 하고,
다른 한 명은 역할을 부여하고 XML로 구조화하고 예시를 3개 넣는다.
결과는 완전히 다르다.
프롬프트 엔지니어링이 "감"의 영역처럼 느껴지는 이유가 있다.
- 어떤 기법이 왜 효과가 있는지,
- 얼마나 넣어야 하는지에 대한 명확한 기준이 없기 때문이다.
이러한 막막함을 풀어주고자 Anthropic이 공식 가이드를 통해 다섯 가지 가이드를 제시하였다.
공감: 예시를 넣었는데 오히려 이상해진다
예시를 넣으면 좋다고 해서 10개를 넣었더니
Claude가 예시의 패턴을 과도하게 따라가 실제 작업에서 이상한 결과가 나왔다.
또는 긴 지시사항을 텍스트로만 썼더니
Claude가 어느 부분이 지시고 어느 부분이 컨텍스트인지 구분하지 못했다.
이런 경험이 있다면 기법을 잘못 적용한 것이 아니라
기법의 세부 사용법을 몰랐던 것이다.
해결: 5가지 기법과 올바른 사용법
기법 1. 명확성과 직접성 — 동료 테스트를 통과해야 한다
Anthropic의 골든 룰이다.
"프롬프트를 최소한의 컨텍스트를 가진 동료에게 보여줬을 때
그들이 혼란스럽다면, Claude도 그럴 것이다."
Claude는 맥락을 모르는 뛰어난 신입사원이다.
더 정확하게 설명할수록 더 나은 결과가 나온다.
나쁜 예:
이 코드 고쳐줘.
좋은 예:
다음 Python 함수는 사용자 입력을 검증합니다.
입력이 비어 있을 때 ValueError를 발생시켜야 하는데 현재 None을 반환합니다.
올바른 예외 처리를 추가해 주세오.
함수 시그니처는 변경하지 마세요.
기법 2. 컨텍스트 추가 — 이유를 알면 더 잘 한다
지시 뒤에 이유를 추가하면
Claude가 목표를 더 잘 이해하고 더 목표에 맞는 응답을 한다.
# 이유 없이
마케팅 이메일에서 마크다운을 사용하지 마세요.
# 이유 포함
마케팅 이메일에서 마크다운을 사용하지 마세요.
이메일 클라이언트 대부분이 마크다운을 렌더링하지 않아
**굵은 글씨**가 그대로 보이기 때문입니다.
이유를 알면 Claude는 유사한 상황에서도 일반화할 수 있다.
기법 3. 예시 — 3~5개, 다양하게, 태그로 감싸라
Anthropic 공식 권장 사항이다.
- 적정 수:
3~5개 - 다양성:
엣지 케이스를 커버하고 충분히 다양하게
(Claude가 의도하지 않은 패턴을 학습하지 않도록) - 태그로 감싸기:
<example> 단수, <examples> 복수 태그 사용
<examples>
<example>
<input>주문이 2일 후에 도착하나요?</input>
<output>배송은 영업일 기준으로 처리됩니다. 정확한 날짜는 주문 확인 이메일을 확인해 주세요.</output>
</example>
<example>
<input>환불 신청하고 싶어요</input>
<output>환불 정책에 대해 안내해 드리겠습니다. 구매 후 30일 이내라면 전액 환불이 가능합니다.</output>
</example>
<example>
<input>비밀번호를 잊어버렸어요</input>
<output>비밀번호 재설정 링크를 이메일로 보내드리겠습니다. 가입하신 이메일 주소를 알려주세요.</output>
</example>
</examples>
Claude가 예시와 지시를 구분할 수 있게 태그로 명확히 분리하는 것이 핵심이다.
기법 4. XML 태그 구조화 — 복잡한 프롬프트의 필수 요소
지시사항·컨텍스트·예시·변수 입력이 섞인 복잡한 프롬프트에서 XML 태그를 사용하라.
잘못 해석할 위험을 줄일 수 있다.
<instructions>
고객 지원 티켓을 분류하세요. 카테고리는 billing, technical, general 중 하나입니다.
각 티켓에 대해 카테고리와 우선순위(high/medium/low)를 JSON으로 반환하세요.
</instructions>
<context>
이 회사는 구독 기반 SaaS 서비스입니다.
결제 문제는 항상 high 우선순위입니다.
</context>
<input>
{{customer_ticket}}
</input>
다중 문서 처리 시 권장 구조:
<documents>
<document index="1">
<source>Q2_report.pdf</source>
<document_content>...</document_content>
</document>
<document index="2">
<source>market_analysis.pdf</source>
<document_content>...</document_content>
</document>
</documents>
기법 5. 역할 부여 — 한 문장도 충분하다
시스템 프롬프트에 역할을 부여하면 Claude의 동작 방식과 어조가 해당 역할에 맞게 조정된다.
Anthropic이 강조하는 것은 한 문장도 효과가 있다는 것이다.
# 단순하지만 효과적인 역할 부여
system="You are a helpful coding assistant specializing in Python."
# 더 구체적인 역할
system="당신은 10년 경력의 시니어 백엔드 엔지니어입니다.
코드 리뷰 시 보안 취약점과 성능 문제를 중심으로 검토하며,
수정 제안은 구체적인 코드 예시와 함께 제공합니다."
롱컨텍스트의 핵심 팁 — 쿼리를 마지막에 배치하면 30% 향상
Anthropic 공식 가이드가 수치를 제시한다.
20K+ 토큰의 긴 문서 작업에서 쿼리(질문)를 프롬프트 하단에 배치하면 성능이 최대 30% 향상된다.
특히 복잡한 다중 문서 입력에서 두드러진다.
# 권장 순서
[긴 문서들 - 프롬프트 상단]
[지시사항]
[예시]
[질문/쿼리 - 프롬프트 하단] ← 여기에 배치
마치며
프롬프트 엔지니어링은 감이 아니다.
Anthropic이 공식 가이드에서 제시한 5가지 기법에는 각각 명확한 이유가 있다.
- 명확성으로 오해를 없애고,
- 컨텍스트로 목표를 공유하고,
- 예시로 패턴을 전달하고,
- XML로 구조를 잡고,
- 역할로 동작을 조율한다.
이 다섯 가지를 순서대로 적용하면 동일한 모델에서 완전히 다른 품질의 결과를 얻을 수 있다.
📎 참고 출처
- Anthropic 공식 Prompting Best Practices: https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices
'AI' 카테고리의 다른 글
| 인코더를 없앴더니 성능은 올라가고 메모리는 절반이 됐다 — Gemma 4 12B 아키텍처의 진짜 의미 (1) | 2026.06.08 |
|---|---|
| 클라우드 없이도 된다 — Gemma 4 12B, 16GB 노트북에서 돌아가는 멀티모달 AI의 실체 (0) | 2026.06.06 |
| '이거 전체 다 해줘' — AI에게 큰 작업을 통째로 맡기는 사람들의 비밀 (1) | 2026.06.04 |
| 월 100달러 AI 구독 전쟁 — Google AI Ultra, Claude Max, ChatGPT Pro 중 무엇을 골라야 하는가? (0) | 2026.06.02 |
| '동료'를 만드는가 vs '일꾼'을 만드는가 — Anthropic과 OpenAI의 철학이 만든 다른 AI 도구 (1) | 2026.05.31 |