
“XML 태그를 쓰면 Claude 응답이 훨씬 좋아진다”는 말, 한 번쯤 들어보셨을 겁니다. 실제로 써보면 체감도 됩니다. 그런데 왜 그럴까요? 단순히 Claude가 그렇게 학습되어서일까요?
언어학 취미 연구자이자 개발자인 Guillaume Lethuillier는 이 질문에 흥미로운 답을 내놓았습니다. XML 태그의 효과가 Claude만의 특성이 아니라, 모든 언어에 공통으로 존재하는 구조적 원리에서 비롯된다는 주장입니다.
출처: Why XML Tags Are so Fundamental to Claude – glthr.com
모든 언어에는 ‘층위 구분’ 메커니즘이 있다
저자가 제시하는 핵심 개념은 1차 표현(first-order expression)과 2차 표현(second-order expression)의 구분입니다.
쉽게 말하면 이렇습니다. 우리가 대화할 때 “내가 하는 말”과 “내가 인용하는 말”은 다른 층위에 있습니다. 영어에서는 따옴표(“)가 이 전환을 표시하죠. 호메로스의 일리아드에서는 영웅의 직접 화법을 감싸는 정형화된 구절이 그 역할을 했고, 놀랍게도 박테리아 DNA에서도 인식 서열(recognition sequence)을 구분하는 유사한 구조가 존재한다고 저자는 설명합니다.
저자의 주장은 이렇습니다. 어떤 언어든, 의미 있는 정보 전달이 이루어지려면 “지금 다른 층위의 표현이 시작된다”는 신호를 보내는 메커니즘이 반드시 있어야 한다는 것입니다.
Claude에서 XML 태그가 하는 일
이 원리를 프롬프트 엔지니어링에 대입하면 명확해집니다.
AWS 프롬프트 엔지니어링 강좌에서 나온 사례가 이를 잘 보여줍니다. 사용자가 “Yo Claude, 이 이메일을 다시 써줘”라고 하면서 이메일 본문을 그냥 붙여넣으면, Claude는 “Yo Claude”가 이메일 내용의 일부인지 사용자의 지시인지 구분하지 못합니다. 실제로 모델이 “Yo Claude”를 이메일 본문의 일부로 처리한 사례도 있었죠.
XML 태그를 쓰면 이 문제가 사라집니다.
Yo Claude, 이 이메일을 다시 써줘.
<email>
Yo Claude, 내일 미팅 괜찮아?
</email><email> 태그가 “지금부터는 네가 처리해야 할 대상(2차 표현)이 시작된다”는 신호를 명확하게 보내는 겁니다. 사용자의 지시(1차)와 처리 대상 콘텐츠(2차)가 분리되는 순간, Claude의 해석 정확도가 올라갑니다.
저자는 XML 기술 자체가 특별하다고 보지 않습니다. 다른 LLM들도 <|begin_of_text|> 같은 자체 구분자를 씁니다. 핵심은 Claude의 설계팀이 모델에게 이 ‘층위 구분’이라는 개념 자체를 이해시켰다는 점입니다. XML 태그는 그 개념을 표현하는 수단일 뿐이고, 이것이 Claude를 단순한 텍스트 생성기가 아닌 “언어 해석기(language interpreter)”에 가깝게 만든다는 것이 저자의 주장입니다.
왜 이 해석이 흥미로운가
“XML 태그를 쓰면 좋다”는 팁은 많습니다. 그런데 그 이유를 “Claude가 그렇게 훈련됐으니까”가 아닌, 언어 자체의 보편적 구조로 설명하려는 시도는 드뭅니다.
이 관점이 맞다면, XML 태그의 효과는 Claude라는 특정 모델의 특성이 아니라, 정보를 처리하는 어떤 시스템에서든 층위 구분이 중요하다는 더 근본적인 원리의 반영입니다. Anthropic이 XML 태그를 단순한 포맷 규칙이 아닌 ‘언어의 핵심 메커니즘’으로 설계에 반영했다는 해석이기도 합니다.
저자의 시리즈는 프로그래밍 언어, 고대 그리스 서사시, DNA 서열에서 찾은 구분자 원리를 더 깊이 다룹니다. Claude와 XML 태그 이야기는 그 맥락 안에서 읽을 때 더욱 풍부해집니다.

답글 남기기