範例排序とは、few-shot prompting(少数例プロンプティング)で複数の例を添える際、その例がプロンプトに並ぶ順序が、Claudeが実際に何を学び、どの特徴を模倣するかに影響することを指す。これは「例を与えるかどうか」や「何個与えるか」の問題ではない。それらは few-shot prompting 自体が扱う範囲だ。範例排序はさらに細かい層を扱う。同じ一組の例であっても、並べる順序を変えると出力結果が変わりうるという点だ。多くの人は少数例プロンプトを準備する際、必要な状況を網羅しているかどうかにしか注意を払わず、どれを先に、どれを後に置くか自体が結果を左右する変数であることにはほとんど気づいていない。
このニーズが生じるのは、モデルが一連の例を処理する際、各例を完全に対等で無差別な参照資料として扱うわけではなく、最後に現れる内容がより強い重みを持ちやすいからだ。これは人が長い例のリストを読むときの傾向にも似ており、最も直近に読んだものを最もはっきり覚え、それを「要点」だと捉えやすい。手元の例で、前半が通常のケースで、最後の一つがたまたま特殊なケース(例外処理、あるいは書式が最も異なるもの)だった場合、Claude はその外れ値の特徴を全体のルールの核心だと捉え、当てはめるべきでない場面にまで過剰に適用してしまうことがある。この効果は例同士の違いが大きいほど顕著になり、例が互いに似ているほど影響は小さくなる。これが、同じ一組の例でも順序を変えてテストすると、目に見えて異なる出力が得られることがある理由でもある。
実務では三つの具体的なやり方がある。第一に、最も代表的で「通常のケースはどう扱うべきか」を最もよく反映する例を先頭に置き、Claudeに主要なルールの印象を最初に形成させる。特例や境界ケースは中間に置き、最後には置かない。第二に、例のセットに本当に特例(書式が大きく異なる境界ケースなど)を含める必要がある場合、その例の後に主流の書式へ戻る例を意図的にもう一つ加え、特例がプロンプトの中で最後に見られる内容にならないようにする。第三に、例同士の違いが大きく、互いに同じカテゴリーとは見なしにくい場合は、いくつかの並び順を試し、出力が安定するかどうかを観察する。順序を入れ替えて出力に明らかな違いが出るなら、それは通常その例のセット自体に一貫性が欠けている兆候であり、その場合は並び順ではなく、一組の例で異なる種類の状況を無理にカバーしようとしていないかを見直すべきことが多い。
あなたにとって、範例排序の本当の価値は、少数例プロンプトの出力がなぜか特定の例のスタイルに偏っていて理由が分からないとき、順序こそが見落とされがちな答えであるという点に現れる。多くの人はまず例の選び方が間違っていたのではないかと疑うが、問題が単に順序だっただけということもあり、最後の例を中間に移すだけで解決し、新しい例を探し直す必要はないこともある。身につけるべき習慣は、少数例プロンプトを準備する際、「どの例を先頭に、どれを最後に置くか」を「どの例を選ぶか」と同じくらい重要な決定として扱うことであり、例を選び終えた後になんとなく貼り付ける順序として扱わないことだ。注意すべきリスクは、例同士の違いが小さいほど順序の影響は目立たなくなる点で、その場合は順序を何度も調整する時間は必ずしも割に合わない。順序の最適化に投資する価値が高いのは、通常、例同士の違いが大きい場合や、その中に明らかな特例が含まれている場合である。
OpenAI の2020年のGPT-3論文『Language Models are Few-Shot Learners』は既に、少数例プロンプティングの性能がプロンプト内での例の提示方法によって変動することを指摘していた。その後の in-context learning(文脈内学習)に関する研究はさらに、同じ一組の例を異なる配置でテストした際の結果のばらつきを引き起こす要因の一つが例の並び順であることを裏付けている。この種の「順序への敏感性」に関する議論は、その後プロンプトエンジニアリングの分野でプロンプトの安定性を検討する際の一般的な切り口となった。
メリットは、例を差し替えることなく順序を調整するだけで出力の偏りを修正できる点で、コストは極めて低く、通常は数秒で調整とテストが可能だ。デメリットは効果が安定しない点で、例同士の違いが小さいほど順序による改善は目立たなくなり、順序を何度も調整する時間をかけるより、例そのものの選び方に問題がないかを見直す方が効果的なこともある。