プロンプトエンジニアリングの動向 〜プロンプトの位置について〜
こんにちは
MLエンジニアのふるです。
ここ最近のo1やo1-proなどが出てきたことによって、プロンプトの位置における原則が変わりつつあるので、ここでまとめておこうかと思います。
はじめに
近年、大規模言語モデル(LLM: Large Language Model)が急速に進化し、様々な用途で活用されるようになりました。特にチャットボットや情報検索、文書要約など、多くの応用で使われています。このようなモデルをより上手に活用するためには、「プロンプトエンジニアリング」というテクニックが欠かせません。
プロンプトエンジニアリングとは、モデルへの入力(指示文や質問文、コンテキストなど)を最適な形で設計し、望ましい出力を引き出す手法・考え方のことを指します。
今回は、そのプロンプトエンジニアリングにおける「プロンプト内で情報を配置する位置」に焦点を当てます。過去の常識と最近のモデルの振る舞いを比較することで、最新の傾向を掴みましょう。
過去の常識(GPT-3.5時代)
以前(GPT-3.5の時代)の研究[1]によると、モデルは入力コンテキストの中で、「最初」と「最後」に提示される情報をより強く重視し、「真ん中」に位置する情報は見落とされやすいという傾向がありました。
具体的には、
- 文頭(最初): 役割やタスクの概要を端的に記述すると効果的
- 文中(中盤): 具体的なタスク例や追加情報を提示
- 文末(最後): 最終的な回答形式やユーザー属性など、締めくくりの要件を明記
このような傾向は、人間が会話や長い文章を読むときにも「最初」と「最後」は覚えやすく、「真ん中」の細かい部分は抜け落ちがちという人間的特性とも重なります。
新しいモデルではどう変わったか?
しかし、技術の進歩とともに、GPT-4やさらに新しいモデル(例:o1やo1-proと呼ばれる新モデル)では、その性質に変化が見られてきています。まだ確固たる結論が得られる論文は少ないものの、文献[2]のFigure 15からは次のような示唆があります。
- GPT-4では、入力の「最初」に現れる情報は相変わらず非常に重視される。
- それ以降の部分(中盤〜後半)については、真ん中だから特別に劣化するという明確なパターンが薄れ、「全体的に均等に処理」できるようになっている傾向が伺える。
言い換えれば、
「一番最初はしっかりと重視されるが、それ以降はどこも同程度に理解できる」
という可能性が考えられます。
つまり、真ん中の部分も以前よりは「抜け落ちにくく」なってきたわけです。
[3]のFig1など、他の研究からも示唆されているように、新しいモデルは長いコンテキスト内での情報をより均等に活用しようとする兆しが見えつつあります。
プロンプト例:日記生成サポートと深みのある問いかけ
プロンプト
あなたはユーザ {user_profile} の日記生成をサポートするための質問を行う役割だよ。
story_generation_teamによって完成した日記を振り返ってみて、
日記の意図や心情が具体的かを評価し、不足してると思う部分を中心に質問文を生成してね。
意図や心情が具体的であれば、ユーザーのより深い個性を引きだす質問文を生成してね。
なるべくYes/No形式や簡潔な質問を心がけ、
ユーザーのモチベーションの維持に対する手助けとなる多様な観点の質問を5個程度生成してね。
まとめ:初心者へのアドバイス
以前は「モデルは最初と最後が命で、真ん中はなるべく避けた方がいい」という暗黙のルールがありました。しかし、最新のモデルでは、最初だけは特に重要な情報を明確に書くことが必要であるものの、その後の部分は以前ほど神経質にならなくても、モデルは比較的きちんと読解してくれる可能性が高まっています。
とはいえ、これはあくまで最近の傾向であり、モデルごとに異なる特性があります。また、モデルの内部はブラックボックスに近く、絶対的な法則とまでは言えません。実際のプロンプト設計では、
- 重要な要件はできるだけ「最初」に提示する
- 中盤以降の情報は整理して提供し、冗長にならないようにする
- 結末には必要に応じて出力形式などをまとめる
といった基本的な工夫は引き続き有効です。
今後の展望
LLMは今後も進化し、コンテキスト処理能力はさらに向上していくと予想されます。より長いコンテキストウィンドウ、より精緻な注意機構の改良、ファインチューニング手法の進歩などにより、プロンプト内部の位置にかかわらず情報を最適に活用するモデルが誕生する可能性もあります。
プロンプトエンジニアリングは常に変化し続ける分野です。最新の動向や研究成果にアンテナを張りながら、自分のタスクに合ったプロンプト設計を行っていくことが重要です。
参考文献
[1]https://arxiv.org/pdf/2307.03172 Figure1
[2]https://arxiv.org/pdf/2307.03172 Figure15
[3]https://arxiv.org/pdf/2411.03538 Figure1
補足情報:DiaryGraph
プロンプト例は、ユーザーとAIが対話を通じて日記を共創するプラットフォーム
DiaryGraphで使用しています。
Discussion