C
Claude Academy
Structuring with XML Tags

XMLタグで構造化する

約 10 分 · クイズ 4 問 · 演習 1 問
重要キーワード (3 語)
XML Tags (XMLタグ) — Claude が訓練時に強く反応するよう調整されたタグ形式
Structured Output (構造化出力) — JSON や XML などの機械可読な形式で結果を返させること
Delimiter (区切り) — プロンプト内のセクションを明示する記号や記法

XML タグでプロンプトを構造化する

Claude は XML 風タグ を使った構造化プロンプトに非常に強く反応するよう訓練されています。 JSON でも YAML でもなく、XML 風タグが最適 です。

なぜ XML?

  • 区切りが視覚的に明確 (Claude にもユーザーにも)。
  • 入れ子構造が自然に書ける。
  • 出力フォーマットを指定しやすい。
  • 出力からの抽出が正規表現や lxml で容易。

よく使うタグ

タグ 用途
<instructions> 指示
<context> 背景・参考資料
<example> Few-shot 例
<input> 処理対象データ
<output_format> 期待する出力形式
<thinking> CoT の思考過程
<answer> 最終回答
<rules> 守るべきルール

<instructions>
次のメールを丁寧な日本語に書き直してください。
</instructions>

<example>
<input>会議遅れる</input>
<output>会議に遅れる旨をご連絡いたします。誠に申し訳ございません。</output>
</example>

<input>
{ここに対象メール}
</input>

<output_format>
<rewritten>...</rewritten>
</output_format>

出力からタグだけ抜き出す

Python では正規表現で簡単に抽出できます。

import re

def extract(text: str, tag: str) -> str | None:
    m = re.search(rf"<{tag}>(.*?)</{tag}>", text, re.DOTALL)
    return m.group(1).strip() if m else None

answer = extract(response, "answer")

複雑な入れ子なら lxmlBeautifulSoup を使うのも手です。

失敗パターン

❌ JSON だけで指定:

{
  "instruction": "翻訳してください",
  "input": "Hello"
}

→ Claude は理解できるが、XML より精度が落ちる傾向。

❌ Markdown だけで指定:

## 指示
翻訳してください
## 入力
Hello

→ Markdown も認識するが、入れ子データを区切るには弱い。

XML タグでセクションを区切る のがベスト。

注意点

  • タグ名は自由に決められるが、意味のある名前 を使うと精度が上がる。
  • HTML エスケープは必須ではないが、< > を含むデータは CDATA 風に囲むと安全。
  • タグの open/close を必ず対応させる。Claude は閉じ忘れに気付きにくい。

XML タグでカスタマーレビュー分析

実際にやってみましょう。

▶ レビュー分類タスク
<task> 次のレビューを sentiment (positive/negative/neutral) と topic (price/quality/support/other) に分類してください。 </task> <output_format> <sentiment>...</sentiment> <topic>...</topic> <reason>20 字で理由</reason> </output_format> <review> 値段の割に音質はそこそこだったけど、サポートの返事が遅すぎてイライラした。もう買わない。 </review>

Hands-on 演習

演習 1: メール分類器を XML プロンプトで

受信メールを 「営業」「カスタマーサポート」「内部連絡」「スパム」 に分類するプロンプトを XML タグで設計してください。

出力は次のフォーマットに固定:

<category>...</category>
<confidence>0.0-1.0</confidence>
<reason>30 字</reason>

テストメールを 3 件用意して、3 件全部正しく分類できるかを確認しましょう。

▶ Playground を開いて実行
💡 ヒント

Few-shot 例を 2-3 件追加するとさらに安定します。境界ケース (営業 vs スパム など) を意識した例を入れましょう。

進捗保存にはログインが必要 クイズに挑戦 (4問)

💬 このレッスンへの質問 (0)

全質問を見る →
質問の投稿には ログイン が必要です。閲覧は誰でも可能です。

まだ質問はありません。最初の 1 件を投稿してみましょう。