XMLタグでプロンプトを構造化する
プロンプトに指示・文書・例・質問が混在していると、モデルはそれらを区別できずに混同してしまうことがあります。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> — が、モデルに明確な境界を与えます。
なぜ役立つのか
- データと指示を分離する — モデルが、貼り付けた文書の中の余計なテキストに従ってしまう可能性が下がります(プロンプトインジェクションに対する軽度の防御)。
- 「プロンプトの一部を無視された」を減らす。 各部分が明確に区切られます。
- 出力を解析しやすくする — Claudeに答えを
<answer>タグに入れるよう依頼すれば、確実に抽出できます。 - few-shotと組み合わせられる — 各例を
<example>で囲みます。
タグ付き出力を求める
Put your reasoning in <thinking> tags and your final answer in <answer> tags.
そうすれば、コードで <answer> の中身だけを取り出せます。機械可読な結果が必要なときは、構造化出力とよく組み合わさります。
ヒント
- 一貫させる — すべてのタグを開いて閉じ、同じ名前を再利用しましょう。
- タグには意味のある名前を付ける(
<x>ではなく<contract>)。 - 些細なプロンプトにタグを付けすぎない — 本当に複数の異なる部分があるときに使いましょう。