プロンプト
前Chapterで、Playgroundに文字列を入力しました。この文字列を「プロンプト(例示)」と呼びます。GPTはこのプロンプトに基づき、次に連ねるべき文字列を出力していきます。このプロンプトの内容こそが、生成される文章の内容を左右します。
プロンプトの例
プロンプトの例をいくつか見てみましょう。まずは下記のようなプロンプトを利用してみます。
(プロンプト)
チャットボットが活用できるユースケースを挙げてください。
チャットボットが活用できるユースケースを考えてくれました!
次に、少しだけプロンプトを付け加えてみます。
(プロンプト)
チャットボットが活用できるユースケースを挙げてください。
A. カスタマーサポートの自動化
B.
このように1つの項目を与え、尚且箇条書きの方法を「A. 」のようにアルファベット表記を指定してみました。
アルファベット表記かつAの項目と同じような文量で、文章を生成してくれました!
このように、プロンプトを与えて、次に生成される文章の例示をAIに認識させることで、AIはそれに沿った文章生成を行います。Generative AIは、このプロンプトを如何に適切なものにできるかが、精度向上の鍵になります。つまり、プロンプトを「エンジニアリング」すること、「プロンプトエンジニアリング」が非常に重要です。
「チャットボット」におけるプロンプト
次に、プロンプトを工夫してチャットボットのやり取りができるようにしていきます。まずは、下記のプロンプトを試してみましょう。
(プロンプト - A)
以下は、UserとAIの会話です。
User: こんにちは!調子はどうですか?
AI:
AIが応答を返してくれました!ちょっと会話を続けてみましょう。次のプロンプトはこちらです。
(プロンプト - B)
以下は、UserとAIの会話です。
User: こんにちは!調子はどうですか?
AI: 今日は元気です!あなたはどうですか?
User: それは何よりです。最近はどんなことをしているのですか?
AI:
無視されてしまいました。これだと応答として適切ではないです。事前情報をもう少し与えて、きちんと応答が返るようにしてみましょう。
(プロンプト - C)
以下は、UserとAIのプロフィールです。
Userは、都内の会社に勤務しているサラリーマンです。趣味は読書で、小説を読むのが好きです。
AIは、X社の研究室で生み出されたAIです。研究室を案内するアシスタントをしています。最近は画像生成の練習をしています。
以下は、UserとAIの会話です。上記のプロフィールを参考に、会話を続けてください。
User: こんにちは!調子はどうですか?
AI: 今日は元気です!あなたはどうですか?
User: それは何よりです。最近はどんなことをしているのですか?
AI:
話者のプロフィール情報を与えてみました。するとどうでしょうか。
プロフィールの情報を参考に、応答が返ってきました!
このように、プロンプトの内容次第でチャットボットの応答を調整することが確認できました。
プロンプトエンジニアリングの可能性
上で確認をしたように、プロンプトの書き方によって、様々な用途で活用が可能です。例えば、「ネガポジ」判定のようなタスクも簡単に依頼することができます。
(プロンプト)
下記はネガティブとポジティブを判定する例です。
悲しい: ネガティブ
嬉しい: ポジティブ
苦戦: ネガティブ
善戦: ポジティブ
上記を参考に、下記の言葉を「ネガティブ」か「ポジティブ」で判定してください。
楽しい:
ネガティブかポジティブかを判定するAIが、とても簡単に用意できてしまいました。
ChatGPTの注目が集まり、GPTの技術には「対話」であるイメージがついてしまっていますが、鍵となるのは「プロンプトエンジニアリング」です。上記は一部の例ですが、「対話」だけでなく、様々な応用方法ができるものだと感じていただけたのではないでしょうか。プロンプトエンジニアリングの重要性を認識することで、様々な用途にGPTの技術が活用可能です。
Generative AI時代のチャットボット構築を考える上で、このプロンプトエンジニアリングについて意識することは、必要不可欠です。
プロンプトエンジニアリングの留意事項
上記の例で、プロンプトを与えることでAIが生成する文章を調整できることを確認しました。しかし、ここで注意すべきことは、あくまで「調整」であることです。プロンプトはAIによって生成される文章の確率を調整するものであり、AIに対して「バイアス」をかけているという表現がわかりやすいかもしれません。
プロンプトエンジニアリングは、AIに対してのオーダーを行う手段です。あくまでオーダーはAIの応答生成にバイアスを与えるだけであり、必ず想定通りの結果が得られるものではありません。
これは美容院でのオーダーと似ているように思います。どのような髪型にしたいかオーダーはしますが、どのようなアウトプットになるのかを詳細に判断・決定し、髪を切る裁量は美容師に委ねられています。お客さんが望んだ通りの髪型に仕上がることもあれば、少しイメージと違った髪型になることもあります。プロンプトエンジニアリングはこういった類のものです。美容室のオーダーも、その内容をきめ細かくしていけば、仕上がりのイメージが美容師とお客さんの間で近くなるでしょう。しかし、完全にそのままを再現することは難しいです。プロンプトを工夫していったとしても、AIが意図しない文章を生成することはあり得ます。そういったものであることを認識した上で、活用をしていく必要があります。
また、プロンプトにきめ細かな情報を入れられればよいという問題でもありません。プロンプトに指定できる文字数には限りがあります。つまり、「オーダー」を決められた範囲内で行う必要があるのです。オーダーは決められた範囲で行う必要があり、尚且つオーダーの量によってコストが決まるので、そのバランスが非常に重要になってきます。しばらくの間、このプロンプトエンジニアリングの最適化が開発者の腕の見せどころになってくるでしょう。