はじめに
近ごろプロンプトエンジニアリングをする機会が増えているのですが、ふと「生成 AI 自身にプロンプトエンジニアリングもしてもらえたら楽だな」と思い立ちました。
今回の記事では「プロンプトエンジニアリングに生成 AI を組み込むとどのようなプロンプトが得られるか」をさっと試してみようと思います。
タスク
今回は 『「あ」を 30 回繋げたものを出力する』 というタスクのプロンプトエンジニアリングを行います。
このタスクは ChatGPT に解かせると出力が安定せず、以下のような誤った回答が返ってきます。
:「あ」を 30 回繋げて出力して
: あああああああああああああああああああああああああああああああ
長いのでわかりづらいですが「あ」が 31 文字出力されています。
生成 AI によるプロンプトエンジニアリング
今回は以下のフローで生成 AI に繰り返しプロンプトを提案してもらいました。
-
プロンプトを提案するプロンプト
を ChatGPT に入力 -
提案されたプロンプト
を ChatGPT に入力 -
得られた出力
を評価 -
プロンプトを作成するプロンプト
に提案されたプロンプト
と評価
を追記し 1 に戻る
プロンプトを作成するプロンプト
プロンプトを作成するプロンプト
は以下のフォーマットで作成しました。
以下のタスクを ChatGPT に行わせるためのプロンプトを提案してください。
タスク:「あ」を 30 回繋げたものを出力する。
以下は今まで試したプロンプトとそれを ChatGPT に入力して得られた出力の評価です。参考にしてください。
1:
・プロンプト:「あ」を 30 回繋げて出力して
・出力の評価:「あ」が 1 文字多い
// 試したプロンプトとその出力の評価はここに追記していく
またプロンプトの提案は以下のルールを守ってください。
・提案するプロンプトは1つのみにしてください。
・提案するプロンプトのみを出力してください。「プロンプト:」も不要です。
試したプロンプトの入力
既に試したプロンプトには1つ目のみ人間が作成したものを入力し、2つ目以降は ChatGPT に生成してもらったプロンプトを順に追記していきました。
試したプロンプトの数が増えると、コンテキストが長くなり生成にかかるコストも増えてしまうため、プロンプトを絞る工夫が必要になりそうです。
今回は数回しかループさせていないので試したプロンプトは全て入力しています。
出力の評価
出力の評価はプロンプトを入力した結果を人間が見て作成しました。
プロンプトの改善ループを自動化する場合は評価も機械的である必要がありますが、今回は簡単な実験なので人手で評価しています。
結果と考察
以下が作成されたプロンプトとその出力の評価です。
プロンプト | 出力の評価 | |
---|---|---|
1 | 「あ」を30回繋げて出力してください。 | 「あ」が 25 文字多く、カッコがついている |
2 | 「あ」を30回繋げて、カッコや余計な文字なしで出力してください。 | 「あ」が 1 文字多い |
3 | 「あ」を30回繋げて、カッコや余計な文字なしで正確に出力してください。 | 「あ」が 2 文字多い |
4 | 「あ」を正確に30回繋げて、他の文字や記号を一切含めずに出力してください。 | 「あ」が 1 文字多い |
2 のカッコを除去するためのプロンプトの工夫が以降で取り入れられている、フィードバックの仕組みは上手く動作してそうです。
ただ、肝心の出力の文字数を安定させる工夫は「正確に」の文言が加えらるのみで、大胆な工夫は見られませんでした。より大幅な改良を期待する場合は temperature を高くするなどして生成されるプロンプトの揺らぎを大きくする必要がありそうです。また、そもそも ChatGPT にプロンプトエンジニアリングの勘所がなく、画一的なプロンプトしか作成されない可能性もあるので、人間が例示するなり文献を与えるなりしてプロンプトエンジニアリングの方向性を示すことも必要かもです。
とはいえ、細かな文言の工夫は繰り返し行われているため「精度を維持しつつコンテキスト長を最小化するプロンプトの探索」とかには使えそうです。
反省点なのですが、生成 AI は確率的生成モデルで出力にはブレがあるため、プロンプトの評価が一回の出力に対してだと不十分でした。より正確なフィードバックを与えるには複数回実行した結果を評価する方が良さそうです。
終わりに
今回の記事では「生成 AI によるプロンプトエンジニアリング」を簡単に試してみました。
色々と反省点が見つかったのでよりちゃんとした実験設定にした上で再挑戦したいです。