
メタプロンプティング
メタプロンプティングのお話をします。
メタプロンプティングとは
メタとは操作自体を操作することを示します。「高い次元の」「超越した」という意味で、学問や視点をその外側に立って見ることを意味します。
位置の変化率が速度で、速度の変化率が加速度です。加速度のように変化率の変化率を考える、というのがメタな考え方です。
プログラムを生成するプログラムを書く、というのもメタな考え方です。
ここでメタプロンプティングといっているのは、「プロンプトを生成するプロンプトを書く」ということです。
ChatGPTでDALLE-3を使って画像を生成するときにも、人間が入力したプロンプトをChatGPTがDALLE-3向きのプロンプトに変換してDALLE-3に入力しています。
生成AIのすごいところは言語を扱うところです。プロンプト自体も言語なので、プロンプトを出力することが可能です。
メタプロンプティングの事例
シンプルな事例
目的を与えてプロンプトを出す、とか、目的とプロンプトを与えてプロンプトを書き直してもらう、というのがシンプルな事例です ([ai300lab])。
より複雑な事例
次のようなシーケンスをCanvasを利用して順に実行することも可能です:
目的を与えてプロンプトを3つ生成する
プロンプトを実行した結果を生成し、プロンプトの月に書き足す
目的に応じた評価基準を3つ生成する
評価基準を用いて先ほど実行した結果を評価し、それぞれ実行結果の次に書き足す
すべての結果を読み込んで、もっといい最終プロンプトを生成する
最終プロンプトを実行し、前の3つの結果と比較する
一番いい結果を出すプロンプトがどれかを出力する
いくらでも出力してはさらにもっといいプロンプトを考えさせればきりがないですが、このくらいでやめます。
繰り返しても同じモデルなのだから同じ結果が出ると思われるかもしれません。大規模言語モデルの特徴はプロンプトから学ぶインコンテクスト学習
(in-context learning) です。繰り返し、プロンプトを実行し、評価することで、パラメータに影響を与えるので同じ結果にはならないと個人的には思っています。
有効性
細かい工夫をしながらプロンプティングを考えるほうがメタプロンプティングより楽しいです。一方、モデルが新しくなったり、ツールが新しくなってりすると、個別のモデルに依存したプロンプトエンジニアリングは全部ご破算になってしまうことが多々あります。
メタプロンプティングは抽象化することによって、モデルや現在のツールの状態に過度に依存することを避けることができる有効な方法だと思います。
むすび
そもそも自分は何をしたいのかを抽象的に考えるのはそれなりに難度の高い作業です。メタプロンプティングはそのような抽象的な思考力を要求されます。
一方、生成AIの進化を考えると、個別のモデルに特化したプロンプトエンジニアリングには限界もあります ([stanford])。
しばらくはこの2つのせめぎあいが続きそうです。長期的にはメタプロンプティングの時代が来ると思います。
参考文献
[ai300lab] 【GPTs開発日記】(15) 目的とプロンプトの改善 https://note.com/ai300lab/n/nb71d699689b6 2024年
[stanford] Stanford Webinar - Large Language Models Get the Hype, but Compound Systems Are the Future of AI https://www.youtube.com/watch?v=vRTcE19M-KE Stanford online 2024年 58m05s