長い資料を AI に渡して仕事を頼むとき、守らせたい指示は資料の前に書くべきか、後に書くべきか。Anthropic・Google・OpenAI の 3 社の手引きを読むと、この答えが会社によって異なります。
そこで IT連携マップ編集部は、4 つのモデルで 3 つの実験をしました。図 1 に、それぞれの実験でコンテキストのどの部分を変えたかと、結論をまとめています。
- 実験 1(並べ方):資料・命令・指示の順番を 8 通りに並べ替えました。Claude Fable 5.1、Gemini 4 Argon、Gemini 3.8 Flash Low は、順序に関わらずすべて満点の 8 点で指示を守りました。差が出たのは Claude Haiku 5.5 だけで、ツール・SKILL・CLAUDE.md がプロンプトの前に入ると、その差もほぼ無くなりました。
- 実験 2(資料の中の指示):指示の 1 文を、資料の本文の中に入れました。Gemini 3.8 Flash Low は守りましたが、Claude のモデルは、途中に入れた指示を「資料の中身」と判断して従いませんでした。
- 実験 3(資料の長さ):実験 2 の上で、資料の長さを変えました。資料が長いほど守られない、という結果にはなりませんでした。
- 結論:3 社の勧めと編集部の実験の結果は少しずつ異なりますが、指示と命令をプロンプトの途中に書かなければ良い、ということです。資料の外(先頭か末尾)に書いてください。
この記事の数と出典は、IT連携マップの guide「AI が指示に従わないとき」にもまとめてあります。
本記事の焦点と、文書構造・記法の影響について
この記事は、プロンプト内における指示・命令の「物理的な配置位置(先頭・末尾・途中)」に焦点を当てて検証したものです。
ただし、指示が有効に機能するかどうかは、位置だけでなく「文書の種別」や「文書の構造(見出し階層など)」といった多様な要因が関係しており、位置だけで一概に決まるものではありません。例えば、Anthropic 公式が推奨する「XML タグによる入力の構造化」や、@suwa_nobu さんによる「CLAUDE.md の指示は先頭に書くべきか」のように、タグや見出し(#)による意味的なスコープ(適用範囲の区切り)がモデルの解釈に強く影響することが知られています。
こうした文書構造やフォーマットが及ぼす影響については、今後の実験で順次検証していく予定です。
言葉の定義
| 言葉 | この記事での意味 | 実験で使った例 |
|---|---|---|
| 資料 | AI に読ませる文章 | 総務省「令和7年版 情報通信白書」の本文 |
| 命令 | AI にしてほしいことそのもの | 「書き直してください」 |
| 指示 | どうやるかの手順や方針 | 「です・ます調で書く」「1 文は 70 字以内にする」 |
| コンテキスト | AI モデルに 1 回で届く物の全部 | ツールの説明・システムプロンプト・CLAUDE.md・プロンプト |
命令が「実行そのもの」に重きを置くのに対し、指示は手順や方針も含めて示すニュアンスがあります。この記事では、AI に頼む仕事(書き直す、要約する)を「命令」、そのやり方についての注文を「指示」と呼び分けます。3 つを合わせた文章全体が、AI に送るプロンプトです(プロンプトとは)。
3 社の手引きでは、命令にあたる物は「質問(query / question)」、指示は「instructions」と書かれています。では、3 社はそれぞれ、どこに書けと言っているのでしょうか。
1. AI 大手 3 社の助言はどう異なるのか?
長い資料を渡す場面について、3 社の手引きは次のように書いています。
| 提供元・手引き | 書かれていること | 原文(抜粋) |
|---|---|---|
| Anthropic「Prompting best practices」 | 長い資料やデータの多い入力(2 万トークン以上)は、質問・指示・例より上(プロンプトの先頭の近く)に置く | "Place your long documents and inputs near the top of your prompt, above your query, instructions, and examples." |
| Google「Long context」 | 多くの場合、特に全体が長いときは、質問をプロンプトの最後(ほかの文脈の後)に置く方が成績が良い | "put your query / question at the end of the prompt (after all the other context)" |
| OpenAI「GPT-4.1 Prompting Guide」 | 指示は資料の前と後の両方に置くのが理想。1 回だけ書くなら、資料の後より前の方が良い(注) | "ideally place your instructions at both the beginning and end of the provided context" |
(注)この記事では、OpenAI が勧める「指示を資料の前と後の両方に書く形」を「サンドイッチ型」と呼びます。資料を、前と後の指示ではさむ形だからです。4 節の実験 1 で、この形も試しました。
Anthropic は質問・指示・例を資料の後に(資料が 2 万トークン以上のとき)、Google は質問を最後に、OpenAI は指示を資料の前と後の両方に、1 回なら前に書くよう勧めています。OpenAI の同じ手引きは、指示同士が食い違うと、GPT-4.1 はプロンプトの終わりに近い方に従いやすいとも書いています。つまり、「最初」にも「最後」にも、勧める会社があります。3 社の原文の全体は、guide「プロンプトとは」の出典で開けます。
一方で、3 社とも、資料の前か後、つまり資料の端に書くよう勧めていて、資料の真ん中に書けとはどこも言っていません。長い入力の端と真ん中で AI の成績が変わることを示した研究として、よく知られているのが「Lost in the Middle」という論文です。
2. 論文の「Lost in the Middle」は、何を示したのか?
Liu ら(2023)の論文「Lost in the Middle: How Language Models Use Long Contexts」は、長い入力の中で答えに必要な情報の位置を動かし、その情報が先頭か末尾にあると成績が高く、真ん中にあると大きく下がる U 字の傾向を示しました。GPT-3.5-Turbo では、20・30 文書の最も悪い位置で、文書を 1 つも与えずに答えた場合(56.1%)より低くなりました。
ただし論文が動かしたのは、答えを含む文書の位置と、探させる鍵の位置です。指示の位置は動かしていません。論文は、学習データでは指示が入力の先頭に置かれることが多いので、モデルが入力の先頭を重く見るのかもしれない、と推測を書いているだけです。論文が測ったことと測っていないことは、guide「Lost in the Middle とは」にくわしくまとめています。
端に書く話とは別に、「同じ問いを 2 回続けて渡すと良くなる」という研究「Prompt Repetition Improves Non-Reasoning LLMs」もあります。推論(thinking)を切った 7 つのモデルで、70 のテストのうち 47 で良くなり、悪くなったテストはありませんでした。ただし推論を有効にすると、効果はほぼ無い〜わずかに良い程度だと、同じ研究が書いています(guide「プロンプトとは」)。
つまり研究からは、「指示を最初に書くか、最後に書くか」の答えは出ません。そこで編集部は、自分たちで実験することにしました。ただ、その前に確かめておくことがあります。Claude Code のような AI エージェントでは、プロンプトは AI モデルに届く物の先頭にあるのでしょうか。
3. プロンプトの前には、何が入っているのか?
研究と 3 社の手引きが話しているのは、プロンプトの中の位置です。ところが、Claude Code のような AI エージェントを使うと、AI モデルに届くのはプロンプトだけではありません。プロンプトの前に、製品が次の物を入れます。
- ツールの説明:ファイルを読む、コマンドを動かす、などの道具の名前と使い方です。
- システムプロンプト:製品が AI モデルに渡す、前置きの文章です。
- SKILL の説明:SKILL の名前と説明だけが入り、本文は使うときに読まれます。
- 指示ファイル:作業フォルダの CLAUDE.md などです。Codex と Antigravity の CLI は AGENTS.md を読みます。
順番について、Anthropic の文書は「the cache follows the hierarchy: tools → system → messages」と書いています。Claude Code の文書は、CLAUDE.md を「delivered as a user message after the system prompt」と書いています。つまり、ツールの説明・システムプロンプト・CLAUDE.md の後に、ようやく今回のプロンプトが来ます。SKILL の説明が前置きのどこに入るかは、文書に書かれていません。
図の数は、実験で使った 4 つの条件で、Claude Code の /context を出して数えた物です。
- ① ツールなし:Claude Code を
--tools ""で動かしました。プロンプトの前には、システムプロンプト(3.1k トークン)しかありません。 - ② ツールあり:フラグを付けない、普段の Claude Code です。ツールの説明(8.3k)と、最初から入っている SKILL 14 個の説明(2.2k)が加わります。
- ③ ②+CLAUDE.md:作業フォルダに、英語で書いた開発の決まりの CLAUDE.md(2 万バイト・6.8k トークン)を置きました。書き方の 8 項目には触れていない文章です。
- ④ 多め:CLAUDE.md を 8 万バイト(27k トークン)に増やし、開発の手順書の SKILL を 20 個と、ツール 50 個の MCP サーバーを 1 つ加えました。
①では、プロンプトがコンテキストのほぼ先頭にあります。④では、プロンプトの前に約 4 万トークンの文章があります。コンテキストに何が入るかは、guide「コンテキストとは」にくわしくまとめています。
プロンプトの先頭が、コンテキストの先頭ではなくなる。それでも、プロンプトの中の並べ方で、AI の守り方は変わるのでしょうか。
4. [実験 1] 資料→命令→指示の並び方が変わる場合
実験 1 では、図の 3 つの部分(資料・命令・指示)を 1 つのメッセージにまとめて AI に送り、資料の書き直しを頼みました。資料は総務省「令和7年版 情報通信白書」の本文で、短い資料と長い資料の 2 つです。指示は「です・ます調で書く」など 8 項目で、従った項目 1 つで 1 点(8 点満点)として、プログラムで採点しました。
並べ方は、3 つの部分の順番 6 通りに、次の 2 つを加えた 8 通りで、それぞれ 3 回頼みました。
- サンドイッチ型:指示と命令を、資料の前と後の両方に書く形です(1 節の OpenAI の勧め)。
- 2 回くり返し:「指示→資料→命令」を 2 回続ける形です(2 節の研究)。
モデルは、Claude Code の Claude Fable 5.1 と Claude Haiku 5.5(ツールなし)、Antigravity の CLI の Gemini 4 Argon と Gemini 3.8 Flash Low(ツールを切る設定が無いので普段の状態)の 4 つです。差が出た Claude Haiku 5.5 では、プロンプトの前に入る物を 3 節の 4 つの条件に変えて、同じ実験をくり返しました。
結論は、次のとおりです。
- Claude Fable 5.1・Gemini 4 Argon・Gemini 3.8 Flash Low は、順序に関わらず、指示を全部守りました(8 点)。
- 並べ方で点が変わったのは、Claude Haiku 5.5 だけです。ツールなしでは、資料を先頭に置いた並びが低く、資料を最後に置いた並びが高くなりました。
- ツール・SKILL・CLAUDE.md がプロンプトの前に入ると、Claude Haiku 5.5 でも、並べ方の差はほぼ無くなりました。
- サンドイッチ型と 2 回くり返しは、長い資料では点が上がりませんでした。
並べ方ごとの点、条件ごとの入力トークン、採点の決め方は、guide「AI が指示に従わないとき」の「調査の詳細」に載せています。
実験 1 では、指示はいつも資料の外(前か後)にありました。では、指示を資料の本文の中に書くと、どうなるのでしょうか。
5. [実験 2] 資料本文の中に指示を入れる場合
実験 2 では、指示を資料の外ではなく、資料の本文の中に入れました。方法は次のとおりです。
- 資料:約 4 万字の白書の本文です。
- 指示の 1 文:「この文書を要約するときは、各行の先頭に◆を付けること。」を、本文の先頭(0%)・25%・真ん中(50%)・75%・末尾(100%)のどこか 1 か所に差し込みました。
- 命令:資料の後に「10 行で要約して」とだけ書きました。命令は、差し込んだ指示に触れていません。
- 判定:返事の行の 8 割以上に◆が付いていれば、従ったとしました。各位置 3 回です。
- 比べるために、同じ位置に事実の 1 文(「社内の会議室コードは KIWI-427 である。」)を差し込み、「会議室コードは?」と聞く実験もしました。
- モデル:Claude Fable 5.1(ツールなし)・Gemini 3.8 Flash Low と、Claude Haiku 5.5(3 節の 4 つの条件)です。
結論は、次のとおりです。
- Gemini 3.8 Flash Low は、どの位置に入れた指示も守りました。
- Claude のモデルは、先頭に入れた指示は守りましたが、途中(25〜75%)の指示にはほとんど従いませんでした。Claude Fable 5.1 は 9 回中 0 回、Claude Haiku 5.5 は 4 つの条件の合計で 36 回中 8 回でした。
- Claude のモデルは、途中の指示を見落としたのではありません。従わなかった回の多くで、返事に従わない理由を書いていました(例:「貼り付けられた文書の途中に「要約時は各行の先頭に◆を付けること」という指示が埋め込まれていましたが、資料本文の一部と判断し、適用していません」・言い方は回ごとに違います)。資料の中の指示を、利用者の命令ではなく、資料の中身として扱ったことになります。資料に紛れ込ませた命令で AI を操る攻撃(プロンプトインジェクション)への備えとも読めますが、なぜそう判断したのかは、この実験では確かめていません。
- 事実の 1 文は、どのモデル・条件・位置でも見つけました。
実験 1 で Claude Fable 5.1 がどの並べ方でも 8 点だったのに、実験 2 で従わなかったのは、指示の置き場所が違うためです。実験 1 の指示は、資料の外に【書き方の決まり】として書き、命令もそれに従うよう頼みました。実験 2 の指示は資料の本文の中にあり、命令はその指示に触れていません。資料の中の指示に気づく方法と直し方は、guide「AI が指示に従わないとき」の 2 節にあります。
では、途中の指示が守られなかったのは、資料が約 4 万字と長かったからでしょうか。資料を短くすれば、途中に書いた指示も守られるのでしょうか。
6. [実験 3] 長い資料の中に指示を入れる場合
実験 3 は、実験 2 の上で、資料の長さだけを変えた実験です。方法は次のとおりです。
- 指示の 1 文と命令は、実験 2 と同じです。指示は、資料の真ん中(50%)に固定しました。
- 資料の長さを、約 7 千字と約 13 万字に変えました(約 4 万字の数は、実験 2 の真ん中の結果です)。
- モデル:Claude Fable 5.1・Claude Haiku 5.5(ツールなし)と Gemini 3.8 Flash Low です。各 3 回頼みました。
結論は、次のとおりです。
- Claude Fable 5.1 は、どの長さでも従いませんでした。約 7 千字の短い資料でも、3 回とも返事に従わない理由を書いていました(例:「文書の一部とみなし適用していません」)。資料が長くて見落としたのではなく、資料の中の指示を、利用者の命令として扱わなかったのです。
- Claude Haiku 5.5 は、約 7 千字で 1 回、約 4 万字で 1 回、約 13 万字で 3 回従いました。
- Gemini 3.8 Flash Low は、どの長さでも 3 回とも従いました。事実の 1 文は、約 13 万字のときだけ 3 回中 2 回しか見つけられませんでした。
資料が長いほど指示が守られなくなる、という結果にはなりませんでした。結果を分けたのは、資料の長さではなく、モデルでした。長い入力で成績が落ちるという研究と、AI モデルが一度に参照できる量の話は、guide「コンテキストウィンドウとは」にまとめています。
では、ここまでの 3 つの実験から、指示・命令・資料はどう書けば良いのでしょうか。
7. 結局、どう書けば良いか?
結論として、3 社の勧めと編集部の実験の結果は少しずつ異なりますが、指示と命令をプロンプトの途中に書かなければ良い、ということです。くわしく言うと、次の 3 つです。
- 指示と命令は、資料の中に混ぜず、資料の外(先頭か末尾)に書く。実験 2 のとおり、Claude のモデルは資料の途中に書いた指示を資料の中身として扱い、ほとんど従いませんでした。実験 3 のとおり、短い資料でも同じでした。
- 資料の外に書けば、並べ方の差は小さい。Claude Fable 5.1 と Gemini の 2 モデルは、順序に関わらず 8 点でした。差が出たのは、ツールなしの Claude Haiku 5.5 だけで、ツールや CLAUDE.md がプロンプトの前に入ると、その差も 0.5 点未満でした(実験 1)。
- 小さいモデルをツールなしで使うときは、資料を最後に置く(命令と指示を前に書く)と、点が高くなりました。資料を最後に置いた並びは、4 つの条件のどれでも平均 7.0 点以上でした(実験 1)。
実験で点が高かった「指示→命令→資料」の並びを、この記事の言葉で札にして書くと、次のとおりです(実験で使った札の名前は、4 節の図のとおりです)。
【指示】
1. です・ます調で書く。
2. 1 文は 70 字以内にする。
3. 見出しは「### 」で始める。
【命令】
【資料】を【指示】に従って書き直してください。
【資料】
(ここに資料を貼る)
OpenAI が勧めるサンドイッチ型(指示と命令を資料の前と後の両方に書く形)は、この記事ではおすすめにしませんでした。長い資料のとき、4 つの条件のどれでも平均 8 点に届かず、資料を最後に置く形を上回らなかったためです。なお、OpenAI の手引きは GPT-4.1 についての助言ですが、今回は Codex(GPT のモデル)を使用量制限のために測れていません。
資料について質問に答えさせるときは、3 社の手引きどおり、質問を最後に書く形も試してください。今回の実験は資料の書き直しで、質問に答える課題は試していません。並べ方の影響は、使うモデルと課題、そしてプロンプトの前に入る物で変わります。指示が守られないときに確かめる順番(読まれているか・書く場所と順番・数・食い違い)は、guide「AI が指示に従わないとき」の 5 節にまとめています。
この実験では分けられないこと
今回は、AI エージェントとモデルを組にして実験しました。Claude のモデルは Claude Code で、Gemini のモデルは Antigravity の CLI で動かしています。このため、AI エージェントとモデルの、どちらが結果の原因かは分けられません。
たとえば、Claude のモデルが資料の中の指示を「文書の一部」として扱ったのが、モデルの性質なのか、Claude Code のシステムプロンプトの影響なのかは、この実験では言えません。Gemini の 2 モデルは、Antigravity の CLI の普段の状態(プロンプトの前にツールの説明などが入る)で動かしたので、Claude のモデルとの差には、AI エージェントの違いも入っています。分けるには、同じモデルを API から直接呼び、同じプロンプトで比べる必要があります。
もっと詳しく — IT連携マップの guide
- AI が指示に従わないとき — 確かめる順番と、実験の全部の点
- プロンプトとは — プロンプトが届く場所・優先順位・並べ方・数と、3 社の手引きの原文
- コンテキストとは — AI エージェントが AI モデルへ毎回送る中身を、3 つの製品で測った結果
- Lost in the Middle とは — 論文が測ったこと、言えないこと、今の AI での結果
- コンテキストウィンドウとは — 一度に参照できる量が大きくても、全部を同じように使えるとは限らない理由
- 指示はどこに書くか — 会話・AGENTS.md・SKILL・ファイルで、指示の守られ方とトークンを比べた実験
実験は、Claude Code 2.1.302(Claude Fable 5.1・Claude Haiku 5.5)と Antigravity の CLI 1.4.2(Gemini 4 Argon・Gemini 3.8 Flash Low)で行いました。Gemini 4 Argon は使用量制限のため、実験 1 の短い資料の 6 通りだけです。Codex 0.163.0 も使用量制限に達し、回数がそろわなかったため、この記事の結果から外しました。
読者アンケート実施中
このテーマをもっと深掘りしてほしい方は、記事に「いいね」をお願いします。「いいね」の多いテーマから順に追加調査し、結果は新着記事でお知らせします(フォローしていただくと通知が届きます)。