본문 바로가기
IT

Claude XML 태그 프롬프트 구조화 완전 가이드 — instructions·document·example·quotes 베스트 프랙티스

by 샤나엘 2026. 5. 22.
반응형

Claude XML 태그 프롬프트 구조화 완전 가이드 — instructions·document·example·quotes 베스트 프랙티스

ChatGPT·Gemini는 마크다운이나 자연어 구분자에 강하지만, Claude는 XML 태그로 프롬프트를 구조화할 때 응답 품질이 가장 안정적이다. Anthropic이 학습 데이터에 XML 태그 패턴을 의도적으로 노출시켰기 때문이다. <instructions>, <document>, <example>, <quotes> 같은 태그로 프롬프트를 명확히 분리하면, Claude가 지시와 데이터를 혼동하지 않고 응답 정확도가 눈에 띄게 올라간다.

 

이 글은 XML 태그 프롬프트가 통하는 이유, 자주 쓰이는 태그 종류와 표준 패턴, RAG·문서 분석·예시 학습 시나리오별 실전 코드, 그리고 흔한 함정과 디버깅 팁을 한 번에 정리한다.

Claude XML 태그 프롬프트 구조화

 


01 왜 Claude는 XML 태그에 강한가

Anthropic은 Claude를 학습시킬 때 XML 태그를 의도적으로 데이터에 노출했다. 그래서 같은 정보라도 태그로 구분된 프롬프트가 단순 자연어 프롬프트보다 정확도·일관성이 높다. 이는 GPT나 Gemini에서는 보장되지 않는 Claude 고유 특성이다.

단순 텍스트 vs XML 태그 — 같은 정보, 다른 결과

❌ 단순 텍스트

아래 문서를 요약해 줘.
문서 : 회사 정책은...
요약 형식 : 5문장 이내

vs

✅ XML 태그

<instructions>
요약하라
</instructions>
<document>
회사 정책은...
</document>

💡 핵심 — 지시와 데이터의 명확한 분리

XML 태그는 "이건 지시고 저건 데이터다"를 Claude에게 명시한다. 자연어로 섞어 놓으면 Claude가 문서 안 문장을 지시로 오해하거나, 반대로 지시를 데이터로 처리해 누락할 수 있다.


02 자주 쓰이는 표준 태그 7종

Anthropic 공식 문서와 커뮤니티 사례에서 가장 자주 쓰이는 표준 태그를 정리하면 다음과 같다. 태그 이름 자체는 자유롭지만, 표준화된 이름을 쓰면 Claude가 더 잘 인식한다.

태그 용도 활용 예
<instructions> 지시·작업 명세 "X를 요약하라"·"Y를 추출하라"
<document> 입력 문서 분석 대상 텍스트·PDF 내용
<example> 예시 (few-shot) 입력·출력 쌍 시연
<context> 배경 정보 사용자 페르소나·상황 설명
<quotes> 관련 인용 추출 RAG에서 근거 문장 표시
<formatting> 출력 형식 "JSON 객체로"·"마크다운 표로"
<thinking> 사고 과정 출력 요청 "먼저 생각하고 그다음 답하라"

03 RAG 시나리오 — document + quotes 활용

긴 문서에서 답을 찾는 RAG(Retrieval-Augmented Generation) 작업에서는 <document>로 문서를 감싸고, Claude에게 답변 전에 <quotes> 태그로 근거 문장을 먼저 추출하라고 요청하면 환각을 크게 줄일 수 있다.

# RAG 프롬프트 예시
prompt = """
<instructions>
다음 문서를 읽고 사용자 질문에 답하라.
답변 전에 관련 인용 문장을 <quotes> 태그로 먼저 표시하라.
문서에 없는 내용은 "모름"이라고 답하라.
</instructions>

<document>
<source>company_policy.pdf, p.12</source>
<content>
원격 근무는 매월 8일까지 허용되며, 사전 승인이 필요하다...
[긴 내용]
</content>
</document>

<question>
원격 근무 한도는 며칠인가요?
</question>
"""

# 예상 응답
# <quotes>원격 근무는 매월 8일까지 허용되며...</quotes>
# <answer>매월 최대 8일까지 가능합니다.</answer>

📊 데이터 포인트 — 환각 감소 효과

quotes 태그로 근거 추출을 먼저 요청하면 답변 정확도가 통상 15~25%포인트 상승한다. Claude가 본인의 답변을 문서 인용으로 검증하는 효과 + "모름" 응답을 허용함으로써 추측 답변 감소.


04 Few-shot 예시 — example 태그 활용

원하는 출력 형식이 명확할 때 <example> 태그로 입력·출력 쌍을 시연하면 Claude가 패턴을 학습한다.

# Few-shot 분류 예시
prompt = """
<instructions>
다음 고객 문의를 카테고리로 분류하라.
카테고리 : [환불, 배송, 상품 문의, 기타]
</instructions>

<examples>
  <example>
    <input>주문한 옷이 사이즈가 안 맞아서 환불받고 싶어요</input>
    <output>환불</output>
  </example>
  <example>
    <input>택배가 일주일째 안 오는데 어디까지 왔나요</input>
    <output>배송</output>
  </example>
  <example>
    <input>이 제품 방수 기능이 있나요?</input>
    <output>상품 문의</output>
  </example>
</examples>

<query>
포장이 찢어진 상태로 도착했어요. 새 상품으로 받고 싶어요.
</query>
"""

