XML 태그가 Claude에게 왜 그토록 근본적인가

Claude와 XML의 특별한 관계

Claude를 사용해본 개발자라면 XML 태그가 다른 구분자보다 훨씬 효과적으로 작동한다는 것을 경험했을 것이다. Hacker News에서 154점을 받은 이 분석은 그 이유를 심층적으로 탐구한다. 핵심은 Anthropic이 Claude를 훈련시킬 때 XML 태그를 광범위하게 사용했다는 사실에 있다.

훈련 데이터에 내재된 XML

Anthropic의 Claude는 훈련 과정에서 XML 구조화된 데이터를 대량으로 접했다. 시스템 프롬프트, 도구 사용, 내부 추론 과정 모두 XML 태그로 구조화되어 있다. Claude의 tool use 기능은 XML 기반 구조를 사용하며, Anthropic의 공식 프롬프트 가이드라인도 <context>, <document>, <thinking> 같은 태그를 적극 권장한다.

XML 태그가 효과적인 세 가지 이유

명확한 경계 설정: XML 태그는 시작과 끝이 명확하다. 태그 이름 자체가 컨텍스트를 제공하므로 (<examples>, <constraints>), 따옴표나 백틱보다 훨씬 명확하다.

중첩과 계층 구조: XML은 자연스럽게 중첩이 가능해 복잡한 프롬프트를 논리적으로 구조화할 수 있다. 이 패턴은 Claude의 훈련 데이터에 풍부하게 포함되어 있다.

프롬프트 인젝션 방어: 사용자 입력을 <user_input> 태그로 명확히 경계를 지으면, 악의적인 인젝션 시도가 실제 시스템 지시와 혼동될 가능성이 줄어든다.

실무 적용

Anthropic의 공식 프롬프트 엔지니어링 가이드는 긴 문서, 다중 예시, 복잡한 지시 사항을 다룰 때 XML 태그 사용을 명시적으로 권장한다. 이는 단순한 형식 선호가 아니라, Claude가 훈련된 방식에 기반한 근본적인 아키텍처적 이유에서 비롯된다.