プロンプトデザイン 超初級編
ChatGPTを発端にして、生成系AIがもの凄い盛り上がりをみせています。
生成系AIの大部分はプロンプトという言語指示によってコントロールするため、今「プロンプト(指示)」というものの重要性が浮き彫りになってきているわけです。
筆者はAIの専門家ではない一般ピーポーでありながら、このプロンプトとそれなりに向き合ってきた気がするので、現時点でのプロンプトに関する知見をシェアしたいと思います。
はじめに
なんでもまずは基礎が重要。
筆者としてはこの基礎の重要性を理解することさえもプロンプトデザインに大きく関わってくると思いますので目ん玉ひん剥いて考えましょう… ひん剥いた意味…
プロンプトとは?
ものすごく簡単に言うとAIへの「指示」
ChatGPTでいうと、New Chatの一番最初に与える「指示」のことです。
ただの指示であってその指示によって何が出来るかは、
何のAIを使うかによって決まります。
ChatGPTの場合であれば、プロンプトによって意図したテキストが生成されて、Midjourneyであれば意図した画像が生成されるといったものです。
今回は一番難易度が高くて汎用性があるChatGPTのプロンプトに焦点を当てて話します
良いプロンプトってどんなの?
汎用性がある or 専門性がある
出力のフォーマットが一定
例えば
✖ ダメなプロンプト 例
指示が大雑把で汎用性がない。出力するフォーマットの指定もない
〇 良いプロンプト 例
フォーマットの指定があり、テーマやトピックを変えるだけで別の記事が書ける
良いプロンプトのメリット
プロンプトデザインによって良いプロンプトが作れるようになると大きく3つのメリットがある。
欲しい回答をすぐに引き出せる
精度の高い回答が得られる
自分の専門外の情報を引き出せる
プロンプトデザインとは?
厳密には全ての生成AIで必要になることではあるけど、
今の世間一般的として基本的にChatGPTなどのText生成AIの出力の精度を上げるための学問だという理解が一番いい。言い換えると良いプロンプトを作成するための方法をまとめた学問。
プロンプトデザインとプロンプトエンジニアリングの違い
最近よくプロンプトデザインと似たような言葉でプロンプトエンジニアリングという言葉を聞くことが多い。
正直どちらも新しい言葉なのでどちらが正しいとかはないが、プロンプトエンジニアリングと呼ばれていたものが、どんどんプロンプトデザインという呼ばれ方に変わってきたよう。
違いは何かというと、たぶん明確な違いはないけど、筆者は以下のように定義しています。
図のようにプロンプトエンジニアリングとはプロンプトデザインの一部だというのが分かりやすいのかな?と思ってます。
プロンプトの精度を向上させるための『プロンプトデザイン』というのは
自分主体の情報を使って出力の精度を上げる方法
生成AI主体の情報を使って出力の精度を上げる方法
があって、
後者の方法のことを『プロンプトエンジニアリング』と呼ばれている気がします。
ただここで重要なのはAIで良い成果物を作成するためには、
①自分の経験や知識をAIに移植する
②AI自身の癖を理解して活かす
という大きく2つのアプローチ方法があるということを理解すること
面白いのは、プロンプトデザインには『人生経験や今まで培った知見』が大きな影響を及ぼすということ。
そう!存在している人間であればだれでもプロンプトデザイナーであるということ!
捨てたもんじゃないな!人間!
プロンプトデザインって要らなくなるんじゃないの?
でも最近はAutoGPTやBabyAGIといった自立型AI(曖昧なゴールを自動で達成してくれるAI)というのが出てきてるんだから、わざわざプロンプトデザインなんて必要ないんじゃないの?
って声をよく聞きます。
AutoGPTが何かわからない方はこちら↓
それに対しての自分の回答としては
確かに!
って感じですが、完全に同意はしません。
なぜなら完全な自律型AIは、
自動で作業を進めてくれるがゆえに自分の意見が反映させられないから。
もちろん、進行中にフィードバックをかけることもできますが、
それってもうプロンプト使ってるよね?
じゃあどこまで言ってもプロンプトをデザインする必要性は出てくるわけです。
あとはゴールを達成するためのプロセスも結構重要だと思ってて、
そのプロセスの選択を完全にAIに任せてしまうと、
ゴールは達成できたけど「なにやってんだよ!」っていうプロセスを踏むことがあり得るかもしれません。
もしかしたらこんなことが…
というのは極端すぎて起こらないとは思いますが、
何にしても
成果物に対して自分の意志をしっかりと繁栄させたいという人は多かれ少なかれ『プロンプトデザイン』が必要になってきます。
この自分の目標をしっかりと把握して、正確にAIに伝えるという能力は一時は確実に必要になる能力だと思う。
自分の意見はほとんどなく、目標も大雑把にしか定まっていなく、ゴールが達成できたらプロセスなんでなんでもいい!というあなた!
そっとこの記事を閉じてAIの進化を待ちましょう…
良いプロンプトを作成するためには?(概要)
AIに関して理解を深める
具体的で詳細な目標を決める
目標を達成するためにさまざまなtipsを組み合わせて試行錯誤する
めちゃくちゃ当たり前のことだね!
でも結局これが重要だなと思った。
小手先を鍛えて最初から完全なプロンプトを作るというよりかは、
自分の作りたいものに向けて試行錯誤するというのが最重要事項だなと筆者は思っている。
プロンプトの超初級編としては一旦ここまで!
内容としては抽象的な表現がおおいけどあえてそうしてるだけです。
いきなり細かい表現を使うと自分の伝えたいことが伝えられないのですこれが、実はこれもプロンプトのテクニックだったりします。
そう!筆者はChatGPTへのプロンプトを応用してこの記事の構成を考えていると言っておきます!
決して抽象的なことから細かいことを網羅しようとしたけど、思ったよりも作成に時間がかかって心が折れかかっているわけではありません!
違います!
次回予告
今後はより具体的で体系的な内容をできるだけ詳細にわかりやすく解説していきます。以下概要
ChatGPTに正しく理解してもらう
ChatGPTの思考を深くする
出力内容のフォーマットを固定して毎回指定のフォーマットで出力させる
という3つのものの精度を上げていくために
一般的なプロンプトテクニック
代表的なプロンプトテクニック
事前情報を与えずにいきなり質問を投げる
(Zero-shot)いくつかの具体例を挙げて回答の精度を上げる
(Few-shot Prompting)ステップ毎の思考を事前に与える(Chain-of-Thought
Prompting)「ステップ毎に考えてください」と言う一言を付け足す(Zero-shot
CoT)
一般的な調整プロンプト(精度を挙げるためのプロンプト)
Kouhei的プロンプトテクニック
明確な指示を与えることで出力結果を絞る
コマンド
変数
キーワードトリガー
プログラミング的構文
明確な指示は出さずにChatGPTに意味をくみ取ってもらう
構造化
力関係
区切り文字
という内容を徹底的に解説して、自分のアウトプットタイムに一旦区切りを付けようと思います。
大丈夫。心配しないで
筆者は男の子で心がとても強いため恐らく全て書ききれると思います…
…
もし少しでも面白いと思ったら、是非RTをよろしくお願いします!