# 예상 응답 : 환불 또는 배송 (어느 카테고리든 패턴 학습 후)

05 복합 프롬프트 — 4개 태그 조합

instructions + context + document + formatting 4개 태그를 조합하면 복잡한 작업도 안정적으로 처리된다.

표준 4태그 구조 — 권장 순서

1. <context> — 배경·페르소나·환경 설명
2. <instructions> — 작업 명세·제약 조건
3. <document> 또는 <examples> — 데이터·예시
4. <formatting> — 출력 형식 (JSON·표·번호 리스트 등)

XML 태그는 Claude에게
"이건 명령, 저건 데이터"를 명확히 알려준다.

 

단순 자연어 프롬프트의 응답 변동성을 크게 줄이는, Claude 고유의 가장 강력한 기법이다.


06 함정과 디버깅 팁 5가지

① 닫는 태그 누락

<document> 만 있고 </document> 없으면 Claude가 뒷부분도 데이터로 인식. 짝 맞춤 필수.

② 태그 이름 불일치

한 프롬프트에 <doc> · <document> · <source> 혼용 → 헷갈림. 일관성 유지.

③ 데이터 안 태그 충돌

document 내부에 또 <document> 가 들어가면 파싱 혼동. 데이터 안 XML은 entity로 이스케이프(&lt;).

④ 태그 이름이 너무 일반적

<data> · <text> 같은 너무 일반적 태그는 효과 약함. <document> · <email> · <code> 처럼 의미 있는 이름.

⑤ 출력 태그도 요청

"답변을 <answer> 태그로 감싸라"고 요청하면 결과 파싱이 쉬워진다. 후처리 단계에서 정규식·XML 파서로 안전하게 추출 가능.


07 Q&A 자주 묻는 질문 5가지

QXML 태그가 GPT·Gemini에도 효과가 있나요?

A약간 효과는 있지만 Claude만큼 일관적이지는 않다. GPT는 마크다운·삼중 따옴표 구분자가 더 자연스럽고, Gemini는 자연어 구분자에 강하다. XML 태그는 Claude 고유의 강점.

Q태그 이름을 자유롭게 지어도 되나요?

A자유롭게 가능하다. Anthropic은 "특정 태그만 학습됐다"는 식의 매직 키워드를 의도적으로 만들지 않았다. 다만 표준 이름(instructions·document·example·quotes·context·formatting)이 가장 안정적이라 권장.

Q태그가 너무 많으면 안 되나요?

A한 프롬프트에 5~7개 정도가 적정. 그보다 많으면 구조가 복잡해져 Claude도 혼동한다. 같은 정보가 중복되면 통합·정리.

Qdocument 안에 또 XML이 있으면 어떻게 처리하나요?

Adata section 내부 XML은 &lt;·&gt; entity로 이스케이프하거나, 외부 감싸는 태그를 <document_xml> 같이 다르게 지정해 충돌 회피. CDATA 섹션은 Claude에서 지원하지 않으니 entity 이스케이프 권장.

Q응답에서 XML 태그를 깔끔하게 파싱하려면?

A응답에 <answer>·<quotes> 같은 출력 태그를 강제하고, Python의 BeautifulSoup·lxml로 파싱하거나 정규식 r"<answer>(.*?)</answer>"로 추출. JSON 출력이 필요하면 instructions에 "JSON 객체로만 응답"이라고 명시.


결론

XML 태그 구조화는 Claude를 안정적으로 운영하기 위한 가장 가성비 좋은 기법이다.

 

핵심 4태그 — instructions(지시), document(데이터), example(예시), formatting(출력 형식). 이 4개만 익히면 90% 이상의 프롬프트가 명확해진다.

RAG 시나리오 — document + quotes 조합으로 환각 감소. Claude에게 답변 전에 근거 인용을 먼저 추출하라고 지시.

Few-shot 학습 — examples > example 중첩 구조로 입력·출력 쌍 시연. 분류·추출·변환 작업에 효과적.

디버깅 원칙 — 닫는 태그 짝 맞춤·이름 일관성·중첩 충돌 회피. 응답에도 출력 태그 강제로 파싱 안정성 확보.


✅ XML 태그 프롬프트 체크리스트

 

1표준 태그(instructions·document·example·formatting) 우선 사용.
2닫는 태그 빠짐 없이 짝 맞춤 확인.
3RAG 시나리오는 quotes 태그로 근거 추출 먼저 요청.
4Few-shot 시연은 examples > example 중첩 구조.
5출력에도 <answer> 같은 태그 강제로 파싱 용이.
6한 프롬프트에 태그 5~7개 적정, 그 이상은 통합 정리.
7data 안 XML은 entity 이스케이프로 충돌 회피.

본 글은 정보 정리·교육 목적이며 Anthropic의 공식 가이드를 갈음하지 않는다. 프롬프트 엔지니어링 베스트 프랙티스는 Claude 버전·시점에 따라 변동되므로 적용 직전 platform.claude.com/docs/en/build-with-claude/prompt-engineering/use-xml-tags 공식 문서를 확인해야 한다.

 

#XML태그 #Claude프롬프트 #PromptEngineering #Anthropic #instructions태그 #document태그 #example태그 #quotes태그 #FewShot #RAG #프롬프트구조화 #ClaudeAPI #Sonnet4.6 #LLM구조화 #환각감소

반응형

댓글