把長資料交給 AI 來做事時,想要它遵守的指示應該寫在資料前面,還是後面?閱讀 Anthropic、Google、OpenAI 三家的指南後,答案會因公司而異。
因此,IT 連結地圖編輯部把資料・命令・指示三者重新排列成 8 種組合,請 4 個模型用同樣的方式改寫,做了這項實驗。圖 1 整理了方法、結果與結論。
這篇文章的數據與出處,也已整理在 IT 連結地圖的 guide「AI 不遵守指示時」中。
| 語詞 | 本文中的意思 | 實驗中使用的例子 |
|---|---|---|
| 資料 | 讓 AI 閱讀的文章 | 總務省「令和7年版 資訊通信白皮書」本文 |
| 命令 | 希望 AI 做的事情本身 | 「請重新改寫」 |
| 指示 | 怎麼做的步驟或方針 | 「請用書面語」「一個句子不超過 70 字」 |
| 脈絡 | 一次傳給 AI 模型的全部內容 | 工具說明・系統提示詞・CLAUDE.md・提示詞 |
與強調「執行本身」的命令相比,指示還包含步驟與方針的細微差別。本文把要 AI 做的工作(改寫、摘要)稱為「命令」,把關於做法的要求稱為「指示」。三者合起來的整段文字,就是送給 AI 的提示詞(什麼是提示詞)。
在三家指南中,屬於命令的內容被稱為「問題(query / question)」,而指示則寫成「instructions」。那麼,三家公司各自是建議寫在哪裡呢?
關於提供長資料的情境,三家指南寫的是下面這些內容。
| 提供方・指南 | 內容 | 原文(節錄) |
|---|---|---|
| Anthropic「Prompting best practices」 | 當輸入是長文件或大量資料(2 萬 token 以上)時,應放在問題・指示・範例之上,也就是提示詞開頭附近 | "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」 | 理想上,指示應放在所提供脈絡的開頭與結尾兩側。若只寫一次,放在資料前面比放在後面更好(註) | "ideally place your instructions at both the beginning and end of the provided context" |
(註)本文將 OpenAI 建議的「把指示寫在資料前後兩側」稱為「三明治型」,因為資料被前後兩段指示夾住了。在第 4 節與第 5 節中,也測試了這種形式。
Anthropic 建議在長資料情況下,把問題・指示・範例放在資料後面;Google 建議把問題放最後;OpenAI 建議把指示放在資料前後兩側,若只寫一次則放前面。OpenAI 同一份指南也提到,若指示彼此衝突,GPT-4.1 較傾向遵從接近提示詞結尾的那一個。也就是說,有些公司建議放「前面」,有些建議放「最後面」。三家原文的完整內容可在 guide「什麼是提示詞」的出處中開啟。
另一方面,三家都建議把內容寫在資料的前或後,也就是資料的邊緣,沒有任何一家說要寫在資料正中間。關於長輸入的邊緣與中間會讓 AI 成績不同,最知名的研究之一就是「Lost in the Middle」論文。
Liu 等人(2023)的論文「Lost in the Middle: How Language Models Use Long Contexts」移動了長輸入中與答案相關資訊的位置,並指出當資訊在開頭或結尾時表現較高、放在中間時則大幅下降,呈現 U 字形趨勢。在 GPT-3.5-Turbo 上,於 20、30 份文件的最差位置,分數甚至低於完全不提供文件就作答的 56.1%。
不過,論文移動的是包含答案的文件位置,以及要求模型搜尋的關鍵位置,並沒有移動指示的位置。論文只推測:由於訓練資料中的指示多半放在輸入開頭,模型可能更重視輸入的前段。論文實際測量了什麼、沒測什麼,已整理在 guide「Lost in the Middle 是什麼」中。
除了「寫在邊緣」這個話題外,還有一篇研究「Prompt Repetition Improves Non-Reasoning LLMs」指出,「同一個問題連續給兩次」會更有效。在關閉推論(thinking)的 7 個模型中,70 個測試有 47 個進步,沒有任何測試變差。不過同一篇研究也寫到,一旦啟用推論,效果幾乎沒有到只有些微改善而已(guide「什麼是提示詞」)。
也就是說,從研究中無法得到「指示該寫在最前面還是最後面」的答案。因此編輯部決定自己做實驗。不過在那之前,還有一件事要先確認。像 Claude Code 這類 AI Agent,提示詞真的是 AI 模型收到內容的最前面嗎?
研究與三家指南談的是提示詞中的位置。然而,使用像 Claude Code 這類 AI Agent 時,送到 AI 模型的並不只有提示詞。在提示詞前面,產品還會加入以下內容:
關於順序,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 顯示後計算出的。
--tools "" 啟動 Claude Code。提示詞前只有系統提示詞(3.1k token)。在①中,提示詞幾乎就在脈絡的最前端;在④中,提示詞前面已有約 4 萬 token 的文字。關於脈絡中會包含什麼內容,可參考 guide「什麼是脈絡」。
提示詞的開頭,不一定等於整個脈絡的開頭。即便如此,只要改變提示詞內部的排列方式,AI 的遵從程度會變嗎?
實驗中,我們把圖中的三個部分合併成一則訊息送給 AI,請它改寫資料。
排列方式是把三個部分的 6 種順序,再加上以下 2 種,共 8 種:
評分以程式進行。每條指示各算 1 分,若回覆遵守該項就給 1 分,滿分 8 分。例如「請用書面語」這項,只要句尾以「です」「ます」等結尾的句子占 95% 以上,就判定為遵守。
所使用的模型共有 4 個。2026 年 10 月 18 日,使用 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(小型模型),各請求 8 種排列 × 2 種資料,並各重試 3 次。Claude Code 使用條件①(無工具)執行。Antigravity CLI 沒有關閉工具的設定,因此 Gemini 的兩個模型都處於平常狀態,也就是在提示詞前有工具說明等內容。隔天 10 月 19 日,只針對 Claude Haiku 5.5,將第 3 節的 4 種條件各在相同時段重試 3 次(共 192 次)。實驗條件的完整內容,已載於 guide「AI 不遵守指示時」中的「調查細節」。
那麼,改變排列順序,以及改變提示詞前方包含的內容,分數會改變嗎?
首先比較了 4 個模型(10 月 18 日・圖中的①)。
會因排列而出現差異的,只有 Claude Haiku 5.5。因此隔天又用 Claude Haiku 5.5,把提示詞前方的內容改成 4 種情境,重做了同樣的實驗(10 月 19 日・圖中的②)。
也就是說,即使是 Claude Haiku 5.5,當工具說明或 CLAUDE.md 放在提示詞前面時,排列差異也幾乎消失了。為什麼會消失,這項實驗沒有進一步確認。各條件下的輸入 token 與各排列的完整分數,可參考 guide「AI 不遵守指示時」中的「調查細節」。
三明治型與兩次重複,在長資料中,不論 4 種條件哪一種,平均都沒有達到 8 分。三明治型在有工具時是 6.7 分,在+CLAUDE.md 時是 6.3 分,都是該條件下最低的組合。第 2 節提到「重複兩次會更好」的改善,在這次實驗中並沒有出現。
把資料放在最前面是 Anthropic 和 Google 所建議的形式。不過,兩家的指南主要是針對要回答資料相關問題的情境;這次的任務是改寫資料,情境不同。
到目前為止的 8 種排列中,指示都一律在資料外面(前或後)。那麼,正如第 2 節的論文所示,如果把指示寫在資料中間,就會不容易被遵守嗎?改變提示詞前方的內容,也會有影響嗎?
在約 4 萬字白皮書的開頭(0%)・25%・中間(50%)・75%・結尾(100%)其中一處插入一個句子,並在資料後方加上命令來請求(各 3 次)。插入的句子分為兩種:
首先在 10 月 18 日,以 Claude Fable 5.1(無工具)與 Gemini 3.8 Flash Low 測試(圖上方兩列)。
隔天 10 月 19 日,使用 Claude Haiku 5.5,並把提示詞前方內容改成 4 種情境再試(圖下方四列)。寫在開頭時 12 次全數遵守,寫在結尾時 12 次中有 10 次遵守,但寫在中間時只有 36 次中 8 次遵守。75% 的位置在任何條件下都 1 次也沒遵守。第 5 節中排列方式的差異,會因提示詞前方內容而消失,但中間指示不易被遵守這件事,則在任何條件下都沒有改變。
不過,Claude 的模型並不是沒有注意到中間的指示。多數未遵守的回合中,回覆最後會寫出像這樣的內容:「貼上的文件中嵌入了『摘要時請在每一行開頭加上 ◆』的指示,但我判定那是資料本文的一部分,因此沒有套用」(Claude Fable 5.1 的回覆)。在中途未遵守的回合中,Claude Fable 5.1 有 9 次中的 6 次、Claude Haiku 5.5 有 28 次中的 25 次都這樣寫。也就是說,Claude 的模型把資料中的指示當成文件內容,而不是使用者命令。這也可視為對於把命令混進資料來操控 AI 的攻擊(提示詞注入)的防備,但這次實驗沒有確認它為何這樣判斷。
事實句不論模型・條件・位置為何,3 次都能找到。即使寫在同一位置,事實仍會被當作資料內容閱讀,而指示則不會被視為使用者命令。關於如何察覺資料中的指示,以及如何修正,可參考 guide「AI 不遵守指示時」第 2 節。
那麼,中間的指示不被遵守,是因為資料約有 4 萬字那麼長嗎?如果把資料縮短,中間寫的指示也會被遵守嗎?
第 7 節與第 6 節是不同的實驗。10 月 18 日時,將同一條指示句固定在中間(50%)位置,只改變資料長度為約 7 千字與約 13 萬字(約 4 萬字的數字,是第 6 節中 10 月 18 日實驗的中間結果;Claude 為無工具)。
Claude Fable 5.1 即使在約 7 千字的短資料中也不遵守,原因與第 6 節相同。約 7 千字時它 3 次都寫出類似「視為文件的一部分,沒有套用」的回覆;約 13 萬字時也是 3 次中有 1 次這樣寫。並不是因為資料太長而漏看,而是它把資料中的指示當成不是使用者命令。這項實驗沒有得到「資料越長,指示越不容易被遵守」的結果;分出差異的不是資料長度,而是模型。順帶一提,事實句在約 13 萬字時,Gemini 3.8 Flash Low 只在 3 次中找到 2 次,是這項實驗中唯一一次事實被漏掉的情況。關於長輸入中成績下降的研究,以及 AI 模型一次能參照多少內容,可整理在 guide「什麼是脈絡視窗」中。
那麼,根據目前的結果,指示・命令・資料應該怎麼寫才好?
結論來說,三家廠商的建議與編輯部的實驗結果略有不同,但重點是不要把指示與命令寫在提示詞中間。更具體地說,有以下三點:
把實驗中分數較高的「指示→命令→資料」排列,改寫成本文的標籤形式如下(實驗使用的標籤名稱,請參照第 4 節的圖):
【指示】
【命令】
請依【指示】重新改寫【資料】。
【資料】
(請在此貼上資料)
OpenAI 建議的三明治型(把指示與命令同時放在資料前後兩側)在本文中並不特別推薦。因為在長資料時,4 種條件下平均都沒有達到 8 分,也沒有比把資料放最後更好。需要注意的是,OpenAI 的指南是針對 GPT-4.1 的建議,但這次因使用量限制,無法測到 Codex(GPT 模型)。
若是要讓 AI 回答資料相關問題,也請依三家指南的說法,試試把問題放在最後。這次的實驗是改寫資料,並沒有測試回答問題的任務。排列順序的影響,會隨模型、任務以及提示詞前方包含的內容而改變。當指示沒有被遵守時,確認的順序(是否有讀到、放置位置與順序、數量、是否衝突)已整理在 guide「AI 不遵守指示時」第 5 節。
這次是把 AI Agent 與模型成對進行實驗。Claude 的模型是在 Claude Code 中執行,Gemini 的模型則是在 Antigravity 的 CLI 中執行。因此,無法分辨結果究竟是 AI Agent 還是模型本身造成的。
例如,Claude 的模型把資料中的指示視為「文件的一部分」,到底是模型特性,還是受到 Claude Code 系統提示詞影響,這次實驗無法斷定。Gemini 的兩個模型是在 Antigravity CLI 的平常狀態下執行,也就是提示詞前面會有工具說明等內容,因此與 Claude 模型之間的差異也包含了 AI Agent 的不同。若要區分,必須用相同模型直接透過 API 呼叫,並以相同提示詞比較。
第 5 節的②與第 6 節的 4 種條件實驗,於 2026 年 10 月 19 日使用 Claude Code 2.1.302 的 Claude Haiku 5.5 進行(312 次・錯誤 0)。第 5 節的①・第 7 節,以及前一天結果中寫出的數據,是在 2026 年 10 月 18 日,使用 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 因使用量限制,排列實驗只測了短資料的 6 種組合。Codex 0.163.0 也達到使用量限制,且次數無法對齊,因此未納入本文結果。
讀者問卷進行中
如果你希望我們更深入探討這個主題,請幫文章按讚。會依照按讚數較多的主題順序追加調查,結果將在新文章中公布(追蹤後可收到通知)。