結論から書きます。OpenAIの公式プロンプトガイドは、指示の区切りにXML風のタグを使う書き方を勧めています。ただし「MarkdownよりXMLが好き」と公式が言い切った事実はありません。この記事では、公式資料に書いてあることと、書いていないことを分けて整理します。
※本記事は公式資料・公開情報をもとにした解説です。筆者による実機検証は含みません。
※2026年9月追記: GPT-5は2025年8月7日に公開されました。初稿にあった「まだ公開されていない」という記述は削除しています。OpenAIが公開したGPT-5 prompting guide(OpenAI Cookbook)があります。このガイドは、指示のまとまりをXML風タグで囲む構造化を実例つきで勧めています。本文はこのガイドの内容に合わせて書き直しました。
そもそもMarkdownとXMLは何が違うのか
Markdownは、見出しに「#」、箇条書きに「-」を付けるだけの軽い記法です。人が読みやすく、書くのも速い。一方で「この見出しの範囲はどこまでか」が、記号だけでははっきりしません。
XMLは、<task>で始めて</task>で閉じる書き方です。開始と終了が対になるので、範囲があいまいになりません。人が読むには少し重い。その代わり、機械には境界がはっきり伝わります。
プロンプトで使うのは、厳密なXML文書ではなく「XML風のタグ」です。タグ名は自分で決めてかまいません。閉じ忘れさえなければ、それで役目を果たします。
公式ガイドに実際に書いてあること
ガイドの本文を読むと、推奨プロンプトの例はほぼすべてタグで区切られています。登場するタグ名を拾うと、次のようなものです。
<context_gathering>…… 情報収集をどこまで深くやるかの指示<persistence>…… 途中で止まらず最後まで進める指示<tool_preambles>…… ツールを使う前に計画を説明させる指示<code_editing_rules>…… コード編集のルール集<self_reflection>…… 出力前に自分で採点させる指示
もう1つ、はっきりした記述があります。コードエディタ「Cursor」の事例です。<[instruction]_spec>のような構造化したXML仕様を使うと、指示への追従が改善したと書かれています。「XMLで区切ると指示を守りやすくなる」の根拠は、この一文です。
一方で、ガイドにはMarkdownとXMLを並べて比較した記述はありません。「XMLの方が好き」は、この記事の初稿を含めて、読み手が付け足した解釈です。ここは正直に訂正しておきます。
Markdownについては別の話が書いてあります。API経由のGPT-5は、既定では回答をMarkdownで整形しないそうです。使いたいときは「意味のある箇所だけMarkdownを使う」と明示する。つまりMarkdownは「出力の見た目」の話、XML風タグは「入力の区切り」の話です。この2つを混ぜると話がねじれます。
同じ依頼を2通りで書いてみる
公式の書き方にならって、商品レビュー記事の構成案を頼む場面で比べます。まずはよくあるMarkdown風の指示です。
# 商品レビュー記事の構成案を作成してください
## 商品名:〇〇
### ターゲット読者:△△
- 導入:読者の悩みに共感する
- 商品紹介:...
これでも意図は伝わります。ただ「ターゲット読者」が見出しなのか条件なのか、記号だけでは決まりません。次に、タグで区切った書き方です。
<request>
<task>商品レビュー記事の構成案を作成してください</task>
<product_name>〇〇</product_name>
<target_audience>△△</target_audience>
<structure>
<item>導入:読者の悩みに共感する</item>
<item>商品紹介:...</item>
</structure>
</request>
「どこからどこまでが1つの条件か」が、タグの名前と閉じ位置で決まります。指示が長くなるほど、この差が効いてくる。公式ガイドの例が長いシステムプロンプトばかりなのは、そういう理由だと読めます。
全部XMLにするのも違う。使い分けの目安
チャットで一言二言の質問をするのに、毎回タグを書くのは面倒なだけです。効果もほとんど見込めません。逆に、毎日同じ形式で使う長い指示を、記号だけで書き続けるのももったいない。
目安は3つです。1つ目、指示が10行を超えるならタグで区切る。2つ目、役割・入力データ・出力形式のように性質が違う情報が混ざるなら区切る。3つ目、APIや自動化で同じプロンプトを繰り返し使うなら区切る。この3つに当てはまらない依頼は、今までどおりの書き方で足ります。
たとえば名古屋で製造業をしている会社が、見積依頼メールの下書きをAIに毎日頼むとします。<role>に自社の立場、<input>に相手のメール本文を入れる。<format>には「敬語・200字以内・件名つき」と書く。相手のメールを貼り替えるだけで、毎回ぶれない下書きが出てきます。フリーランスのライターなら、<input>に取材メモを入れる。<format>に媒体ごとの文字数を入れれば、同じ型になります。
まとめ
公式ガイドが勧めているのは「長い指示をXML風タグで区切ること」です。「XMLが好き」でも「Markdownは古い」でもありません。短い質問はそのまま、長い定型の指示はタグで区切る。それだけで、公式ガイドの言う「指示への追従」は十分に取り込めます。
タグ名は英語でも日本語でもかまいません。閉じ忘れだけは気をつけてください。閉じ忘れたタグは、区切りがないのと同じです。


