XML 태그로 프롬프트 구조화하기
- XML 스타일 태그가 왜 Claude에게 프롬프트 부분들 사이의 명확한 경계를 주는지
- 지시, 문서, 예시, 형식 규칙을 이름 붙인 태그로 감싸는 법
- 안정적으로 파싱할 수 있는 태그 출력을 Claude에게 요청하는 법
- 언제 태그를 붙일지 — 그리고 언제 과하게 태그하지 말지
프롬프트가 지시, 문서, 예시, 질문을 섞어 놓으면 모델이 이들을 뭉뚱그릴 수 있습니다. XML 스타일 태그는 각 부분에 레이블을 붙이는 깔끔한 방법이며 — Claude는 여기에 특히 잘 반응합니다.
핵심 개념
각 섹션을 이름 붙인 태그로 감싸서 무엇이 무엇인지 명확하게 만드세요:
태그로 구조화한 프롬프트
<instructions>
Summarize the document for a busy executive. Use only the document; if a fact
isn't there, say so.
</instructions>
<document>
{paste the long document here}
</document>
<format>
3 bullet points, then a one-line "decision needed".
</format>태그는 당신이 만들어내는 텍스트일 뿐입니다 — <document>, <example>, <context>, <rules> — 하지만 모델에게 명확한 경계를 제공합니다.
왜 도움이 되는가
- 데이터를 지시와 분리합니다 — 모델이 붙여넣은 문서 안에 끼어든 텍스트를 따를 가능성이 줄어듭니다(프롬프트 인젝션에 대한 약한 방어 — /docs/security/prompt-injection 참고).
- '내 프롬프트의 일부를 무시했어'를 줄입니다. 각 부분이 명확하게 구분됩니다.
- 출력을 파싱하기 쉽게 만듭니다 — Claude에게 답변을 <answer> 태그에 넣어달라고 요청해 안정적으로 추출할 수 있습니다.
- 퓨샷(/docs/prompting/few-shot)과 잘 조합됩니다 — 각 예시를 <example>로 감싸세요.
네 가지 이점을 자세히 보면:
- 데이터를 지시와 분리합니다 — 모델이 붙여넣은 문서 안에 끼어든 텍스트를 따를 가능성이 줄어듭니다(프롬프트 인젝션에 대한 약한 방어).
- "내 프롬프트의 일부를 무시했어"를 줄입니다. 각 부분이 명확하게 구분됩니다.
- 출력을 파싱하기 쉽게 만듭니다 — Claude에게 답변을
<answer>태그에 넣어달라고 요청해 안정적으로 추출할 수 있습니다. - 퓨샷과 잘 조합됩니다 — 각 예시를
<example>로 감싸세요.
태그 출력 요청하기
Guided walkthrough1 of 3
- 추론용과 최종 답변용으로 각각 어떤 태그를 쓸지 모델에 정확히 알려주세요.
- 당신의 코드는 추론을 무시하고 <answer> 내용만 가져올 수 있습니다.
- 기계 판독이 가능한 결과가 필요할 때 구조화된 출력(/docs/api/structured-output)과 잘 어울립니다.
태그 출력 요청
Put your reasoning in <thinking> tags and your final answer in <answer> tags.
그러면 코드가 <answer> 내용만 가져올 수 있습니다. 기계 판독이 가능한 결과가 필요할 때 구조화된 출력과 잘 어울립니다.
팁
- 일관성을 유지하세요 — 모든 태그를 열고 닫으세요. 같은 이름을 재사용하세요.
- 태그 이름을 의미 있게 지으세요(<x>가 아니라 <contract>).
- 사소한 프롬프트에 태그를 남발하지 마세요 — 정말로 여러 개의 구별되는 부분이 있을 때 사용하세요.
- 일관성을 유지하세요 — 모든 태그를 열고 닫으세요. 같은 이름을 재사용하세요.
- 태그 이름을 의미 있게 지으세요 (
<x>가 아니라<contract>). - 사소한 프롬프트에 태그를 남발하지 마세요 — 정말로 여러 개의 구별되는 부분이 있을 때 사용하세요.