この記事についてClaude(Anthropic)との共同編集により作成されました。
要約
- 同じ内容でも入れ物を変えるだけで精度は動く。LLaMA-2-13Bで最大76ポイント、Claude-3-HaikuのGSM8Kは自由回答86.5%がJSON modeで23.4%まで落ちた
- ただしこの劣化は2026年のフロンティアモデルではほぼ消えている。GPT-4oは48ケース中43ケースで構造化出力に非感受性、o3は全設定で耐性あり。フォーマット選択という問題そのものが、モデルの進化に溶かされつつある
- 入力と出力で最適解が違う。入力はXMLタグで区切る+大量データにJSONを使わない、出力は用途で選ぶ
- 筆者の結論は3分岐。下流のコードがパースするならJSON、人間が編集し続けるならMarkdown、人間が読むだけで触らないならHTML
- JSONを選ぶ理由は精度ではなく契約。constrained decodingでスキーマ準拠を保証できるのがJSONだから
- 小型モデルや限界タスクでは、推論と整形を2パスに分けるだけで劣化の80〜87%が戻る
はじめに
LLMをシステムに組み込むとき、わりと早い段階で決めないといけないことがある。入力と出力を何の形式で書くかだ。
プロンプトはMarkdownの見出しで区切るのか、XMLタグで囲むのか。渡すデータはJSONにするのか、表形式にするのか。返ってくるものはJSONで受けるのか、Markdownのまま置いておくのか。
正直、筆者はここをずっと勘で決めていた。だいたいJSONにしておけば間違いないだろう、くらいの感覚である。パースできるし、スキーマも書けるし、機械が扱う前提ならJSON一択でしょ、と。
ただ、この「なんとなくJSON」がどこまで正しいのかは、一度も確かめたことがなかった。知りたかったのは要するに2つで、どの形式がいちばん精度が出るのかと、どの形式がいちばん速い(トークンを食わない)のかである。そこで論文と公式ドキュメントを13本ぶん漁って、実際どうなのかを整理した。
答えは、この2つできれいに割れた。精度のほうは「もうどれでもいい」に着地し、速さのほうは今もはっきり差が残っている。そしてもうひとつ、入力と出力ではまったく別の話をしているという前提が抜けていたことも分かった。以下、根拠から順に書いていく。
前提:入れ物を変えるだけで精度は動く
まず、そもそもフォーマットで性能が変わるのか、という話から。
これは変わる。しかも、想像よりかなり派手に変わる。
入力側で観測された差
同じ内容のプロンプトをPlain Text / Markdown / JSON / YAMLで書き分けて比較した研究では、GPT-3.5-turboのコード翻訳タスクで最大40%の性能差が出た^1。GPT-4はフォーマット変更に対してより頑健だったが、それでもゼロではない。
同じ論文の中に、個人的に一番ぎょっとした数字がある。HumanEvalで、GPT-4 (32k) のプロンプトをJSONからPlain Textに変えたら300%以上の性能向上が出たという報告だ^1。コードを書かせるタスクだからプロンプトも構造化しておいたほうがいいだろう、という直感が、まるごと裏切られている。
オープンソースモデルではもっと極端で、LLaMA-2-13Bにおいて意味的に等価なフォーマット間で最大76ポイントの精度差が観測されている^2。しかもこの感度は、モデルサイズを増やしても、few-shotの例を足しても、instruction tuningをかけても解消されなかった。
さらに厄介なのが、モデル間でフォーマット性能の相関が弱いという指摘である^2。あるモデルで最適だったフォーマットが、別のモデルでも最適とは限らない。つまりフォーマットのチューニングは、モデルを乗り換えた瞬間に賞味期限が切れる可能性がある。
出力側で観測された差:Format Tax
出力を構造化させると推論能力が落ちる、という現象はFormat Tax(フォーマット税)と呼ばれている。
これを実証的に示した先駆的な研究がGSM8K(小学生レベルの算数文章題)での比較で、数字はこうだ^9。
| モデル | 自由回答 | JSON mode | 差分 |
|---|---|---|---|
| GPT-3.5-Turbo | 76.6% | 49.3% | -27.3pp |
| Claude-3-Haiku | 86.5% | 23.4% | -63.1pp |
| LLaMA-3-8B | 74.7% | 48.9% | -25.8pp |
Claude-3-Haikuの86.5%→23.4%は、もはや別のモデルである。JSONで返してくれと頼んだだけで、算数が解けなくなっている。
同じ研究の中で、もうひとつ重要な非対称性が報告されている。分類タスクでは逆にフォーマット制約で精度が上がる^9。回答空間が制限されるぶん、余計なことを言わなくなるからだ。つまりFormat Taxは全タスク一律にかかる税ではなく、推論を要求するタスクに選択的にかかる。
原因の切り分けも進んでいて、劣化の主因はconstrained decodingではなくプロンプトレベルにあることが分かっている^8。デコード時に文法で縛ることそのものよりも、「JSONで出力せよ」という指示をプロンプトに含めること自体が精度低下の大部分を生んでいる。
ただし、その話は2026年にはだいぶ古い
ここまで読むと「じゃあ構造化出力は使わないほうがいいのか」となりそうだが、そうはならない。上の数字は、いま我々が実際に使っているモデルの話ではないからだ。
フロンティアモデルではほぼ解消されている
Format Taxを体系的に測り直した研究では、最新のクローズドモデルではほぼ劣化なしという結論が出ている^8。テストした全オープンウェイトモデルでは劣化が確認されたのに対し、GPT-4oやClaudeといったAPIモデルでは差がほとんど観測されなかった。
因果推論を使ってフォーマットの影響を分解した別の研究でも、GPT-4oは48ケース中43ケースで構造化出力に非感受性、GPT-4.1も同傾向、そしてOpenAI o3は全設定で耐性ありという結果が出ている^11。推論集約型のモデルは、内部でCoTを回すぶん構造化制約を吸収できる、という解釈になる。
なぜ解消されたのか:キャパシティの問題
この現象をきれいに説明しているのが、Format Taxの本質はモデルの余剰キャパシティにある、という再解釈だ^10。
| モデルの状態 | JSON制約下の挙動 |
|---|---|
| 余裕がある(Claude Sonnet等) | 劣化なし(88.7% vs 89.3%) |
| キャパシティ限界付近(Haiku, GPT-4o-mini) | 28〜36ポイントの劣化 |
| フロンティアでも限界タスク(Opus 4.7 × AIME) | 96.2%→91.0%(-5.3pp) |
読み方はこうなる。フォーマットへの準拠は、それ自体が計算資源を食う作業である。タスクがモデルの能力限界から遠いところにあれば、余った資源で整形を済ませられるので何も起きない。タスクが限界ギリギリなら、整形に回した資源のぶんだけ推論が痩せる。
だからモデルが強いかどうかではなく、そのモデルにとってそのタスクが難しいかどうかが効く。フロンティアモデルのOpus 4.7でさえ、AIMEのような限界域のタスクではしっかり5ポイント落ちている^10。
そして対策も同じ研究から出ている。先に自由形式で推論させ、後からフォーマットに流し込む(delayed-structure ablation)だけで、劣化の80〜87%が回復する^10。これは前述の「劣化の主因はプロンプトレベル」という知見^8とも整合的で、要するに推論しているあいだ整形のことを考えさせなければいい、という話に尽きる。
問題そのものが溶けつつある
ここは調べていて素直におもしろかったところなので、少し書いておきたい。
2024年の論文は、JSONで返させると算数が解けなくなるという話をしていた。86.5%が23.4%である。当時これは間違いなく実在する問題で、フォーマットの選択は性能を引き出すための技術だった。
それが2年で、48ケース中43ケースで差がない^11 になった。o3に至っては全設定で耐性ありである^11。
つまりモデルが強くなったことで、問題設定のほうが消えかけている。かつては「どの形式なら賢く振る舞うか」を探る必要があったのに、いまは「どれでもだいたい同じように動く」。フォーマットのチューニングという工夫が、モデルの進化に吸収されて不要になっていく過程を、ここ2年ぶんの論文を並べるとそのまま観測できる。
これはプロンプトエンジニアリング全般で起きていることの縮図でもあると思っていて、去年まで必須だったテクニックが、今年はモデルの標準装備になっているという現象が、フォーマットという小さな窓からきれいに見えている。工夫が要らなくなるのは寂しくもあるが、悩まなくていいことが増えるのは端的にいいことだ。
ただしここで溶けたのは精度の軸だけである。もうひとつの軸、つまりトークン効率のほうはまったく溶けていない。JSONはいまでもTOONの1.66倍のトークンを食う^6し、それはモデルが賢くなっても1バイトも減らない。精度は収束したが、コストは収束していない。 だから2026年にフォーマットを選ぶ理由は、賢さから金と設計のほうへ完全に移っている。
つまり2026年時点の実務的な立場としては、フロンティアモデルを使う前提なら、フォーマット選択を精度の問題として悩む必要はほぼない。悩むべきは別の軸である。それが次の話になる。
入力フォーマットは、出力とはまったく別の問題
ここが調べていて一番の収穫だった。入力の最適解と出力の最適解は一致しない。
入力の第一原則:XMLタグで区切る
Anthropicの公式ドキュメントが強く推奨しているのがXMLタグによる構造化で、ClaudeはXMLタグをセマンティックな境界として認識するよう調整されている^3 ^4。OpenAIの公式ガイダンスでも、Markdownの見出しやリストとXMLタグを組み合わせてセクションを明示することが推奨されている^5。
効果としては、マルチステップ推論での精度向上、リトライ間の一貫性の改善、指定フォーマットへの準拠率の向上などが報告されている^3。
ただし正直に書いておくと、この効果について流通している定量値(+20〜40%といった数字)は、Anthropicの査読付き論文として公表されたものではない。第三者記事が内部ベンチマークとして引用しているものが多く、厳密な再現性は確認できていない。公式ドキュメントで推奨されているという事実と、定量的な効果量が検証済みであるという話は、分けて受け取ったほうがいい。
XMLタグを使う目安はシンプルで、プロンプトに3つ以上の異なる構成要素があるときだ^3。指示・コンテキスト・例・出力形式が混ざり始めたら、区切ったほうがいい。
入力の第二原則:大量データにJSONを使わない
これは筆者の「なんとなくJSON」を直接殴ってくる知見だった。
LLMへの入力としてJSONは冗長すぎる。引用符とブラケットとキーの繰り返しが、そのままトークンを食う。
2025年に登場したTOON(Token-Oriented Object Notation)という入力特化のシリアライゼーション形式のベンチマークが分かりやすい^6。
| 指標 | TOON | JSON | YAML | XML |
|---|---|---|---|---|
| トークン消費(相対) | 1.00x | 1.66x | 1.35x | 1.88x |
| 検索精度(4モデル平均) | 76.4% | 75.0% | — | 67.1% |
| accuracy / 1K tokens | 26.9 | 15.3 | 18.6 | 13.0 |
JSONに対して約40%のトークン削減をしながら、精度は落ちていない。均一なオブジェクト配列(DBの出力や分析データ)では最大60%削減される。
ただしこれは開発者自身によるベンチマークで、第三者の独立検証はまだ限定的である。数字を鵜呑みにするより、JSONが入力として非効率であるという方向性を受け取るのが正しい読み方だと思う。実際、大規模なエビデンス入力を扱うワークフローの比較でも、Raw JSONを基準にコンパクト形式が入力サイズを0.25〜0.40倍に圧縮しつつ精度・引用・長さ制御すべてで上回った、という報告がある^7。
そこでの提言が端的で、JSONはAPI境界(出力側)に使うべきであって、入力に使うものではない^7。
補足として、深いネスト構造ではJSONのほうが適切という但し書きもついている^6。表になるデータはコンパクト形式、階層が深いデータはJSON、という切り分けになる。
入力側のまとめ
| やること | 理由 |
|---|---|
| XMLタグでセクションを分離する | セマンティックな境界として認識される^3 ^5 |
| 表形式データはTOON/CSVで渡す | JSONは1.66倍のトークンを食う^6 ^7 |
| 長いドキュメントはプロンプトの先頭、指示は後ろ | 公式の推奨^4 |
| モデルを乗り換えたら測り直す | フォーマット性能のモデル間相関が弱い^2 |
結論:出力フォーマットは用途で3分岐する
ここからが本題で、筆者が今回たどり着いた結論である。
出力フォーマットは精度で選ぶものではない(フロンティアモデルを使う限り差はほぼない)。その出力を誰が触るのかで選ぶ。
1. 下流のコードがパースする → JSON
システムに組み込む、つまり出力を次の処理に食わせるなら、JSONで確定していい。
ただし理由は精度ではない。契約が結べるからである。
OpenAIのresponse_format + JSON Schema、AnthropicのTool Use。どちらもconstrained decodingでスキーマ準拠を保証してくれる^5。ここが決定的で、MarkdownやHTMLには「必ずこの構造で返る」ことを機械的に保証する仕組みがない。正規表現でMarkdownの見出しをパースする実装は、いつか必ず壊れる。
そして前述のとおり、フロンティアモデルではJSON制約による劣化がほぼ消えている^8 ^10 ^11。かつては「パースの安全と引き換えに精度を捨てる」というトレードオフだったものが、いまは片方をほぼタダで取れる。だったら取ったほうがいい。
分類・抽出タスクに至っては、JSON modeのほうが精度が上がる^9。回答空間が制限されるからだ。ここはトレードオフですらない。
スキーマには推論フィールドを、答えより前に置く
実装上の注意をひとつだけ書いておく。JSONスキーマではreasoningフィールドをanswerフィールドより前に置くこと。
これはよく言われる話だが、どこまで裏があるのか気になったので確認した。根拠は2段に分かれている。
まず生成順がスキーマのキー順で決まるという仕様。OpenAIの公式ドキュメントに、Structured Outputsでは出力はスキーマのキーの並び順と同じ順序で生成される、と明記されている^5。つまりフィールドの並びがそのまま思考の順序になる。答えのフィールドを先に置けば、モデルは理由を考える前に答えをコミットすることになる。
次に推論フィールドがあるかどうかが実測で効くという点。スキーマの複雑さを4段階に振った実験で、GPT-4oは答えのフィールドだけのJSON(answer-only)で17%まで崩れ、推論フィールドを1つ足しただけで59%まで戻っている^10。42ポイントの差である。同じ実験でHaikuは、推論フィールドを持つスキーマの中でも軽い→重いで90.3%→86.0%→55.3%と落ちており、推論フィールドは要る、そのうえでスキーマは軽いほどよいという二段構えの結論になっている。
ただし正確に書いておくと、reasoningとanswerの並び順そのものを入れ替えたA/Bを取った研究は、今回調べた範囲では見つからなかった。上の2つ(生成順=スキーマ順という仕様と、推論を先にやらせると精度が戻るという実測^10)から導かれる帰結であって、順序単体の効果量が測定されているわけではない。とはいえコストはフィールドを並べ替えるだけなので、やらない理由もない、というのが実務的な落としどころだと思う。
2. 人間が編集し続ける → Markdown
出力が人間の手に渡って、直され、また使われるなら、Markdownを選ぶ。
Markdownは出力フォーマットの中で推論への影響が最も小さい部類にいる。GPT-4は推論タスクでMarkdown形式のプロンプトが優位、という報告もある^1。ただ、Markdownを選ぶ理由の本体はそこではない。
本体は運用側にある。Gitに乗る。diffが読める。人間がエディタで直接直せる。壊れても壊れ方が緩やかで、見出しレベルを間違えても情報は失われない。JSONで同じことをやろうとすると、エスケープされた改行だらけの1行の中を人間が編集する羽目になる。あれは無理である。
その代わり、Markdownをパース前提にしてはいけない。Markdownは構造化データの器ではなく、プレゼンテーションのための形式だ^12。「Markdownで出させて見出しを正規表現で拾う」という設計は、JSONを使うべき場面の妥協でしかない。人間が読み書きする経路と、コードが読む経路は、分けたほうがいい。
3. 人間が読むだけで触らない → HTML
レポート、ダッシュボード、可視化。人間が見るだけで編集しないなら、HTMLで直接出させる。
理由は、そのまま表示できるからだ。Markdownを吐かせてレンダラを通す一手間が省ける上に、テーブルの装飾やレイアウトなど、Markdownでは表現できないものが最初から表現できる。
ただしこれには条件がついていて、高性能なモデルを使うことが前提になる。
構造化出力ベンチマークのStructEvalによると、JSON・HTML・CSV・Markdown・YAMLの基本的な生成は多くのモデルで90%を超えて飽和している^12。つまり「valid なHTMLを吐く」という課題自体は、もう解けている。
問題はその先で、同じベンチマークが2つの階段を報告している^12。
- 生成タスク > 変換タスク(ゼロから作るほうが難しい)
- 視覚コンテンツの生成 > テキスト構造の生成(見た目を作るほうが難しい)
そして最先端のo1-miniでも平均スコアは75.58にとどまっている。SVGや複雑なネスト構造は依然として困難だとも書かれている。
要するに、HTMLとして妥当なものは出るが、見た目が意図どおりである保証はない。ここが弱いモデルだと崩れる。だからHTML出力は、キャパシティに余裕のあるモデルにだけ任せる。前述のキャパシティ理論^10とも一貫している。HTMLは冗長でトークンを食うぶん、整形コストの高い出力形式だからだ。
そして人間が触らないという条件も、外せない。HTMLはdiffが読めない。1文字直したいだけでタグの海を泳ぐことになる。人間が編集するかもしれないなら、迷わずMarkdownに倒すべきである。
判断フロー
まとめるとこうなる。
| 出力の行き先 | フォーマット | 決め手 |
|---|---|---|
| 下流のコードがパースする | JSON | constrained decodingで契約が結べる |
| 人間が編集して使い続ける | Markdown | diffが読める・直接直せる |
| 人間が見るだけ(編集しない) | HTML | そのまま表示できる。ただし高性能モデル限定 |
| 推論そのものが目的(最終出力ではない) | 自由形式 | 何も制約しないのが最速・最精度 |
最後の行を足したのは、実際にはこれが一番忘れられがちだからだ。中間ステップの出力にまでフォーマットを課す必要はない。むしろ課さないほうがいい。
この結論が壊れる条件
上の3分岐は、いくつかの前提の上に立っている。前提が外れたときに何が起きるかを書いておく。
小型モデル・ローカルLLMを使うとき
Format Taxが生きている世界に戻る。テストされた全オープンウェイトモデルで劣化が確認されている^8し、キャパシティ限界付近のモデルでは28〜36ポイント落ちる^10。
このときの処方箋ははっきりしていて、推論と整形を2パスに分ける。
- まず自由形式で推論させる(Chain-of-Thought)
- 別の呼び出しでその結果を構造化フォーマットに変換する
これで劣化の80〜87%が戻る^10。extended thinkingやscratchpadを使って1回の呼び出しの中で分離しても同じ効果が得られる^8。呼び出しが2回になるコストと、28ポイントの精度低下を比べれば、答えは明らかだと思う。
| モデルの状態 | 対応 |
|---|---|
| 小型モデル(Haiku, 8Bクラス, ローカルLLM) | 2パス必須 |
| 大型汎用モデル(GPT-4o, Sonnet) | そのまま構造化してよい |
| 推論特化モデル(o3, o1) | 構造化出力を安全に使える^11 |
| 大型でも限界タスク(AIME等) | 2パスを検討 |
タスクがモデルの限界に近いとき
モデルのサイズではなく、タスクの難易度で決まる。Opus 4.7でさえAIMEでは5ポイント落ちている^10。自分のタスクがそのモデルにとってどれくらい余裕のある問題なのかは、結局測ってみないと分からない。
モデルを乗り換えたとき
フォーマット性能のモデル間相関は弱い^2。あるモデル向けに詰めたプロンプト形式が、次のモデルでそのまま効く保証はない。モデル更新のたびにフォーマットのA/Bを取り直せるようにしておくと、後で楽になる。
なぜバイアスは消えないのか
根本原因についての分析も出ていて、フォーマットバイアスの主因は事前学習データの不均衡だとされている^13。学習コーパスにJSONやMarkdownが多く含まれるぶん、モデルは特定形式への選好を獲得する。これはattention分配の偏りとして内部的に観測できて、推論時のattention再重み付けで部分的に緩和できるものの、バイアスの向き自体は固定的だという。
つまりこれはプロンプトの書き方でどうにかなる話ではなく、学習側の問題である。当面はモデルごとの癖として付き合っていくしかない。
まとめ
調べる前の筆者は「機械が扱うんだからJSONでしょ」という一枚岩の考え方をしていた。調べたあとは、こうなった。
入力について
- XMLタグでセクションを区切る(指示・コンテキスト・例が3つ以上混ざったら必ず)
- 表形式の大量データにJSONを使わない。TOONやCSVのほうがトークン効率が1.35〜1.66倍いい
- JSONは入力の形式ではなく、出力の契約形式である
出力について
- 下流のコードがパースする → JSON(精度ではなく契約のために選ぶ)
- 人間が編集し続ける → Markdown(diffが読めることが本体の理由)
- 人間が読むだけで触らない → HTML(ただし高性能モデル限定)
- 中間ステップ → 自由形式(縛らないのが一番強い)
共通して効く一手
- 迷ったら推論と整形を分ける。2パスにするだけで、劣化の8割が戻る
調べはじめた動機は「どの形式がいちばん精度が出て、どの形式がいちばん速いのか」を知ることだった。この2つに、別々の答えが返ってきたのが今回いちばんおもしろかったところである。
精度の軸は、もう決着している。 2024年の論文が示していた63ポイントの崖は、2026年のフロンティアモデルではほぼ埋まっていて、答えは「どれでもいい」だった。速さを知ろうとして測りに行ったら、精度のほうが先に問題でなくなっていた、という感じで、少し拍子抜けしつつ痛快でもあった。
速さの軸は、まだ決着していない。 JSONはTOONの1.66倍、XMLは1.88倍のトークンを食う^6。これはモデルが賢くなっても消えない差で、そのままAPI課金とコンテキスト枠に効き続ける。
だから残った判断軸は、性能ではなくその出力を誰が触るのかという、きわめて設計寄りの問いになる。パースするのはコードなのか人間なのか。人間は読むだけなのか、直すのか。ここさえ決まれば、形式は自動的に決まる。
逆に言えば、この問いに答えられていないまま「とりあえずJSON」で組んだシステムは、たぶんどこかで人間が読めないJSONを人間が編集する羽目になっている。筆者のことである。
参考文献
- Gupta et al. “Does Prompt Formatting Have Any Impact on LLM Performance?” arXiv:2411.10541, 2024 https://arxiv.org/abs/2411.10541
- Sclar et al. “Quantifying Language Models’ Sensitivity to Spurious Features in Prompt Design” ICLR 2024 https://proceedings.iclr.cc/paper_files/paper/2024/file/6c0e99d736da621403018ca7b32b1a4d-Paper-Conference.pdf
- Anthropic “Prompting best practices - Use XML tags” https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices
- Anthropic / AWS “Prompt engineering techniques and best practices: Learn by doing with Anthropic’s Claude 3 on Amazon Bedrock” https://aws.amazon.com/blogs/machine-learning/prompt-engineering-techniques-and-best-practices-learn-by-doing-with-anthropics-claude-3-on-amazon-bedrock/
- OpenAI “Prompt engineering” https://developers.openai.com/api/docs/guides/prompt-engineering
- TOON (Token-Oriented Object Notation) 公式リポジトリ https://github.com/toon-format/toon
- MightyBot “Best Structured Prompt Formats for LLMs, Ranked” https://mightybot.ai/blog/best-structured-prompt-formats-for-llms/
- Le et al. “The Format Tax” arXiv:2604.03616, 2025 https://arxiv.org/abs/2604.03616
- Tam et al. “Let Me Speak Freely? A Study on the Impact of Format Restrictions on Performance of Large Language Models” EMNLP 2024 Industry Track https://aclanthology.org/2024.emnlp-industry.91/
- “Capacity, Not Format: Rethinking Structured Reasoning Failures” arXiv:2606.09410, 2026 https://arxiv.org/abs/2606.09410
- “Quantifying the Impact of Structured Output Format on Large Language Models through Causal Inference” EACL 2026 Findings https://arxiv.org/abs/2509.21791
- “StructEval: Benchmarking LLMs’ Capabilities to Generate Structural Outputs” arXiv:2505.20139, 2025 https://arxiv.org/abs/2505.20139
- “Format as a Prior: Quantifying and Analyzing Bias in LLMs for Heterogeneous Data” arXiv:2508.15793, 2025 https://arxiv.org/abs/2508.15793