XML タグでプロンプトを構造化する
- なぜ XML 風のタグが、プロンプトの各部分の間に明快な境界を Claude に与えるのか
- 指示・ドキュメント・例・形式ルールを名前付きタグで囲む方法
- 確実に解析できるタグ付き出力を Claude に求める方法
- いつタグを付け — そしていつ付けすぎないか
プロンプトが指示・ドキュメント・例・質問を混ぜていると、モデルはそれらを混同しかねません。XML 風のタグは各部分にラベルを付けるきれいな方法で — Claude は特にこれによく応えます。
考え方
各セクションを名前付きタグで囲んで、何が何なのかを明白にします:
Tagged prompt structure
<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> で囲む。
4 つの利点を詳しく:
- データと指示を分ける — モデルが、貼り付けたドキュメント内の紛れ込んだテキストに従う可能性が下がる(プロンプトインジェクションに対する穏やかな防御)。
- 「プロンプトの一部を無視された」を減らす。 各部分が明確に区切られる。
- 出力を解析しやすくする — Claude に答えを
<answer>タグに入れるよう頼んで、確実に抽出できる。 - フューショットと組み合わせられる — 各例を
<example>で囲む。
タグ付き出力を求める
Guided walkthrough1 of 3
- 推論用と最終的な答え用に、どのタグを使うかをモデルに正確に伝える。
- コードは <answer> の内容だけを取り出し、推論を無視できる。
- 機械可読な結果が必要なときは、構造化出力(/docs/api/structured-output)とよく合う。
Request tagged output
Put your reasoning in <thinking> tags and your final answer in <answer> tags.
そうすればコードは <answer> の内容だけを取り出せます。機械可読な結果が必要なときは、構造化出力とよく合います。
ヒント
- 一貫させる — すべてのタグを開いて閉じ、同じ名前を再利用する。
- タグに意味のある名前を付ける(<x> ではなく <contract>)。
- ささいなプロンプトにタグを付けすぎない — 本当に複数の異なる部分があるときに使う。
- 一貫させる — すべてのタグを開いて閉じ、同じ名前を再利用する。
- 意味のある名前を付ける(
<x>ではなく<contract>)。 - 付けすぎない — ささいなプロンプトには使わず、本当に複数の異なる部分があるときに使う。