본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 05. 26. 15:09

Anthropic이 프롬프트에 XML 태그를 권장하는 이유를 공식 문서에서 정리하다

요약

Anthropic은 Claude 모델이 XML 태그를 단순 텍스트가 아닌 구조적 언어로 인식하도록 학습되었음을 밝히며, 프롬프트 설계 시 XML 태그 사용을 권장합니다. XML을 활용하면 지시 사항, 문맥, 데이터를 명확히 분리하여 복잡한 작업에서도 응답의 정밀도를 높일 수 있습니다.

핵심 포인트

  • Claude는 XML을 구조적 언어로 내면화하여 처리함
  • XML 태그는 시맨틱 역할 식별 및 어텐션 배분에 도움을 줌
  • 정보 혼재를 방지하기 위해 지시와 데이터를 태그로 분리 권장
  • 복잡한 컨텍스트에서는 Markdown보다 XML이 효과적임

본 기사는 Claude Code(Anthropic)를 활용하여 집필되었습니다.

검증 가능한 범위 내에서 공개 정보를 정리한 것이지만,

코드 예시 등은 실제 환경에서의 동작 확인을 권장합니다.

"Markdown 헤더로 정리하고 있는데, Claude의 응답이 어딘가 불안정하다"——그런 경험이 있다면, Anthropic이 Claude를 위해 명시적으로 권장하는 XML 태그 구조화(XML tag structuring)를 한 번 시도해 볼 가치가 있다.

이번 주 Hatena Bookmark IT(29 users)에서도 다뤄진 "왜 Anthropic은 프롬프트에 XML 태그를 권장하는가"라는 질문에 대해, 공식 문서와 공개 정보를 바탕으로 정리해 본다. 결론부터 말하자면, Claude는 XML 포맷을 대량으로 학습하였으며, XML 태그를 텍스트가 아닌 "구조(structure)"로서 처리할 수 있다는 것이 기술적인 배경이다. 이를 알고 프롬프트를 설계하면 복잡한 지시 사항에 대한 응답 정밀도를 높이기 쉽다.

Anthropic의 공식 문서(Use XML tags to structure your prompts)에는 "프롬프트에 여러 컴포넌트(문맥, 지시, 예시 등)가 포함될 경우, XML 태그는 게임 체인저(game-changer)가 될 수 있다"라고 명시되어 있다.

기술적인 배경으로서, Claude는 학습 코퍼스(learning corpus) 안에 문서, 구조화 데이터셋, 마크업, 설정 파일, Anthropic 사내의 프롬프트 형식과 같은 XML 포맷 데이터를 대량으로 포함하고 있다. 그 결과, Claude는 이것들을 "텍스트를 읽어 내려가는 것"이 아니라 "구조 언어로서 내면화"한 상태에 있다.

구체적으로, XML 태그를 본 Claude는 다음과 같은 처리를 수행한다:

시맨틱(Semantic)한 역할 식별<context>는 백그라운드 정보의 시그널로, <instructions>는 무엇을 해야 하는지에 대한 시그널로 해석한다 -
어텐션(Attention) 배분 조정<instructions> 내의 텍스트는 백그라운드 텍스트와는 다른 가중치로 처리된다 -
콘텐츠 분리(isolation)— 여러 섹션이 별도의 태그로 감싸짐으로써, 처리 중인 "정보의 혼재(bleeding)"를 방지한다

반면 Markdown 헤더(## 헤더)는 포맷 표시를 위해 설계된 것이다. Claude가 구조로서 인식하는 깊이는 XML보다 얕으며, 컨텍스트가 복잡할수록 이러한 차이가 응답 품질에 나타나기 쉽다. 이는 Hacker News 상의 디스커션(Why XML tags are so fundamental to Claude)에서도 많은 엔지니어가 체감으로서 보고했던 점이다.

가장 심플하면서도 효과가 나타나기 쉬운 사용법은, 지시 사항과 입력 데이터를 별도의 태그로 나누는 것이다.

<instructions>
다음 <document>의 내용을 3가지로 요약해 주세요.
불렛 포인트로 작성하되, 각 점은 50자 이내로 요약할 것.
...

태그를 참조할 때는 프롬프트 내에서 동일한 태그 이름을 사용하여 언급하는 것이 좋다 (예: "<document>에 포함된 정보를 사용하여..."). 공식 문서에서는 이러한 일관성이 해석 정밀도에 기여한다고 기술하고 있다.

또한, 공식 문서는 "한 문장뿐인 프롬프트에는 XML 태그가 필요 없다"라고도 명시하고 있다. 태그가 효과를 발휘하는 것은 여러 개의 서로 다른 섹션이 존재할 때이다. 전형적인 구성은 3~5개의 태그(<context>, <task>, <instructions>, <output_format>)로 권장된다.

여러 문서를 동시에 참조하게 할 경우, 계층적인 태그 구조가 유효하다.

<documents>
<document index="1">
<source>report-2026-q1.pdf</source>
...

index 속성을 부여함으로써 Claude가 여러 문서를 구분하기 쉬워진다. Long context prompting tips에서는 긴 문서를 프롬프트의 앞부분에 배치하고, XML 태그로 구분할 것을 권장하고 있다. 문서 수가 늘어날수록 이 구조의 효과가 높아진다고 한다.

단계적인 추론(step-by-step reasoning)을 Claude에게 명시시키고 싶을 경우, <thinking><answer> 태그의 조합이 유효하다.

<task>
다음 비즈니스 문제를 분석해 주세요.
</task>
...

공식 Prompt engineering overview에서는 "XML 태그와 멀티샷 프롬프팅 (Multi-shot Prompting), Chain of Thought (CoT)를 결組み合わせ함으로써, super-structured·high-performance한 프롬프트를 만들 수 있다"라고 명시하고 있다.

공식 문서에서는 명시적으로 "over-tagging (과도한 태그 지정)은 피할 것"이라고 언급하고 있다. 준수해야 할 규칙을 정리하면 다음과 같다:

  • 한 문장으로 완결되는 섹션에는 태그가 필요 없음
  • 태그 이름은 내용과 일치하는 의미 있는 이름으로 지정할 것 (<stuff><misc>는 사용 금지)
  • 동일한 프롬프트 내에서는 태그 이름을 통일하고, 참조할 때도 동일한 이름으로 부를 것
  • 태그의 수는 3~5개가 적당함. 그 이상은 가독성이 떨어짐

또한, "Claude 전용의 베스트 XML 태그 이름이 따로 있는 것"은 아니다. 공식적으로는 "Claude가 특정 태그 이름으로 훈련된 것은 아니다"라고 밝히고 있으며, 태그 이름이 내용과 일치하는 것이 더 중요하다. <context>이든 <background>이든, 일관되게 사용한다면 둘 다 기능한다.

Anthropic이 프롬프트에 XML 태그를 권장하는 기술적인 이유는, Claude가 학습 과정에서 XML을 구조 언어 (Structural Language)로 내면화하여, 태그를 의미적인 시그널 (Semantic Signal)로 처리할 수 있기 때문이다. Markdown과 외관이 비슷하여 경시되기 쉽지만, 여러 섹션을 가진 복잡한 프롬프트에서는 응답 품질에 영향을 미치기 쉬운 선택이다.

직접 시도해 본다면 <instructions><context>라는 두 가지 태그부터 시작하는 것이 현실적인 입문 방법이 될 것이다. 상세한 사용법 가이드는 공식 문서에 정리되어 있으므로, 다음 프롬프트 설계 시 참조하기 바란다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0