第2章 · Prompt Engineering
XMLタグで構造化する
Structuring with XML Tags
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了
重要キーワード
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> |
守るべきルール |
例
wzxhzdk:0
出力からタグだけ抜き出す
Python では正規表現で簡単に抽出できます。
wzxhzdk:1
複雑な入れ子なら lxml や BeautifulSoup を使うのも手です。
失敗パターン
❌ JSON だけで指定:
wzxhzdk:2
→ 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 Exercise
演習: メール分類器を XML プロンプトで
受信メールを 「営業」「カスタマーサポート」「内部連絡」「スパム」 に分類するプロンプトを XML タグで設計してください。
出力は次のフォーマットに固定:
<category>...</category>
<confidence>0.0-1.0</confidence>
<reason>30 字</reason>
テストメールを 3 件用意して、3 件全部正しく分類できるかを確認しましょう。
🎉
まとめ
お疲れ様でした!